[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/CGCall_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCall_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCall_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCall_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,2701 @@
+<!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: CGCall.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">CGCall.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGCall_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">//===--- CGCall.cpp - Encapsulate calling convention details --------------===//</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">// These classes wrap the information about a call or function</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">// definition used to handle ABI compliancy.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="CGCall_8h.html">CGCall.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="ABIInfo_8h.html">ABIInfo.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="CGCXXABI_8h.html">CGCXXABI.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="CodeGenFunction_8h.html">CodeGenFunction.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="CodeGenModule_8h.html">CodeGenModule.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="include_2clang_2Basic_2TargetInfo_8h.html" title="Defines the clang::TargetInfo interface.">TargetInfo.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="Decl_8h.html">clang/AST/Decl.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="DeclCXX_8h.html" title="Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate.h) and friends (in DeclFriend.h).">clang/AST/DeclCXX.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="DeclObjC_8h.html">clang/AST/DeclObjC.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="include_2clang_2Basic_2TargetInfo_8h.html" title="Defines the clang::TargetInfo interface.">clang/Basic/TargetInfo.h</a>"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "<a class="code" href="CGFunctionInfo_8h.html">clang/CodeGen/CGFunctionInfo.h</a>"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "<a class="code" href="CodeGenOptions_8h.html">clang/Frontend/CodeGenOptions.h</a>"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "llvm/ADT/StringExtras.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "llvm/IR/Attributes.h"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "llvm/IR/DataLayout.h"</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "llvm/IR/InlineAsm.h"</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "llvm/MC/SubtargetFeature.h"</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include "llvm/Support/CallSite.h"</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include "llvm/Transforms/Utils/Local.h"</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">using namespace </span>CodeGen;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">/***/</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#af0e68cd20f99a87c71c5ad88ce7b4d06">   39</a></span> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="CGCall_8cpp.html#af0e68cd20f99a87c71c5ad88ce7b4d06">ClangCallConvToLLVMCallConv</a>(<a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25b" title="CallingConv - Specifies the calling convention that a function uses.">CallingConv</a> CC) {</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keywordflow">switch</span> (CC) {</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordflow">default</span>: <span class="keywordflow">return</span> llvm::CallingConv::C;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25bab08f1a124e4aaef328ca1459f8b0d710">CC_X86StdCall</a>: <span class="keywordflow">return</span> llvm::CallingConv::X86_StdCall;</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25baeee847654c699507e58f40edaef0256a">CC_X86FastCall</a>: <span class="keywordflow">return</span> llvm::CallingConv::X86_FastCall;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25ba49ff8852eacaf74d36536e700613881f">CC_X86ThisCall</a>: <span class="keywordflow">return</span> llvm::CallingConv::X86_ThisCall;</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25ba78cc2d40f70d6a2eda9c848d6c28040f">CC_X86_64Win64</a>: <span class="keywordflow">return</span> llvm::CallingConv::X86_64_Win64;</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25bac0b883ae27291a0b85df3e629d1c14a4">CC_X86_64SysV</a>: <span class="keywordflow">return</span> llvm::CallingConv::X86_64_SysV;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25ba71c99c14409da8ef2e72ec69e4ed12fe">CC_AAPCS</a>: <span class="keywordflow">return</span> llvm::CallingConv::ARM_AAPCS;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25baf0614fbebb3b0d48dc9575b4f5e1caa2">CC_AAPCS_VFP</a>: <span class="keywordflow">return</span> llvm::CallingConv::ARM_AAPCS_VFP;</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25ba308ad5c13f13cc72ac772a63583eab64">CC_IntelOclBicc</a>: <span class="keywordflow">return</span> llvm::CallingConv::Intel_OCL_BI;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="comment">// TODO: add support for CC_X86Pascal to llvm</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   }</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> }</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment"></span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">/// Derives the 'this' type for codegen purposes, i.e. ignoring method</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">/// qualification.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">/// FIXME: address space qualification?</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a0d518d33998fef63fd6de3de2b4621c6">   57</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> <a class="code" href="CGCall_8cpp.html#a0d518d33998fef63fd6de3de2b4621c6">GetThisType</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD) {</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> RecTy = Context.<a class="code" href="classclang_1_1ASTContext.html#a92752b8dd75428a63b2e787642db884a" title="Return the unique reference to the type for the specified TagDecl (struct/union/class/enum) decl...">getTagDeclType</a>(RD)-><a class="code" href="classclang_1_1Type.html#a6bd50f807f10864ef809b41555e8d47c">getCanonicalTypeInternal</a>();</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="keywordflow">return</span> Context.<a class="code" href="classclang_1_1ASTContext.html#a3574cad49cba0fc48ab7b4c953e7e31e" title="Return the uniqued reference to the type for a pointer to the specified type.">getPointerType</a>(<a class="code" href="classclang_1_1CanQual.html#a6089be1545ecc87ca79a662b865969df" title="Builds a canonical type from a QualType.">CanQualType::CreateUnsafe</a>(RecTy));</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> }</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="comment"></span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="comment">/// Returns the canonical formal type of the given C++ method.</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#aa10e13d59701981b9b06b774abb5f2af">   63</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1CanQual.html">CanQual<FunctionProtoType></a> <a class="code" href="CGCall_8cpp.html#aa10e13d59701981b9b06b774abb5f2af" title="Returns the canonical formal type of the given C++ method.">GetFormalType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD) {</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keywordflow">return</span> MD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#a860cd5d3ea88f4ce5a1acbbc42a38719">getCanonicalTypeUnqualified</a>()</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>            .<a class="code" href="classclang_1_1CanQual.html#af1e38cebb6e854796382dafba624ade3" title="Retrieve a canonical type pointer with a different static type, upcasting or downcasting as needed...">getAs</a><<a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a>>();</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> }</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment"></span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">/// Returns the "extra-canonicalized" return type, which discards</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment">/// qualifiers on the return type.  Codegen doesn't care about them,</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="comment">/// and it makes ABI code a little easier to be able to assume that</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment">/// all parameter and return types are top-level unqualified.</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a193727c9fa36c7476b0716559eadf889">   72</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> <a class="code" href="CGCall_8cpp.html#a193727c9fa36c7476b0716559eadf889">GetReturnType</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> RetTy) {</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keywordflow">return</span> RetTy-><a class="code" href="classclang_1_1Type.html#a860cd5d3ea88f4ce5a1acbbc42a38719">getCanonicalTypeUnqualified</a>().<a class="code" href="classclang_1_1CanQual.html#af48a042eb252e80347f11899625ca0dc" title="Retrieve the unqualified form of this type.">getUnqualifiedType</a>();</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</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">/// Arrange the argument and result information for a value of the given</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">/// unprototyped freestanding function type.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ae00dde049b3fd58738036e24c6593911">   79</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a567b6f63658d328c7c26434ec5ab8d45">CodeGenTypes::arrangeFreeFunctionType</a>(<a class="code" href="classclang_1_1CanQual.html">CanQual<FunctionNoProtoType></a> FTNP) {</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <span class="comment">// When translating an unprototyped function type, always use a</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <span class="comment">// variadic type.</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">arrangeLLVMFunctionInfo</a>(FTNP->getResultType().<a class="code" href="classclang_1_1CanQual.html#af48a042eb252e80347f11899625ca0dc" title="Retrieve the unqualified form of this type.">getUnqualifiedType</a>(),</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>                                  None, FTNP->getExtInfo(), <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a>(0));</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> <span class="comment"></span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment">/// Arrange the LLVM function layout for a value of the given function</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="comment">/// type, on top of any implicit parameters already stored.  Use the</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment">/// given ExtInfo instead of the ExtInfo from the function type.</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#ad6332a7aa767ff7bfd5552d2824aabe1">   89</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="CGCall_8cpp.html#ad6332a7aa767ff7bfd5552d2824aabe1">arrangeLLVMFunctionInfo</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGenTypes</a> &CGT,</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>                                        <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<CanQualType></a> &prefix,</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>                                              <a class="code" href="classclang_1_1CanQual.html">CanQual<FunctionProtoType></a> FTP,</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>                                               <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> extInfo) {</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required = <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#a85298aad637d789fba9c5f6e4719ee4a">RequiredArgs::forPrototypePlus</a>(FTP, prefix.size());</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="comment">// FIXME: Kill copy.</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = FTP->getNumArgs(); i != e; ++i)</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     prefix.push_back(FTP->getArgType(i));</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> resultType = FTP->getResultType().<a class="code" href="classclang_1_1CanQual.html#af48a042eb252e80347f11899625ca0dc" title="Retrieve the unqualified form of this type.">getUnqualifiedType</a>();</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keywordflow">return</span> CGT.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">arrangeLLVMFunctionInfo</a>(resultType, prefix, extInfo, required);</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> }</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment"></span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">/// Arrange the argument and result information for a free function (i.e.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">/// not a C++ or ObjC instance method) of the given type.</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a28d04babd35d09592aed030f572bd525">  103</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="CGCall_8cpp.html#a28d04babd35d09592aed030f572bd525">arrangeFreeFunctionType</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGenTypes</a> &CGT,</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>                                       <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<CanQualType></a> &prefix,</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>                                             <a class="code" href="classclang_1_1CanQual.html">CanQual<FunctionProtoType></a> FTP) {</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keywordflow">return</span> <a class="code" href="CGCall_8cpp.html#ad6332a7aa767ff7bfd5552d2824aabe1">arrangeLLVMFunctionInfo</a>(CGT, prefix, FTP, FTP->getExtInfo());</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"></span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">/// Arrange the argument and result information for a free function (i.e.</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="comment">/// not a C++ or ObjC instance method) of the given type.</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a4e544f5b4f0d1758b38f2af2c4f4cefa">  111</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="CGCall_8cpp.html#a4e544f5b4f0d1758b38f2af2c4f4cefa">arrangeCXXMethodType</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGenTypes</a> &CGT,</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>                                       <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<CanQualType></a> &prefix,</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>                                             <a class="code" href="classclang_1_1CanQual.html">CanQual<FunctionProtoType></a> FTP) {</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> extInfo = FTP->getExtInfo();</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordflow">return</span> <a class="code" href="CGCall_8cpp.html#ad6332a7aa767ff7bfd5552d2824aabe1">arrangeLLVMFunctionInfo</a>(CGT, prefix, FTP, extInfo);</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> }</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment"></span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="comment">/// Arrange the argument and result information for a value of the</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment">/// given freestanding function type.</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a567b6f63658d328c7c26434ec5ab8d45">  121</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a567b6f63658d328c7c26434ec5ab8d45">CodeGenTypes::arrangeFreeFunctionType</a>(<a class="code" href="classclang_1_1CanQual.html">CanQual<FunctionProtoType></a> FTP) {</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CanQualType, 16></a> argTypes;</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <a class="code" href="CGCall_8cpp.html#a28d04babd35d09592aed030f572bd525">return ::arrangeFreeFunctionType</a>(*<span class="keyword">this</span>, argTypes, FTP);</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> }</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> </div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#abf9b9a9c20790afde117cff52d5dab97">  126</a></span> <span class="keyword">static</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25b" title="CallingConv - Specifies the calling convention that a function uses.">CallingConv</a> <a class="code" href="CGCall_8cpp.html#abf9b9a9c20790afde117cff52d5dab97">getCallingConventionForDecl</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D) {</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="comment">// Set the appropriate calling convention for the Function.</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1StdCallAttr.html">StdCallAttr</a>>())</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25bab08f1a124e4aaef328ca1459f8b0d710">CC_X86StdCall</a>;</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1FastCallAttr.html">FastCallAttr</a>>())</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25baeee847654c699507e58f40edaef0256a">CC_X86FastCall</a>;</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> </div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1ThisCallAttr.html">ThisCallAttr</a>>())</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25ba49ff8852eacaf74d36536e700613881f">CC_X86ThisCall</a>;</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1PascalAttr.html">PascalAttr</a>>())</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25ba085f5ddc5db3eaf20e859b71ffa8fb0f">CC_X86Pascal</a>;</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> </div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1PcsAttr.html">PcsAttr</a> *PCS = D-><a class="code" href="classclang_1_1Decl.html#a6a041df02fad17a6fabe51af5de0ea3c">getAttr</a><<a class="code" href="classclang_1_1PcsAttr.html">PcsAttr</a>>())</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     <span class="keywordflow">return</span> (PCS->getPCS() == <a class="code" href="classclang_1_1PcsAttr.html#accc05e27cc1050a11a87c6a6f6c7d19ead9d3cd47db18daa7a17d4d77e4b99539">PcsAttr::AAPCS</a> ? <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25ba71c99c14409da8ef2e72ec69e4ed12fe">CC_AAPCS</a> : <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25baf0614fbebb3b0d48dc9575b4f5e1caa2">CC_AAPCS_VFP</a>);</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> </div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1PnaclCallAttr.html">PnaclCallAttr</a>>())</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25bac43407a2649bfcaa4b22e9a9a26196b0">CC_PnaclCall</a>;</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="keywordflow">if</span> (D-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1IntelOclBiccAttr.html">IntelOclBiccAttr</a>>())</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25ba308ad5c13f13cc72ac772a63583eab64">CC_IntelOclBicc</a>;</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25ba7a504297547dacad7f909bc7da059378">CC_C</a>;</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> }</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="comment"></span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="comment">/// Arrange the argument and result information for a call to an</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> <span class="comment">/// unknown C++ non-static member function of the given abstract type.</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="comment">/// (Zero value of RD means we don't have any meaningful "this" argument type,</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="comment">///  so fall back to a generic pointer type).</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="comment">/// The member function must be an ordinary function, i.e. not a</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="comment">/// constructor or destructor.</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a632450159b2d644ada4a80586860b3db">  159</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a632450159b2d644ada4a80586860b3db">CodeGenTypes::arrangeCXXMethodType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD,</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FTP) {</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CanQualType, 16></a> argTypes;</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="comment">// Add the 'this' pointer.</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keywordflow">if</span> (RD)</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     argTypes.push_back(<a class="code" href="CGCall_8cpp.html#a0d518d33998fef63fd6de3de2b4621c6">GetThisType</a>(Context, RD));</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     argTypes.push_back(Context.<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>);</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>   <a class="code" href="CGCall_8cpp.html#a4e544f5b4f0d1758b38f2af2c4f4cefa">return ::arrangeCXXMethodType</a>(*<span class="keyword">this</span>, argTypes,</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>               FTP-><a class="code" href="classclang_1_1Type.html#a860cd5d3ea88f4ce5a1acbbc42a38719">getCanonicalTypeUnqualified</a>().<a class="code" href="classclang_1_1CanQual.html#af1e38cebb6e854796382dafba624ade3" title="Retrieve a canonical type pointer with a different static type, upcasting or downcasting as needed...">getAs</a><<a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a>>());</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> <span class="comment"></span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">/// Arrange the argument and result information for a declaration or</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">/// definition of the given C++ non-static member function.  The</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="comment">/// member function must be an ordinary function, i.e. not a</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment">/// constructor or destructor.</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00178"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a377fa72d0193d3c6fa389a8bdb35237c">  178</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a377fa72d0193d3c6fa389a8bdb35237c">CodeGenTypes::arrangeCXXMethodDeclaration</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD) {</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   assert(!isa<CXXConstructorDecl>(MD) && <span class="stringliteral">"wrong method for constructors!"</span>);</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   assert(!isa<CXXDestructorDecl>(MD) && <span class="stringliteral">"wrong method for destructors!"</span>);</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <a class="code" href="classclang_1_1CanQual.html">CanQual<FunctionProtoType></a> prototype = <a class="code" href="CGCall_8cpp.html#aa10e13d59701981b9b06b774abb5f2af" title="Returns the canonical formal type of the given C++ method.">GetFormalType</a>(MD);</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordflow">if</span> (MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a855a9f0b238457d3131b854bdeae7bce">isInstance</a>()) {</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     <span class="comment">// The abstract case is perfectly fine.</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ThisType = TheCXXABI.<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a49e02ac95d0df6fa08593c2b3b96bbb1">getThisArgumentTypeForMethod</a>(MD);</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a632450159b2d644ada4a80586860b3db">arrangeCXXMethodType</a>(ThisType, prototype.<a class="code" href="classclang_1_1CanQual.html#ade6897b3c823f8f586ee6f677d8ac15c" title="Retrieve the underlying type pointer, which refers to a canonical type.">getTypePtr</a>());</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   }</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a567b6f63658d328c7c26434ec5ab8d45">arrangeFreeFunctionType</a>(prototype);</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> <span class="comment"></span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="comment">/// Arrange the argument and result information for a declaration</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment">/// or definition to the given constructor variant.</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00196"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a95d432af179284f5cd1117fa13621acb">  196</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a95d432af179284f5cd1117fa13621acb">CodeGenTypes::arrangeCXXConstructorDeclaration</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *D,</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>                                                <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> ctorKind) {</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CanQualType, 16></a> argTypes;</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   argTypes.push_back(<a class="code" href="CGCall_8cpp.html#a0d518d33998fef63fd6de3de2b4621c6">GetThisType</a>(Context, D-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()));</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> </div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD(D, ctorKind);</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> resultType =</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     TheCXXABI.<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a505d11af3019280e61e716e6849a27e4">HasThisReturn</a>(GD) ? argTypes.front() : Context.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>;</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   TheCXXABI.<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a7f3ecfb957e9bae0a2b91191adafd6a4">BuildConstructorSignature</a>(D, ctorKind, resultType, argTypes);</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>   <a class="code" href="classclang_1_1CanQual.html">CanQual<FunctionProtoType></a> FTP = <a class="code" href="CGCall_8cpp.html#aa10e13d59701981b9b06b774abb5f2af" title="Returns the canonical formal type of the given C++ method.">GetFormalType</a>(D);</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>   <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required = <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#a85298aad637d789fba9c5f6e4719ee4a">RequiredArgs::forPrototypePlus</a>(FTP, argTypes.size());</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>   <span class="comment">// Add the formal parameters.</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = FTP->getNumArgs(); i != e; ++i)</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     argTypes.push_back(FTP->getArgType(i));</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> extInfo = FTP->getExtInfo();</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">arrangeLLVMFunctionInfo</a>(resultType, argTypes, extInfo, required);</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> <span class="comment"></span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">/// Arrange the argument and result information for a declaration,</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">/// definition, or call to the given destructor variant.  It so</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment">/// happens that all three cases produce the same information.</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00223"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a50b6ae880f9bcf0b6b8c13cba50860d7">  223</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a50b6ae880f9bcf0b6b8c13cba50860d7">CodeGenTypes::arrangeCXXDestructor</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *D,</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>                                    <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157" title="C++ destructor types.">CXXDtorType</a> dtorKind) {</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CanQualType, 2></a> argTypes;</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   argTypes.push_back(<a class="code" href="CGCall_8cpp.html#a0d518d33998fef63fd6de3de2b4621c6">GetThisType</a>(Context, D-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()));</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>   <a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD(D, dtorKind);</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> resultType =</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     TheCXXABI.<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a505d11af3019280e61e716e6849a27e4">HasThisReturn</a>(GD) ? argTypes.front() : Context.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>;</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   TheCXXABI.<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#aa2a05fe6b8567a948c40274e61b8dfce">BuildDestructorSignature</a>(D, dtorKind, resultType, argTypes);</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>   <a class="code" href="classclang_1_1CanQual.html">CanQual<FunctionProtoType></a> FTP = <a class="code" href="CGCall_8cpp.html#aa10e13d59701981b9b06b774abb5f2af" title="Returns the canonical formal type of the given C++ method.">GetFormalType</a>(D);</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   assert(FTP->getNumArgs() == 0 && <span class="stringliteral">"dtor with formal parameters"</span>);</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   assert(FTP->isVariadic() == 0 && <span class="stringliteral">"dtor with formal parameters"</span>);</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> extInfo = FTP->getExtInfo();</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">arrangeLLVMFunctionInfo</a>(resultType, argTypes, extInfo,</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>                                  <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>);</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> }</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> <span class="comment"></span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="comment">/// Arrange the argument and result information for the declaration or</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> <span class="comment">/// definition of the given function.</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00246"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad7efb9a499023cd3c642a5d7da8a5050">  246</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad7efb9a499023cd3c642a5d7da8a5050">CodeGenTypes::arrangeFunctionDeclaration</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD) {</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = dyn_cast<CXXMethodDecl>(FD))</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     <span class="keywordflow">if</span> (MD->isInstance())</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a377fa72d0193d3c6fa389a8bdb35237c">arrangeCXXMethodDeclaration</a>(MD);</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>   <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> FTy = FD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#a860cd5d3ea88f4ce5a1acbbc42a38719">getCanonicalTypeUnqualified</a>();</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>   assert(isa<FunctionType>(FTy));</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   <span class="comment">// When declaring a function without a prototype, always use a</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <span class="comment">// non-variadic type.</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="keywordflow">if</span> (isa<FunctionNoProtoType>(FTy)) {</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     <a class="code" href="classclang_1_1CanQual.html">CanQual<FunctionNoProtoType></a> noProto = FTy.<a class="code" href="classclang_1_1CanQual.html#af1e38cebb6e854796382dafba624ade3" title="Retrieve a canonical type pointer with a different static type, upcasting or downcasting as needed...">getAs</a><<a class="code" href="classclang_1_1FunctionNoProtoType.html">FunctionNoProtoType</a>>();</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">arrangeLLVMFunctionInfo</a>(noProto->getResultType(), None,</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>                                    noProto->getExtInfo(), <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>);</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   }</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> </div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   assert(isa<FunctionProtoType>(FTy));</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a567b6f63658d328c7c26434ec5ab8d45">arrangeFreeFunctionType</a>(FTy.<a class="code" href="classclang_1_1CanQual.html#af1e38cebb6e854796382dafba624ade3" title="Retrieve a canonical type pointer with a different static type, upcasting or downcasting as needed...">getAs</a><<a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a>>());</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="comment"></span></div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> <span class="comment">/// Arrange the argument and result information for the declaration or</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> <span class="comment">/// definition of an Objective-C method.</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00270"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#aa0a3712dac69644328d7d9ca209c18ac">  270</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#aa0a3712dac69644328d7d9ca209c18ac">CodeGenTypes::arrangeObjCMethodDeclaration</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MD) {</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   <span class="comment">// It happens that this is the same as a call with no optional</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="comment">// arguments, except also using the formal 'self' type.</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af46a93b855143dbf86a428e50205d105">arrangeObjCMessageSendSignature</a>(MD, MD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aca5d21d1409956e5d6ba77b0ce4beb0d">getSelfDecl</a>()-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> }</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> <span class="comment"></span></div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> <span class="comment">/// Arrange the argument and result information for the function type</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> <span class="comment">/// through which to perform a send to the given Objective-C method,</span></div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> <span class="comment">/// using the given receiver type.  The receiver type is not always</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> <span class="comment">/// the 'self' type of the method or even an Objective-C pointer type.</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> <span class="comment">/// This is *not* the right method for actually performing such a</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> <span class="comment">/// message send, due to the possibility of optional arguments.</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00283"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af46a93b855143dbf86a428e50205d105">  283</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af46a93b855143dbf86a428e50205d105">CodeGenTypes::arrangeObjCMessageSendSignature</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MD,</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>                                               <a class="code" href="classclang_1_1QualType.html">QualType</a> receiverType) {</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CanQualType, 16></a> argTys;</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   argTys.push_back(Context.<a class="code" href="classclang_1_1ASTContext.html#aebe1c0862e34693bddd4683b51558e35" title="Return the canonical parameter type corresponding to the specific potentially non-canonical one...">getCanonicalParamType</a>(receiverType));</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   argTys.push_back(Context.<a class="code" href="classclang_1_1ASTContext.html#aebe1c0862e34693bddd4683b51558e35" title="Return the canonical parameter type corresponding to the specific potentially non-canonical one...">getCanonicalParamType</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#ab98cf62cc837911c586ce978e32d3b2f" title="Retrieve the type that corresponds to the predefined Objective-C 'SEL' type.">getObjCSelType</a>()));</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <span class="comment">// FIXME: Kill copy?</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html#a841541ca3ef9960a3474a637e3c8829d">ObjCMethodDecl::param_const_iterator</a> i = MD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(),</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>          e = MD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>(); i != e; ++i) {</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     argTys.push_back(Context.<a class="code" href="classclang_1_1ASTContext.html#aebe1c0862e34693bddd4683b51558e35" title="Return the canonical parameter type corresponding to the specific potentially non-canonical one...">getCanonicalParamType</a>((*i)->getType()));</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>   <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> einfo;</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   einfo = einfo.<a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html#a5762eb39dea9398e10f1c4a40b05dc4c">withCallingConv</a>(<a class="code" href="CGCall_8cpp.html#abf9b9a9c20790afde117cff52d5dab97">getCallingConventionForDecl</a>(MD));</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> </div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a39fa73c411423d91a296ff183a85a612">getContext</a>().getLangOpts().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>       MD-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsRetainedAttr.html">NSReturnsRetainedAttr</a>>())</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     einfo = einfo.<a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html#a378545bc52395d972277c473ab1c2999">withProducesResult</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> </div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required =</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     (MD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#af47b19dc4279f1cf2572ca1a0a8d730e">isVariadic</a>() ? <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a>(argTys.size()) : <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>);</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>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">arrangeLLVMFunctionInfo</a>(<a class="code" href="CGCall_8cpp.html#a193727c9fa36c7476b0716559eadf889">GetReturnType</a>(MD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()), argTys,</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>                                  einfo, required);</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> }</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00309"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ab8d78176cc0855b9620a98f32b0379c5">  309</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ab8d78176cc0855b9620a98f32b0379c5">CodeGenTypes::arrangeGlobalDeclaration</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD) {</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="comment">// FIXME: Do we need to handle ObjCMethodDecl?</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD = cast<FunctionDecl>(GD.<a class="code" href="classclang_1_1GlobalDecl.html#a3971ce53aef50b4c3d829615a5ecd0a0">getDecl</a>());</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> </div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *CD = dyn_cast<CXXConstructorDecl>(FD))</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a95d432af179284f5cd1117fa13621acb">arrangeCXXConstructorDeclaration</a>(CD, GD.<a class="code" href="classclang_1_1GlobalDecl.html#a510cae7dd5d57ea1a0d8d89754fe6036">getCtorType</a>());</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>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *DD = dyn_cast<CXXDestructorDecl>(FD))</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a50b6ae880f9bcf0b6b8c13cba50860d7">arrangeCXXDestructor</a>(DD, GD.<a class="code" href="classclang_1_1GlobalDecl.html#acf7986531ee9edab4d776465d455c82f">getDtorType</a>());</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> </div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad7efb9a499023cd3c642a5d7da8a5050">arrangeFunctionDeclaration</a>(FD);</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> }</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span> <span class="comment"></span></div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> <span class="comment">/// Arrange a call as unto a free function, except possibly with an</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> <span class="comment">/// additional number of formal parameters considered required.</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span> <span class="comment"></span><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00325"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a0606edf6f9ec3f018df30cd249d1fd6c">  325</a></span> <a class="code" href="CGCall_8cpp.html#a0606edf6f9ec3f018df30cd249d1fd6c">arrangeFreeFunctionLikeCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGenTypes</a> &CGT,</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>                             <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>                             <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &args,</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>                             <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType.html">FunctionType</a> *fnType,</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>                             <span class="keywordtype">unsigned</span> numExtraRequiredArgs) {</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   assert(args.size() >= numExtraRequiredArgs);</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>   <span class="comment">// In most cases, there are no optional arguments.</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required = <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>;</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> </div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   <span class="comment">// If we have a variadic prototype, the required arguments are the</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="comment">// extra prefix plus the arguments in the prototype.</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *proto = dyn_cast<FunctionProtoType>(fnType)) {</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     <span class="keywordflow">if</span> (proto->isVariadic())</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>       required = <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a>(proto->getNumArgs() + numExtraRequiredArgs);</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> </div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>   <span class="comment">// If we don't have a prototype at all, but we're supposed to</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   <span class="comment">// explicitly use the variadic convention for unprototyped calls,</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <span class="comment">// treat all of the arguments as required but preserve the nominal</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <span class="comment">// possibility of variadics.</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#ac098ad9054632d2c6c4bf4c243cb04b1">getTargetCodeGenInfo</a>()</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>                 .<a class="code" href="classclang_1_1TargetCodeGenInfo.html#ad92d8c17a4192c74322cb4fe9824c243">isNoProtoCallVariadic</a>(args,</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>                                        cast<FunctionNoProtoType>(fnType))) {</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     required = <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a>(args.size());</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> </div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   <span class="keywordflow">return</span> CGT.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">arrangeFreeFunctionCall</a>(fnType-><a class="code" href="classclang_1_1FunctionType.html#aafa453cd7e81a7c3d6c61f261e68afe8">getResultType</a>(), args,</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>                                      fnType-><a class="code" href="classclang_1_1FunctionType.html#a443ec10bc39b4f81172f845109697735">getExtInfo</a>(), required);</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> <span class="comment"></span></div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> <span class="comment">/// Figure out the rules for calling a function with the given formal</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span> <span class="comment">/// type using the given arguments.  The arguments are necessary</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> <span class="comment">/// because the function might be unprototyped, in which case it's</span></div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> <span class="comment">/// target-dependent in crazy ways.</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00360"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">  360</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">CodeGenTypes::arrangeFreeFunctionCall</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &args,</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>                                       <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType.html">FunctionType</a> *fnType) {</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>   <span class="keywordflow">return</span> <a class="code" href="CGCall_8cpp.html#a0606edf6f9ec3f018df30cd249d1fd6c">arrangeFreeFunctionLikeCall</a>(*<span class="keyword">this</span>, CGM, args, fnType, 0);</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"></span></div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span> <span class="comment">/// A block function call is essentially a free-function call with an</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> <span class="comment">/// extra implicit argument.</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00368"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a67981599f34fc2387104bb8dde94889b">  368</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a67981599f34fc2387104bb8dde94889b">CodeGenTypes::arrangeBlockFunctionCall</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &args,</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>                                        <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType.html">FunctionType</a> *fnType) {</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   <span class="keywordflow">return</span> <a class="code" href="CGCall_8cpp.html#a0606edf6f9ec3f018df30cd249d1fd6c">arrangeFreeFunctionLikeCall</a>(*<span class="keyword">this</span>, CGM, args, fnType, 1);</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="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00374"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a19ce0fedc216b9c58f8b9900071c044f">  374</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">CodeGenTypes::arrangeFreeFunctionCall</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> resultType,</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>                                       <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &args,</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> info,</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>                                       <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required) {</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   <span class="comment">// FIXME: Kill copy.</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CanQualType, 16></a> argTypes;</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   <span class="keywordflow">for</span> (CallArgList::const_iterator i = args.begin(), e = args.end();</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>        i != e; ++i)</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     argTypes.push_back(Context.<a class="code" href="classclang_1_1ASTContext.html#aebe1c0862e34693bddd4683b51558e35" title="Return the canonical parameter type corresponding to the specific potentially non-canonical one...">getCanonicalParamType</a>(i->Ty));</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">arrangeLLVMFunctionInfo</a>(<a class="code" href="CGCall_8cpp.html#a193727c9fa36c7476b0716559eadf889">GetReturnType</a>(resultType), argTypes, info,</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>                                  required);</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> <span class="comment"></span></div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> <span class="comment">/// Arrange a call to a C++ method, passing the given arguments.</span></div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00389"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ae4184432046c5c971e0256b32ef7deac">  389</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ae4184432046c5c971e0256b32ef7deac" title="Arrange a call to a C++ method, passing the given arguments.">CodeGenTypes::arrangeCXXMethodCall</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &args,</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT,</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>                                    <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required) {</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   <span class="comment">// FIXME: Kill copy.</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CanQualType, 16></a> argTypes;</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   <span class="keywordflow">for</span> (CallArgList::const_iterator i = args.begin(), e = args.end();</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>        i != e; ++i)</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     argTypes.push_back(Context.<a class="code" href="classclang_1_1ASTContext.html#aebe1c0862e34693bddd4683b51558e35" title="Return the canonical parameter type corresponding to the specific potentially non-canonical one...">getCanonicalParamType</a>(i->Ty));</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>   <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> info = FPT-><a class="code" href="classclang_1_1FunctionType.html#a443ec10bc39b4f81172f845109697735">getExtInfo</a>();</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">arrangeLLVMFunctionInfo</a>(<a class="code" href="CGCall_8cpp.html#a193727c9fa36c7476b0716559eadf889">GetReturnType</a>(FPT-><a class="code" href="classclang_1_1FunctionType.html#aafa453cd7e81a7c3d6c61f261e68afe8">getResultType</a>()),</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>                                  argTypes, info, required);</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> </div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00404"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#acb0f6076bef8af8b770e6722f5d84bc6">  404</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad7efb9a499023cd3c642a5d7da8a5050">CodeGenTypes::arrangeFunctionDeclaration</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> resultType,</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &args,</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> &info,</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>                                          <span class="keywordtype">bool</span> isVariadic) {</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   <span class="comment">// FIXME: Kill copy.</span></div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CanQualType, 16></a> argTypes;</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   <span class="keywordflow">for</span> (FunctionArgList::const_iterator i = args.begin(), e = args.end();</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>        i != e; ++i)</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     argTypes.push_back(Context.<a class="code" href="classclang_1_1ASTContext.html#aebe1c0862e34693bddd4683b51558e35" title="Return the canonical parameter type corresponding to the specific potentially non-canonical one...">getCanonicalParamType</a>((*i)->getType()));</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>   <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required =</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     (isVariadic ? <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a>(args.size()) : <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>);</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">arrangeLLVMFunctionInfo</a>(<a class="code" href="CGCall_8cpp.html#a193727c9fa36c7476b0716559eadf889">GetReturnType</a>(resultType), argTypes, info,</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>                                  required);</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> }</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
+<div class="line"><a name="l00420"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#afd84f2333757f99d56c12f73e6f56490">  420</a></span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#afd84f2333757f99d56c12f73e6f56490">CodeGenTypes::arrangeNullaryFunction</a>() {</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">arrangeLLVMFunctionInfo</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a39fa73c411423d91a296ff183a85a612">getContext</a>().VoidTy, None,</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>                                  <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a>(), <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</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"></span></div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span> <span class="comment">/// Arrange the argument and result information for an abstract value</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span> <span class="comment">/// of a given function type.  This is the method which all of the</span></div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> <span class="comment">/// above functions ultimately defer to.</span></div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &</div>
+<div class="line"><a name="l00429"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">  429</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">CodeGenTypes::arrangeLLVMFunctionInfo</a>(<a class="code" href="classclang_1_1CanQual.html">CanQualType</a> resultType,</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>                                       <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<CanQualType></a> argTypes,</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>                                       <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> info,</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>                                       <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required) {</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> <span class="preprocessor">#ifndef NDEBUG</span></div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span> <span class="preprocessor"></span>  <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<CanQualType>::const_iterator</a></div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>          I = argTypes.begin(), E = argTypes.end(); I != E; ++I)</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     assert(I->isCanonicalAsParam());</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   <span class="keywordtype">unsigned</span> CC = <a class="code" href="CGCall_8cpp.html#af0e68cd20f99a87c71c5ad88ce7b4d06">ClangCallConvToLLVMCallConv</a>(info.<a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html#a8f7f2256b071196f5331f6d9bafc6da5">getCC</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="comment">// Lookup or create unique function info.</span></div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   llvm::FoldingSetNodeID <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="l00443"></a><span class="lineno">  443</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a164d0ea30e676f07a31db981e62cfa15">CGFunctionInfo::Profile</a>(ID, info, required, resultType, argTypes);</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">void</span> *insertPos = 0;</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> *FI = FunctionInfos.FindNodeOrInsertPos(ID, insertPos);</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   <span class="keywordflow">if</span> (FI)</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>     <span class="keywordflow">return</span> *FI;</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="comment">// Construct the function info.  We co-allocate the ArgInfos.</span></div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>   FI = <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a23f15ae38b9a690ee5c10ad017e7469a">CGFunctionInfo::create</a>(CC, info, resultType, argTypes, required);</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>   FunctionInfos.InsertNode(FI, insertPos);</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span> </div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>   <span class="keywordtype">bool</span> inserted = FunctionsBeingProcessed.insert(FI); (void)inserted;</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>   assert(inserted && <span class="stringliteral">"Recursively being processed?"</span>);</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>   </div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>   <span class="comment">// Compute ABI information.</span></div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a6590a13901a37293b67eb2d3a0a6836f">getABIInfo</a>().<a class="code" href="classclang_1_1ABIInfo.html#a1a678fd0e4f1b7bf7b37a39474c9a854">computeInfo</a>(*FI);</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>   <span class="comment">// Loop over all of the computed argument and return value info.  If any of</span></div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>   <span class="comment">// them are direct or extend without a specified coerce type, specify the</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>   <span class="comment">// default now.</span></div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>   <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html">ABIArgInfo</a> &retInfo = FI-><a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ac0f497df111824e55810d0e389f8b7ae">getReturnInfo</a>();</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>   <span class="keywordflow">if</span> (retInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a3381ddce39cfaf8df91d24ce5a3cce99">canHaveCoerceToType</a>() && retInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>() == 0)</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     retInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a40353e5ea95eebb4180462aeb37a2e99">setCoerceToType</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(FI-><a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a30c5ff80d845c6b4a36f1628651f8fed">getReturnType</a>()));</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span> </div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ae1ae8a58c038c9690fe32df983f1acaf">CGFunctionInfo::arg_iterator</a> I = FI-><a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ae79a956b6ca82977dc154183144c62fe">arg_begin</a>(), E = FI-><a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a4ce45804dd8a2cc770721893936858ea">arg_end</a>();</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>        I != E; ++I)</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <span class="keywordflow">if</span> (I->info.canHaveCoerceToType() && I->info.getCoerceToType() == 0)</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>       I->info.setCoerceToType(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(I->type));</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>   <span class="keywordtype">bool</span> erased = FunctionsBeingProcessed.erase(FI); (void)erased;</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>   assert(erased && <span class="stringliteral">"Not in set?"</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>   <span class="keywordflow">return</span> *FI;</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> </div>
+<div class="line"><a name="l00478"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a23f15ae38b9a690ee5c10ad017e7469a">  478</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> *<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a23f15ae38b9a690ee5c10ad017e7469a">CGFunctionInfo::create</a>(<span class="keywordtype">unsigned</span> llvmCC,</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>                                        <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> &info,</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>                                        <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> resultType,</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>                                        <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<CanQualType></a> argTypes,</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>                                        <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required) {</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>   <span class="keywordtype">void</span> *buffer = <span class="keyword">operator</span> <span class="keyword">new</span>(<span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a>) +</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>                               <span class="keyword">sizeof</span>(ArgInfo) * (argTypes.size() + 1));</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> *FI = <span class="keyword">new</span>(buffer) <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a>();</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>   FI->CallingConvention = llvmCC;</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   FI->EffectiveCallingConvention = llvmCC;</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>   FI->ASTCallingConvention = info.<a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html#a8f7f2256b071196f5331f6d9bafc6da5">getCC</a>();</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>   FI->NoReturn = info.<a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html#a212508a618b9ce68b39437096cc6228e">getNoReturn</a>();</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>   FI->ReturnsRetained = info.<a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html#aac7543221c2c3f753ea7335703f5f032">getProducesResult</a>();</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>   FI->Required = required;</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>   FI->HasRegParm = info.<a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html#ab8e31adfbf03ca530e706f735059850a">getHasRegParm</a>();</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>   FI->RegParm = info.<a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html#a5ab8d0903420849b03fde081d36c4b24">getRegParm</a>();</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>   FI->NumArgs = argTypes.size();</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>   FI->getArgsBuffer()[0].type = resultType;</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = argTypes.size(); i != e; ++i)</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>     FI->getArgsBuffer()[i + 1].type = argTypes[i];</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>   <span class="keywordflow">return</span> FI;</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span> }</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span> </div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span> <span class="comment">/***/</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span> </div>
+<div class="line"><a name="l00503"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a930db80d2ce386e4d39183c834eec177">  503</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a930db80d2ce386e4d39183c834eec177">CodeGenTypes::GetExpandedTypes</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="l00504"></a><span class="lineno">  504</span>                      <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<llvm::Type*></a> &expandedTypes) {</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *AT = Context.<a class="code" href="classclang_1_1ASTContext.html#a881d1a09f9d299e910aaa0b6c40a7780">getAsConstantArrayType</a>(type)) {</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     uint64_t NumElts = AT->getSize().getZExtValue();</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     <span class="keywordflow">for</span> (uint64_t Elt = 0; Elt < NumElts; ++Elt)</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a930db80d2ce386e4d39183c834eec177">GetExpandedTypes</a>(AT->getElementType(), expandedTypes);</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = type-><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="l00510"></a><span class="lineno">  510</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = RT->getDecl();</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>     assert(!RD-><a class="code" href="classclang_1_1RecordDecl.html#aaacf26482f17281507bd198e82ee7a7e">hasFlexibleArrayMember</a>() &&</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>            <span class="stringliteral">"Cannot expand structure with flexible array."</span>);</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>     <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>()) {</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>       <span class="comment">// Unions can be here only in degenerative cases - all the fields are same</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>       <span class="comment">// after flattening. Thus we have to use the "largest" field.</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *LargestFD = 0;</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> UnionSize = <a class="code" href="classclang_1_1CharUnits.html#ae8fbc6063b513b85cd488904994ac8c2" title="Zero - Construct a CharUnits quantity of zero.">CharUnits::Zero</a>();</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> </div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> i = RD-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(), e = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>            i != e; ++i) {</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *FD = *i;</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>         assert(!FD-><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="l00523"></a><span class="lineno">  523</span>                <span class="stringliteral">"Cannot expand structure with bit-field members."</span>);</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>         <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> FieldSize = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a39fa73c411423d91a296ff183a85a612">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>(FD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>         <span class="keywordflow">if</span> (UnionSize < FieldSize) {</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>           UnionSize = FieldSize;</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>           LargestFD = FD;</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>         }</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>       }</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>       <span class="keywordflow">if</span> (LargestFD)</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a930db80d2ce386e4d39183c834eec177">GetExpandedTypes</a>(LargestFD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(), expandedTypes);</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> i = RD-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(), e = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>            i != e; ++i) {</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>         assert(!i->isBitField() &&</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>                <span class="stringliteral">"Cannot expand structure with bit-field members."</span>);</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a930db80d2ce386e4d39183c834eec177">GetExpandedTypes</a>(i->getType(), expandedTypes);</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>       }</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>     }</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ComplexType.html">ComplexType</a> *CT = type-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ComplexType.html">ComplexType</a>>()) {</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>     llvm::Type *EltTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(CT->getElementType());</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>     expandedTypes.push_back(EltTy);</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     expandedTypes.push_back(EltTy);</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>   } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>     expandedTypes.push_back(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(type));</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span> }</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span> </div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span> llvm::Function::arg_iterator</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span> CodeGenFunction::ExpandTypeFromArgs(<a class="code" href="classclang_1_1QualType.html">QualType</a> Ty, <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV,</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>                                     llvm::Function::arg_iterator AI) {</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>   assert(LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8e2a971f64f67d31f84bc136c53c72c0">isSimple</a>() &&</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>          <span class="stringliteral">"Unexpected non-simple lvalue during struct expansion."</span>);</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span> </div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *AT = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a881d1a09f9d299e910aaa0b6c40a7780">getAsConstantArrayType</a>(Ty)) {</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>     <span class="keywordtype">unsigned</span> NumElts = AT->getSize().getZExtValue();</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> EltTy = AT->getElementType();</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> Elt = 0; Elt < NumElts; ++Elt) {</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EltAddr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP2_32(LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), 0, Elt);</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(EltAddr, EltTy);</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>       AI = ExpandTypeFromArgs(EltTy, LV, AI);</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>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = Ty-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()) {</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>     <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = RT->getDecl();</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>     <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>()) {</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>       <span class="comment">// Unions can be here only in degenerative cases - all the fields are same</span></div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>       <span class="comment">// after flattening. Thus we have to use the "largest" field.</span></div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *LargestFD = 0;</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> UnionSize = <a class="code" href="classclang_1_1CharUnits.html#ae8fbc6063b513b85cd488904994ac8c2" title="Zero - Construct a CharUnits quantity of zero.">CharUnits::Zero</a>();</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span> </div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> i = RD-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(), e = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>            i != e; ++i) {</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *FD = *i;</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>         assert(!FD-><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="l00574"></a><span class="lineno">  574</span>                <span class="stringliteral">"Cannot expand structure with bit-field members."</span>);</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>         <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> FieldSize = <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>(FD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>         <span class="keywordflow">if</span> (UnionSize < FieldSize) {</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>           UnionSize = FieldSize;</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>           LargestFD = FD;</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>       }</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>       <span class="keywordflow">if</span> (LargestFD) {</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>         <span class="comment">// FIXME: What are the right qualifiers here?</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>         <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> SubLV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0fe5273873e8ce1fab483cd99ed84000">EmitLValueForField</a>(LV, LargestFD);</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>         AI = ExpandTypeFromArgs(LargestFD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(), SubLV, AI);</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>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> i = RD-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(), e = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>            i != e; ++i) {</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>         <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *FD = *i;</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>         <a class="code" href="classclang_1_1QualType.html">QualType</a> FT = FD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</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>         <span class="comment">// FIXME: What are the right qualifiers here?</span></div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>         <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> SubLV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0fe5273873e8ce1fab483cd99ed84000">EmitLValueForField</a>(LV, FD);</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>         AI = ExpandTypeFromArgs(FT, SubLV, AI);</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>     }</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ComplexType.html">ComplexType</a> *CT = Ty-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ComplexType.html">ComplexType</a>>()) {</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> EltTy = CT->getElementType();</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RealAddr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStructGEP(LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), 0, <span class="stringliteral">"real"</span>);</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</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>(AI++), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(RealAddr, EltTy));</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ImagAddr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStructGEP(LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), 1, <span class="stringliteral">"imag"</span>);</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</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>(AI++), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(ImagAddr, EltTy));</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aab00f3161bf4956de6c490615544a734">EmitStoreThroughLValue</a>(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(AI), LV);</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>     ++AI;</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> </div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>   <span class="keywordflow">return</span> AI;</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span> }</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span> <span class="comment"></span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span> <span class="comment">/// EnterStructPointerForCoercedAccess - Given a struct pointer that we are</span></div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span> <span class="comment">/// accessing some number of bytes out of it, try to gep into the struct to get</span></div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span> <span class="comment">/// at its inner goodness.  Dive as deep as possible without entering an element</span></div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span> <span class="comment">/// with an in-memory size smaller than DstSize.</span></div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l00616"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#aa374ddf0a02045626b9db0ad0660e064">  616</a></span> <a class="code" href="CGCall_8cpp.html#aa374ddf0a02045626b9db0ad0660e064">EnterStructPointerForCoercedAccess</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SrcPtr,</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>                                    llvm::StructType *SrcSTy,</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>                                    uint64_t DstSize, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>   <span class="comment">// We can't dive into a zero-element struct.</span></div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>   <span class="keywordflow">if</span> (SrcSTy->getNumElements() == 0) <span class="keywordflow">return</span> SrcPtr;</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>   llvm::Type *FirstElt = SrcSTy->getElementType(0);</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span> </div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>   <span class="comment">// If the first elt is at least as large as what we're looking for, or if the</span></div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>   <span class="comment">// first element is the same size as the whole struct, we can enter it.</span></div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>   uint64_t FirstEltSize =</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</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#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getTypeAllocSize(FirstElt);</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>   <span class="keywordflow">if</span> (FirstEltSize < DstSize &&</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>       FirstEltSize < CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getTypeAllocSize(SrcSTy))</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>     <span class="keywordflow">return</span> SrcPtr;</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span> </div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>   <span class="comment">// GEP into the first element.</span></div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>   SrcPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP2_32(SrcPtr, 0, 0, <span class="stringliteral">"coerce.dive"</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">// If the first element is a struct, recurse.</span></div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>   llvm::Type *SrcTy =</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>     cast<llvm::PointerType>(SrcPtr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>   <span class="keywordflow">if</span> (llvm::StructType *SrcSTy = dyn_cast<llvm::StructType>(SrcTy))</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>     <span class="keywordflow">return</span> <a class="code" href="CGCall_8cpp.html#aa374ddf0a02045626b9db0ad0660e064">EnterStructPointerForCoercedAccess</a>(SrcPtr, SrcSTy, DstSize, CGF);</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="keywordflow">return</span> SrcPtr;</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span> }</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span> <span class="comment"></span></div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span> <span class="comment">/// CoerceIntOrPtrToIntOrPtr - Convert a value Val to the specific Ty where both</span></div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span> <span class="comment">/// are either integers or pointers.  This does a truncation of the value if it</span></div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span> <span class="comment">/// is too large or a zero extension if it is too small.</span></div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span> <span class="comment">/// This behaves as if the value were coerced through memory, so on big-endian</span></div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span> <span class="comment">/// targets the high bits are preserved in a truncation, while little-endian</span></div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span> <span class="comment">/// targets preserve the low bits.</span></div>
+<div class="line"><a name="l00651"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#af99b80b53284744bf3c04b51115dbfee">  651</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="CGCall_8cpp.html#af99b80b53284744bf3c04b51115dbfee">CoerceIntOrPtrToIntOrPtr</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Val,</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>                                              llvm::Type *Ty,</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>                                              <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   <span class="keywordflow">if</span> (Val->getType() == Ty)</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     <span class="keywordflow">return</span> Val;</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span> </div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   <span class="keywordflow">if</span> (isa<llvm::PointerType>(Val->getType())) {</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     <span class="comment">// If this is Pointer->Pointer avoid conversion to and from int.</span></div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>     <span class="keywordflow">if</span> (isa<llvm::PointerType>(Ty))</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>       <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Val, Ty, <span class="stringliteral">"coerce.val"</span>);</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span> </div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>     <span class="comment">// Convert the pointer to an integer so we can play with its width.</span></div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>     Val = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreatePtrToInt(Val, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a9cce048bcd175a468127b4eb05c050d2">IntPtrTy</a>, <span class="stringliteral">"coerce.val.pi"</span>);</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>   }</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span> </div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>   llvm::Type *DestIntTy = Ty;</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>   <span class="keywordflow">if</span> (isa<llvm::PointerType>(DestIntTy))</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>     DestIntTy = CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a9cce048bcd175a468127b4eb05c050d2">IntPtrTy</a>;</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span> </div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   <span class="keywordflow">if</span> (Val->getType() != DestIntTy) {</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     <span class="keyword">const</span> llvm::DataLayout &DL = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>();</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>     <span class="keywordflow">if</span> (DL.isBigEndian()) {</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>       <span class="comment">// Preserve the high bits on big-endian targets.</span></div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>       <span class="comment">// That is what memory coercion does.</span></div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>       uint64_t SrcSize = DL.getTypeAllocSizeInBits(Val->getType());</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>       uint64_t DstSize = DL.getTypeAllocSizeInBits(DestIntTy);</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>       <span class="keywordflow">if</span> (SrcSize > DstSize) {</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>         Val = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLShr(Val, SrcSize - DstSize, <span class="stringliteral">"coerce.highbits"</span>);</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>         Val = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateTrunc(Val, DestIntTy, <span class="stringliteral">"coerce.val.ii"</span>);</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>         Val = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateZExt(Val, DestIntTy, <span class="stringliteral">"coerce.val.ii"</span>);</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>         Val = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateShl(Val, DstSize - SrcSize, <span class="stringliteral">"coerce.highbits"</span>);</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>       }</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>       <span class="comment">// Little-endian targets preserve the low bits. No shifts required.</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>       Val = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateIntCast(Val, DestIntTy, <span class="keyword">false</span>, <span class="stringliteral">"coerce.val.ii"</span>);</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>     }</div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>   }</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span> </div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>   <span class="keywordflow">if</span> (isa<llvm::PointerType>(Ty))</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>     Val = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateIntToPtr(Val, Ty, <span class="stringliteral">"coerce.val.ip"</span>);</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>   <span class="keywordflow">return</span> Val;</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> </div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span> </div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span> <span class="comment"></span></div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span> <span class="comment">/// CreateCoercedLoad - Create a load from \arg SrcPtr interpreted as</span></div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span> <span class="comment">/// a pointer to an object of type \arg Ty.</span></div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span> <span class="comment">/// This safely handles the case when the src type is smaller than the</span></div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span> <span class="comment">/// destination type; in this situation the values of bits which not</span></div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span> <span class="comment">/// present in the src are undefined.</span></div>
+<div class="line"><a name="l00703"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#aead940bcd5c3067308135fdc10a1f3df">  703</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="CGCall_8cpp.html#aead940bcd5c3067308135fdc10a1f3df">CreateCoercedLoad</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SrcPtr,</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>                                       llvm::Type *Ty,</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>                                       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>   llvm::Type *SrcTy =</div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     cast<llvm::PointerType>(SrcPtr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span> </div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>   <span class="comment">// If SrcTy and Ty are the same, just do a load.</span></div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>   <span class="keywordflow">if</span> (SrcTy == Ty)</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>     <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(SrcPtr);</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span> </div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   uint64_t DstSize = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getTypeAllocSize(Ty);</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span> </div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>   <span class="keywordflow">if</span> (llvm::StructType *SrcSTy = dyn_cast<llvm::StructType>(SrcTy)) {</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>     SrcPtr = <a class="code" href="CGCall_8cpp.html#aa374ddf0a02045626b9db0ad0660e064">EnterStructPointerForCoercedAccess</a>(SrcPtr, SrcSTy, DstSize, CGF);</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     SrcTy = cast<llvm::PointerType>(SrcPtr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>   }</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span> </div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>   uint64_t SrcSize = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getTypeAllocSize(SrcTy);</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span> </div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>   <span class="comment">// If the source and destination are integer or pointer types, just do an</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>   <span class="comment">// extension or truncation to the desired type.</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>   <span class="keywordflow">if</span> ((isa<llvm::IntegerType>(Ty) || isa<llvm::PointerType>(Ty)) &&</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>       (isa<llvm::IntegerType>(SrcTy) || isa<llvm::PointerType>(SrcTy))) {</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>     llvm::LoadInst *Load = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(SrcPtr);</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>     <span class="keywordflow">return</span> <a class="code" href="CGCall_8cpp.html#af99b80b53284744bf3c04b51115dbfee">CoerceIntOrPtrToIntOrPtr</a>(Load, Ty, CGF);</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>   }</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span> </div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>   <span class="comment">// If load is legal, just bitcast the src pointer.</span></div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>   <span class="keywordflow">if</span> (SrcSize >= DstSize) {</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>     <span class="comment">// Generally SrcSize is never greater than DstSize, since this means we are</span></div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     <span class="comment">// losing bits. However, this can happen in cases where the structure has</span></div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     <span class="comment">// additional padding, for example due to a user specified alignment.</span></div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>     <span class="comment">// FIXME: Assert that we aren't truncating non-padding bits when have access</span></div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>     <span class="comment">// to that information.</span></div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Casted =</div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(SrcPtr, llvm::PointerType::getUnqual(Ty));</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>     llvm::LoadInst *Load = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(Casted);</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>     <span class="comment">// FIXME: Use better alignment / avoid requiring aligned load.</span></div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     Load->setAlignment(1);</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>     <span class="keywordflow">return</span> Load;</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>   }</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span> </div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>   <span class="comment">// Otherwise do coercion through memory. This is stupid, but</span></div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>   <span class="comment">// simple.</span></div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Tmp = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(Ty);</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>   llvm::Type *I8PtrTy = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt8PtrTy();</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Casted = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Tmp, I8PtrTy);</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SrcCasted = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(SrcPtr, I8PtrTy);</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>   <span class="comment">// FIXME: Use better alignment.</span></div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemCpy(Casted, SrcCasted,</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>       llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a9cce048bcd175a468127b4eb05c050d2">IntPtrTy</a>, SrcSize),</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>       1, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(Tmp);</div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span> }</div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span> </div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span> <span class="comment">// Function to store a first-class aggregate into memory.  We prefer to</span></div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span> <span class="comment">// store the elements rather than the aggregate to be more friendly to</span></div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span> <span class="comment">// fast-isel.</span></div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span> <span class="comment">// FIXME: Do we need to recurse here?</span></div>
+<div class="line"><a name="l00763"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a9d1441ccc35689e73b7eed9529a4faab">  763</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGCall_8cpp.html#a9d1441ccc35689e73b7eed9529a4faab">BuildAggStore</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Val,</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>                           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DestPtr, <span class="keywordtype">bool</span> DestIsVolatile,</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>                           <span class="keywordtype">bool</span> LowAlignment) {</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>   <span class="comment">// Prefer scalar stores to first-class aggregate stores.</span></div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>   <span class="keywordflow">if</span> (llvm::StructType *STy =</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>         dyn_cast<llvm::StructType>(Val->getType())) {</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = STy->getNumElements(); i != e; ++i) {</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EltPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP2_32(DestPtr, 0, i);</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Elt = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateExtractValue(Val, i);</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>       llvm::StoreInst *SI = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(Elt, EltPtr,</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>                                                     DestIsVolatile);</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>       <span class="keywordflow">if</span> (LowAlignment)</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>         SI->setAlignment(1);</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>     }</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>     llvm::StoreInst *SI = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(Val, DestPtr, DestIsVolatile);</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>     <span class="keywordflow">if</span> (LowAlignment)</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>       SI->setAlignment(1);</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>   }</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span> }</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span> <span class="comment"></span></div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span> <span class="comment">/// CreateCoercedStore - Create a store to \arg DstPtr from \arg Src,</span></div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span> <span class="comment">/// where the source and destination may have different types.</span></div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span> <span class="comment">/// This safely handles the case when the src type is larger than the</span></div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span> <span class="comment">/// destination type; the upper bits of the src will be lost.</span></div>
+<div class="line"><a name="l00789"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a1e1bec8e68d7f4df598891783c488e60">  789</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGCall_8cpp.html#a1e1bec8e68d7f4df598891783c488e60">CreateCoercedStore</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Src,</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>                                <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DstPtr,</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>                                <span class="keywordtype">bool</span> DstIsVolatile,</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>                                <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>   llvm::Type *SrcTy = Src->getType();</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>   llvm::Type *DstTy =</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     cast<llvm::PointerType>(DstPtr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>   <span class="keywordflow">if</span> (SrcTy == DstTy) {</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(Src, DstPtr, DstIsVolatile);</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>     <span class="keywordflow">return</span>;</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> </div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>   uint64_t SrcSize = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getTypeAllocSize(SrcTy);</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>   <span class="keywordflow">if</span> (llvm::StructType *DstSTy = dyn_cast<llvm::StructType>(DstTy)) {</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>     DstPtr = <a class="code" href="CGCall_8cpp.html#aa374ddf0a02045626b9db0ad0660e064">EnterStructPointerForCoercedAccess</a>(DstPtr, DstSTy, SrcSize, CGF);</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>     DstTy = cast<llvm::PointerType>(DstPtr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>   }</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span> </div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>   <span class="comment">// If the source and destination are integer or pointer types, just do an</span></div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>   <span class="comment">// extension or truncation to the desired type.</span></div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>   <span class="keywordflow">if</span> ((isa<llvm::IntegerType>(SrcTy) || isa<llvm::PointerType>(SrcTy)) &&</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>       (isa<llvm::IntegerType>(DstTy) || isa<llvm::PointerType>(DstTy))) {</div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>     Src = <a class="code" href="CGCall_8cpp.html#af99b80b53284744bf3c04b51115dbfee">CoerceIntOrPtrToIntOrPtr</a>(Src, DstTy, CGF);</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(Src, DstPtr, DstIsVolatile);</div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>   }</div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span> </div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>   uint64_t DstSize = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getTypeAllocSize(DstTy);</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span> </div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>   <span class="comment">// If store is legal, just bitcast the src pointer.</span></div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>   <span class="keywordflow">if</span> (SrcSize <= DstSize) {</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Casted =</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(DstPtr, llvm::PointerType::getUnqual(SrcTy));</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>     <span class="comment">// FIXME: Use better alignment / avoid requiring aligned store.</span></div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>     <a class="code" href="CGCall_8cpp.html#a9d1441ccc35689e73b7eed9529a4faab">BuildAggStore</a>(CGF, Src, Casted, DstIsVolatile, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>     <span class="comment">// Otherwise do coercion through memory. This is stupid, but</span></div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>     <span class="comment">// simple.</span></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="comment">// Generally SrcSize is never greater than DstSize, since this means we are</span></div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>     <span class="comment">// losing bits. However, this can happen in cases where the structure has</span></div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>     <span class="comment">// additional padding, for example due to a user specified alignment.</span></div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>     <span class="comment">// FIXME: Assert that we aren't truncating non-padding bits when have access</span></div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>     <span class="comment">// to that information.</span></div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Tmp = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(SrcTy);</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(Src, Tmp);</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>     llvm::Type *I8PtrTy = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt8PtrTy();</div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Casted = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Tmp, I8PtrTy);</div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DstCasted = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(DstPtr, I8PtrTy);</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>     <span class="comment">// FIXME: Use better alignment.</span></div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemCpy(DstCasted, Casted,</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>         llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a9cce048bcd175a468127b4eb05c050d2">IntPtrTy</a>, DstSize),</div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>         1, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>   }</div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span> }</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span> </div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span> <span class="comment">/***/</span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span> </div>
+<div class="line"><a name="l00849"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abff43a999a921f0ca833d064865e43a6">  849</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abff43a999a921f0ca833d064865e43a6">CodeGenModule::ReturnTypeUsesSRet</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="l00850"></a><span class="lineno">  850</span>   <span class="keywordflow">return</span> FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ac0f497df111824e55810d0e389f8b7ae">getReturnInfo</a>().<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a2d620e0ba2b572fc06844a23d9a9f74e">isIndirect</a>();</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span> }</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span> </div>
+<div class="line"><a name="l00853"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a2ca1facdc5090d8b048a3ba4d5acc1bb">  853</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a2ca1facdc5090d8b048a3ba4d5acc1bb">CodeGenModule::ReturnTypeUsesFPRet</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> ResultType) {</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BuiltinType.html">BuiltinType</a> *BT = ResultType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1BuiltinType.html">BuiltinType</a>>()) {</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>     <span class="keywordflow">switch</span> (BT->getKind()) {</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>     <span class="keywordflow">case</span> BuiltinType::Float:</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0256b70c5f3ad3812e767f745196fa3f">getTarget</a>().<a class="code" href="classclang_1_1TargetInfo.html#a1835eca6110ac8ff8bc277621532c185" title="Check whether the given real type should use the "fpret" flavor of Objective-C message passing on thi...">useObjCFPRetForRealType</a>(<a class="code" href="classclang_1_1TargetInfo.html#a735acde0ebc95edf1e600d7a4346bbc0a8a5553b6c56b773350b7b26a765b6eae">TargetInfo::Float</a>);</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>     <span class="keywordflow">case</span> BuiltinType::Double:</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0256b70c5f3ad3812e767f745196fa3f">getTarget</a>().<a class="code" href="classclang_1_1TargetInfo.html#a1835eca6110ac8ff8bc277621532c185" title="Check whether the given real type should use the "fpret" flavor of Objective-C message passing on thi...">useObjCFPRetForRealType</a>(<a class="code" href="classclang_1_1TargetInfo.html#a735acde0ebc95edf1e600d7a4346bbc0aac40b8a8ccebd5acb6c715cb5f11d83a">TargetInfo::Double</a>);</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>     <span class="keywordflow">case</span> BuiltinType::LongDouble:</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0256b70c5f3ad3812e767f745196fa3f">getTarget</a>().<a class="code" href="classclang_1_1TargetInfo.html#a1835eca6110ac8ff8bc277621532c185" title="Check whether the given real type should use the "fpret" flavor of Objective-C message passing on thi...">useObjCFPRetForRealType</a>(<a class="code" href="classclang_1_1TargetInfo.html#a735acde0ebc95edf1e600d7a4346bbc0ab3ced831fe4cfd9dda8304acfb9530c1">TargetInfo::LongDouble</a>);</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>     }</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>   }</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span> </div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span> }</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span> </div>
+<div class="line"><a name="l00870"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a82a771561b033db2802558a3383f4214">  870</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a82a771561b033db2802558a3383f4214">CodeGenModule::ReturnTypeUsesFP2Ret</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> ResultType) {</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ComplexType.html">ComplexType</a> *CT = ResultType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ComplexType.html">ComplexType</a>>()) {</div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BuiltinType.html">BuiltinType</a> *BT = CT->getElementType()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1BuiltinType.html">BuiltinType</a>>()) {</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>       <span class="keywordflow">if</span> (BT->getKind() == BuiltinType::LongDouble)</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>         <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0256b70c5f3ad3812e767f745196fa3f">getTarget</a>().<a class="code" href="classclang_1_1TargetInfo.html#aa129cca494643d4ed1bc816ed60eecca" title="Check whether _Complex long double should use the "fp2ret" flavor of Objective-C message passing on t...">useObjCFP2RetForComplexLongDouble</a>();</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>     }</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>   }</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span> </div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>   <span class="keywordflow">return</span> <span class="keyword">false</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> </div>
+<div class="line"><a name="l00881"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a414db79788f1da8e3f5d94664a03526b">  881</a></span> llvm::FunctionType *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">CodeGenTypes::GetFunctionType</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD) {</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</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_1CodeGenTypes.html#ab8d78176cc0855b9620a98f32b0379c5">arrangeGlobalDeclaration</a>(GD);</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>   <span class="keywordflow">return</span> <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="l00884"></a><span class="lineno">  884</span> }</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span> </div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span> llvm::FunctionType *</div>
+<div class="line"><a name="l00887"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8">  887</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">CodeGenTypes::GetFunctionType</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="l00888"></a><span class="lineno">  888</span>   </div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>   <span class="keywordtype">bool</span> Inserted = FunctionsBeingProcessed.insert(&FI); (void)Inserted;</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>   assert(Inserted && <span class="stringliteral">"Recursively being processed?"</span>);</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>   </div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Type*, 8></a> argTypes;</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>   llvm::Type *resultType = 0;</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span> </div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html">ABIArgInfo</a> &retAI = FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ac0f497df111824e55810d0e389f8b7ae">getReturnInfo</a>();</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>   <span class="keywordflow">switch</span> (retAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a5a95c44143588f81827dc8aeda02d3d0">getKind</a>()) {</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca9afd96bf046f2e86cd8f89e924c4ec6c">ABIArgInfo::Expand</a>:</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>     llvm_unreachable(<span class="stringliteral">"Invalid ABI kind for return argument"</span>);</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span> </div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca149a9e29cad3ccc4597b88d5cf507d94">ABIArgInfo::Extend</a>:</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cafd121945c5d2ff7deee51a3616c13fe3">ABIArgInfo::Direct</a>:</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>     resultType = retAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>();</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span> </div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cadae4ef4ee3f65e068672fa51f8aaca15">ABIArgInfo::Indirect</a>: {</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>     assert(!retAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#afa125e330e08f23880af60bcf59cd4b3">getIndirectAlign</a>() && <span class="stringliteral">"Align unused on indirect return."</span>);</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>     resultType = llvm::Type::getVoidTy(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</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>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ret = FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a30c5ff80d845c6b4a36f1628651f8fed">getReturnType</a>();</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>     llvm::Type *ty = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(ret);</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>     <span class="keywordtype">unsigned</span> addressSpace = Context.<a class="code" href="classclang_1_1ASTContext.html#aed2e4aedb5a9fafd8bd586349f1b9f6f">getTargetAddressSpace</a>(ret);</div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>     argTypes.push_back(llvm::PointerType::get(ty, addressSpace));</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</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>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca163f4f084f0a9d023f08f225e8f86623">ABIArgInfo::Ignore</a>:</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>     resultType = llvm::Type::getVoidTy(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>   }</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span> </div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>   <span class="comment">// Add in all of the required arguments.</span></div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</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>(), ie;</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>   <span class="keywordflow">if</span> (FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#af0986db3de02a0f943e4b698166afb4e">isVariadic</a>()) {</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>     ie = it + FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ad58678b0735829d8af5871209ca49ddf">getRequiredArgs</a>().<a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#abef7cb7b414a1e59cfa5a57aff24832a">getNumRequiredArgs</a>();</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>     ie = FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a4ce45804dd8a2cc770721893936858ea">arg_end</a>();</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>   }</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>   <span class="keywordflow">for</span> (; it != ie; ++it) {</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html">ABIArgInfo</a> &argAI = it->info;</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span> </div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>     <span class="comment">// Insert a padding type to ensure proper alignment.</span></div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>     <span class="keywordflow">if</span> (llvm::Type *PaddingType = argAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#aea38a545d30c2c9b7c587bb3cb44e549">getPaddingType</a>())</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>       argTypes.push_back(PaddingType);</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">switch</span> (argAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a5a95c44143588f81827dc8aeda02d3d0">getKind</a>()) {</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca163f4f084f0a9d023f08f225e8f86623">ABIArgInfo::Ignore</a>:</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span> </div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cadae4ef4ee3f65e068672fa51f8aaca15">ABIArgInfo::Indirect</a>: {</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>       <span class="comment">// indirect arguments are always on the stack, which is addr space #0.</span></div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>       llvm::Type *LTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(it->type);</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>       argTypes.push_back(LTy->getPointerTo());</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>     }</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span> </div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca149a9e29cad3ccc4597b88d5cf507d94">ABIArgInfo::Extend</a>:</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cafd121945c5d2ff7deee51a3616c13fe3">ABIArgInfo::Direct</a>: {</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>       <span class="comment">// If the coerce-to type is a first class aggregate, flatten it.  Either</span></div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>       <span class="comment">// way is semantically identical, but fast-isel and the optimizer</span></div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>       <span class="comment">// generally likes scalar values better than FCAs.</span></div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>       llvm::Type *argType = argAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>();</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>       <span class="keywordflow">if</span> (llvm::StructType *st = dyn_cast<llvm::StructType>(argType)) {</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = st->getNumElements(); i != e; ++i)</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>           argTypes.push_back(st->getElementType(i));</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>         argTypes.push_back(argType);</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>       }</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>     }</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span> </div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca9afd96bf046f2e86cd8f89e924c4ec6c">ABIArgInfo::Expand</a>:</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a930db80d2ce386e4d39183c834eec177">GetExpandedTypes</a>(it->type, argTypes);</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>       <span class="keywordflow">break</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> </div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>   <span class="keywordtype">bool</span> Erased = FunctionsBeingProcessed.erase(&FI); (void)Erased;</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>   assert(Erased && <span class="stringliteral">"Not in set?"</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>   <span class="keywordflow">return</span> llvm::FunctionType::get(resultType, argTypes, FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#af0986db3de02a0f943e4b698166afb4e">isVariadic</a>());</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span> }</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span> </div>
+<div class="line"><a name="l00973"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#adf3d6dee03712ff8e0c12848df1cacbf">  973</a></span> llvm::Type *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#adf3d6dee03712ff8e0c12848df1cacbf">CodeGenTypes::GetFunctionTypeForVTable</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD) {</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = cast<CXXMethodDecl>(GD.<a class="code" href="classclang_1_1GlobalDecl.html#a3971ce53aef50b4c3d829615a5ecd0a0">getDecl</a>());</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT = MD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a>>();</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span> </div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a61b9bc55253d2cfa6660b0c8627acffb">isFuncTypeConvertible</a>(FPT))</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>     <span class="keywordflow">return</span> llvm::StructType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>     </div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> *Info;</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>   <span class="keywordflow">if</span> (isa<CXXDestructorDecl>(MD))</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>     Info = &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a50b6ae880f9bcf0b6b8c13cba50860d7">arrangeCXXDestructor</a>(cast<CXXDestructorDecl>(MD), GD.<a class="code" href="classclang_1_1GlobalDecl.html#acf7986531ee9edab4d776465d455c82f">getDtorType</a>());</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>     Info = &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a377fa72d0193d3c6fa389a8bdb35237c">arrangeCXXMethodDeclaration</a>(MD);</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">GetFunctionType</a>(*Info);</div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span> }</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span> </div>
+<div class="line"><a name="l00988"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0b7d538c3e2716ec3a91c8cb74334e63">  988</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0b7d538c3e2716ec3a91c8cb74334e63">CodeGenModule::ConstructAttributeList</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="l00989"></a><span class="lineno">  989</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *TargetDecl,</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>                                            <a class="code" href="classllvm_1_1SmallVector.html">AttributeListType</a> &PAL,</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>                                            <span class="keywordtype">unsigned</span> &<a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25b" title="CallingConv - Specifies the calling convention that a function uses.">CallingConv</a>,</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>                                            <span class="keywordtype">bool</span> AttrOnCallSite) {</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>   llvm::AttrBuilder FuncAttrs;</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>   llvm::AttrBuilder RetAttrs;</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>   CallingConv = FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a1a3e02e6b9d0efea48fd1fba8d59c8f0">getEffectiveCallingConvention</a>();</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span> </div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>   <span class="keywordflow">if</span> (FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#adc197ceaa0e1009c8c05077e2eee0d1e">isNoReturn</a>())</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>     FuncAttrs.addAttribute(llvm::Attribute::NoReturn);</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">// FIXME: handle sseregparm someday...</span></div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>   <span class="keywordflow">if</span> (TargetDecl) {</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>     <span class="keywordflow">if</span> (TargetDecl-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1ReturnsTwiceAttr.html">ReturnsTwiceAttr</a>>())</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>       FuncAttrs.addAttribute(llvm::Attribute::ReturnsTwice);</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>     <span class="keywordflow">if</span> (TargetDecl-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NoThrowAttr.html">NoThrowAttr</a>>())</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>       FuncAttrs.addAttribute(llvm::Attribute::NoUnwind);</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>     <span class="keywordflow">if</span> (TargetDecl-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NoReturnAttr.html">NoReturnAttr</a>>())</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>       FuncAttrs.addAttribute(llvm::Attribute::NoReturn);</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> </div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *Fn = dyn_cast<FunctionDecl>(TargetDecl)) {</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT = Fn->getType()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a>>();</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>       <span class="keywordflow">if</span> (FPT && FPT-><a class="code" href="classclang_1_1FunctionProtoType.html#a30284f5fb89857d1a8db2d6b06e8f477">isNothrow</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>()))</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>         FuncAttrs.addAttribute(llvm::Attribute::NoUnwind);</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>       <span class="comment">// Don't use [[noreturn]] or _Noreturn for a call to a virtual function.</span></div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>       <span class="comment">// These attributes are not inherited by overloads.</span></div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = dyn_cast<<a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a>>(Fn);</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>       <span class="keywordflow">if</span> (Fn->isNoReturn() && !(AttrOnCallSite && MD && MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#abcaff495a9ded37cbe66b06973308b62">isVirtual</a>()))</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>         FuncAttrs.addAttribute(llvm::Attribute::NoReturn);</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>     }</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> </div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>     <span class="comment">// 'const' and 'pure' attribute functions are also nounwind.</span></div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>     <span class="keywordflow">if</span> (TargetDecl-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1ConstAttr.html">ConstAttr</a>>()) {</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>       FuncAttrs.addAttribute(llvm::Attribute::ReadNone);</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>       FuncAttrs.addAttribute(llvm::Attribute::NoUnwind);</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (TargetDecl-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1PureAttr.html">PureAttr</a>>()) {</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>       FuncAttrs.addAttribute(llvm::Attribute::ReadOnly);</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>       FuncAttrs.addAttribute(llvm::Attribute::NoUnwind);</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>     }</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>     <span class="keywordflow">if</span> (TargetDecl-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1MallocAttr.html">MallocAttr</a>>())</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>       RetAttrs.addAttribute(llvm::Attribute::NoAlias);</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>   }</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> </div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>   <span class="keywordflow">if</span> (CodeGenOpts.OptimizeSize)</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>     FuncAttrs.addAttribute(llvm::Attribute::OptimizeForSize);</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>   <span class="keywordflow">if</span> (CodeGenOpts.OptimizeSize == 2)</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>     FuncAttrs.addAttribute(llvm::Attribute::MinSize);</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>   <span class="keywordflow">if</span> (CodeGenOpts.DisableRedZone)</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>     FuncAttrs.addAttribute(llvm::Attribute::NoRedZone);</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>   <span class="keywordflow">if</span> (CodeGenOpts.NoImplicitFloat)</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>     FuncAttrs.addAttribute(llvm::Attribute::NoImplicitFloat);</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> </div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>   <span class="keywordflow">if</span> (AttrOnCallSite) {</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>     <span class="comment">// Attributes that should go on the call site only.</span></div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     <span class="keywordflow">if</span> (!CodeGenOpts.SimplifyLibCalls)</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>       FuncAttrs.addAttribute(llvm::Attribute::NoBuiltin);</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>     <span class="comment">// Attributes that should go on the function, but not the call site.</span></div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>     <span class="keywordflow">if</span> (!CodeGenOpts.DisableFPElim) {</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>       FuncAttrs.addAttribute(<span class="stringliteral">"no-frame-pointer-elim"</span>, <span class="stringliteral">"false"</span>);</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (CodeGenOpts.OmitLeafFramePointer) {</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>       FuncAttrs.addAttribute(<span class="stringliteral">"no-frame-pointer-elim"</span>, <span class="stringliteral">"false"</span>);</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>       FuncAttrs.addAttribute(<span class="stringliteral">"no-frame-pointer-elim-non-leaf"</span>);</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>       FuncAttrs.addAttribute(<span class="stringliteral">"no-frame-pointer-elim"</span>, <span class="stringliteral">"true"</span>);</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>       FuncAttrs.addAttribute(<span class="stringliteral">"no-frame-pointer-elim-non-leaf"</span>);</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>     }</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> </div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>     FuncAttrs.addAttribute(<span class="stringliteral">"less-precise-fpmad"</span>,</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>                            llvm::toStringRef(CodeGenOpts.LessPreciseFPMAD));</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>     FuncAttrs.addAttribute(<span class="stringliteral">"no-infs-fp-math"</span>,</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>                            llvm::toStringRef(CodeGenOpts.NoInfsFPMath));</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>     FuncAttrs.addAttribute(<span class="stringliteral">"no-nans-fp-math"</span>,</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>                            llvm::toStringRef(CodeGenOpts.NoNaNsFPMath));</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>     FuncAttrs.addAttribute(<span class="stringliteral">"unsafe-fp-math"</span>,</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>                            llvm::toStringRef(CodeGenOpts.UnsafeFPMath));</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>     FuncAttrs.addAttribute(<span class="stringliteral">"use-soft-float"</span>,</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>                            llvm::toStringRef(CodeGenOpts.SoftFloat));</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>     FuncAttrs.addAttribute(<span class="stringliteral">"stack-protector-buffer-size"</span>,</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>                            llvm::utostr(CodeGenOpts.SSPBufferSize));</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> </div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>     <span class="keywordflow">if</span> (!CodeGenOpts.StackRealignment)</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>       FuncAttrs.addAttribute(<span class="stringliteral">"no-realign-stack"</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>   <a class="code" href="classclang_1_1QualType.html">QualType</a> RetTy = FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a30c5ff80d845c6b4a36f1628651f8fed">getReturnType</a>();</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>   <span class="keywordtype">unsigned</span> Index = 1;</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html">ABIArgInfo</a> &RetAI = FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ac0f497df111824e55810d0e389f8b7ae">getReturnInfo</a>();</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>   <span class="keywordflow">switch</span> (RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a5a95c44143588f81827dc8aeda02d3d0">getKind</a>()) {</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca149a9e29cad3ccc4597b88d5cf507d94">ABIArgInfo::Extend</a>:</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>     <span class="keywordflow">if</span> (RetTy-><a class="code" href="classclang_1_1Type.html#a63c57da9e0790bd606480927192498be" title="Determine whether this type has an signed integer representation of some sort, e.g., it is an signed integer type or a vector.">hasSignedIntegerRepresentation</a>())</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>       RetAttrs.addAttribute(llvm::Attribute::SExt);</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (RetTy-><a class="code" href="classclang_1_1Type.html#aea871ab4d998b3e9e1a3e4ba82fbbfb6" title="Determine whether this type has an unsigned integer representation of some sort, e.g., it is an unsigned integer type or a vector.">hasUnsignedIntegerRepresentation</a>())</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>       RetAttrs.addAttribute(llvm::Attribute::ZExt);</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>     <span class="comment">// FALL THROUGH</span></div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cafd121945c5d2ff7deee51a3616c13fe3">ABIArgInfo::Direct</a>:</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>     <span class="keywordflow">if</span> (RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a78c85d7fe5363c9c00e51bf9fcd9e6eb">getInReg</a>())</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>       RetAttrs.addAttribute(llvm::Attribute::InReg);</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca163f4f084f0a9d023f08f225e8f86623">ABIArgInfo::Ignore</a>:</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> </div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cadae4ef4ee3f65e068672fa51f8aaca15">ABIArgInfo::Indirect</a>: {</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>     llvm::AttrBuilder SRETAttrs;</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>     SRETAttrs.addAttribute(llvm::Attribute::StructRet);</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>     <span class="keywordflow">if</span> (RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a78c85d7fe5363c9c00e51bf9fcd9e6eb">getInReg</a>())</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>       SRETAttrs.addAttribute(llvm::Attribute::InReg);</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>     PAL.push_back(llvm::</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>                   AttributeSet::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6c8cff399ad98c730cce0907b1acd44e">getLLVMContext</a>(), Index, SRETAttrs));</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>     ++Index;</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>     <span class="comment">// sret disables readnone and readonly</span></div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>     FuncAttrs.removeAttribute(llvm::Attribute::ReadOnly)</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>       .removeAttribute(llvm::Attribute::ReadNone);</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>     <span class="keywordflow">break</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> </div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca9afd96bf046f2e86cd8f89e924c4ec6c">ABIArgInfo::Expand</a>:</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>     llvm_unreachable(<span class="stringliteral">"Invalid ABI kind for return argument"</span>);</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>   }</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> </div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>   <span class="keywordflow">if</span> (RetAttrs.hasAttributes())</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>     PAL.push_back(llvm::</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>                   AttributeSet::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6c8cff399ad98c730cce0907b1acd44e">getLLVMContext</a>(),</div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>                                     llvm::AttributeSet::ReturnIndex,</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>                                     RetAttrs));</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> </div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>   <span class="keywordflow">for</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="l01118"></a><span class="lineno"> 1118</span>          ie = FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a4ce45804dd8a2cc770721893936858ea">arg_end</a>(); it != ie; ++it) {</div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ParamType = it->type;</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</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="l01121"></a><span class="lineno"> 1121</span>     llvm::AttrBuilder Attrs;</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> </div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>     <span class="keywordflow">if</span> (AI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#aea38a545d30c2c9b7c587bb3cb44e549">getPaddingType</a>()) {</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>       <span class="keywordflow">if</span> (AI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a0778268610a806a41e52c5ed289dbf29">getPaddingInReg</a>())</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>         PAL.push_back(llvm::AttributeSet::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6c8cff399ad98c730cce0907b1acd44e">getLLVMContext</a>(), Index,</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>                                               llvm::Attribute::InReg));</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>       <span class="comment">// Increment Index if there is padding.</span></div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>       ++Index;</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> </div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>     <span class="comment">// 'restrict' -> 'noalias' is done in EmitFunctionProlog when we</span></div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>     <span class="comment">// have the corresponding parameter variable.  It doesn't make</span></div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>     <span class="comment">// sense to do it here because parameters are so messed up.</span></div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>     <span class="keywordflow">switch</span> (AI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a5a95c44143588f81827dc8aeda02d3d0">getKind</a>()) {</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca149a9e29cad3ccc4597b88d5cf507d94">ABIArgInfo::Extend</a>:</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>       <span class="keywordflow">if</span> (ParamType-><a class="code" href="classclang_1_1Type.html#ac1a93888d84731955cd5e95d6510aea6">isSignedIntegerOrEnumerationType</a>())</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>         Attrs.addAttribute(llvm::Attribute::SExt);</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ParamType-><a class="code" href="classclang_1_1Type.html#acd6b7cb40b90681ffc9728b2615e56af">isUnsignedIntegerOrEnumerationType</a>())</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>         Attrs.addAttribute(llvm::Attribute::ZExt);</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>       <span class="comment">// FALL THROUGH</span></div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cafd121945c5d2ff7deee51a3616c13fe3">ABIArgInfo::Direct</a>:</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>       <span class="keywordflow">if</span> (AI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a78c85d7fe5363c9c00e51bf9fcd9e6eb">getInReg</a>())</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>         Attrs.addAttribute(llvm::Attribute::InReg);</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> </div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>       <span class="comment">// FIXME: handle sseregparm someday...</span></div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> </div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>       <span class="keywordflow">if</span> (llvm::StructType *STy =</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>           dyn_cast<llvm::StructType>(AI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>())) {</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>         <span class="keywordtype">unsigned</span> Extra = STy->getNumElements()-1;  <span class="comment">// 1 will be added below.</span></div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>         <span class="keywordflow">if</span> (Attrs.hasAttributes())</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0; I < Extra; ++I)</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>             PAL.push_back(llvm::AttributeSet::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6c8cff399ad98c730cce0907b1acd44e">getLLVMContext</a>(), Index + I,</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>                                                   Attrs));</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>         Index += Extra;</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">break</span>;</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span> </div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cadae4ef4ee3f65e068672fa51f8aaca15">ABIArgInfo::Indirect</a>:</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>       <span class="keywordflow">if</span> (AI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a78c85d7fe5363c9c00e51bf9fcd9e6eb">getInReg</a>())</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>         Attrs.addAttribute(llvm::Attribute::InReg);</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>       <span class="keywordflow">if</span> (AI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a055a848f632cf31cdb41410ab9b3704c">getIndirectByVal</a>())</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>         Attrs.addAttribute(llvm::Attribute::ByVal);</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> </div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>       Attrs.addAlignmentAttr(AI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#afa125e330e08f23880af60bcf59cd4b3">getIndirectAlign</a>());</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> </div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>       <span class="comment">// byval disables readnone and readonly.</span></div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>       FuncAttrs.removeAttribute(llvm::Attribute::ReadOnly)</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>         .removeAttribute(llvm::Attribute::ReadNone);</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> </div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca163f4f084f0a9d023f08f225e8f86623">ABIArgInfo::Ignore</a>:</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>       <span class="comment">// Skip increment, no matching LLVM parameter.</span></div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> </div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca9afd96bf046f2e86cd8f89e924c4ec6c">ABIArgInfo::Expand</a>: {</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>       <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Type*, 8></a> types;</div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>       <span class="comment">// FIXME: This is rather inefficient. Do we ever actually need to do</span></div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>       <span class="comment">// anything here? The result should be just reconstructed on the other</span></div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>       <span class="comment">// side, so extension should be a non-issue.</span></div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a930db80d2ce386e4d39183c834eec177">GetExpandedTypes</a>(ParamType, types);</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>       Index += types.size();</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>     }</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>     }</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span> </div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>     <span class="keywordflow">if</span> (Attrs.hasAttributes())</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>       PAL.push_back(llvm::AttributeSet::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6c8cff399ad98c730cce0907b1acd44e">getLLVMContext</a>(), Index, Attrs));</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>     ++Index;</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>   }</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>   <span class="keywordflow">if</span> (FuncAttrs.hasAttributes())</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>     PAL.push_back(llvm::</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>                   AttributeSet::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6c8cff399ad98c730cce0907b1acd44e">getLLVMContext</a>(),</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>                                     llvm::AttributeSet::FunctionIndex,</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>                                     FuncAttrs));</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> }</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span> <span class="comment"></span></div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> <span class="comment">/// An argument came in as a promoted argument; demote it back to its</span></div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> <span class="comment">/// declared type.</span></div>
+<div class="line"><a name="l01200"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a4f5bd6b74e197cd1905b217453fc801a"> 1200</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="CGCall_8cpp.html#a4f5bd6b74e197cd1905b217453fc801a">emitArgumentDemotion</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *var,</div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>                                          <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *value) {</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>   llvm::Type *varType = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(var-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span> </div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>   <span class="comment">// This can happen with promotions that actually don't change the</span></div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>   <span class="comment">// underlying type, like the enum promotions.</span></div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>   <span class="keywordflow">if</span> (value->getType() == varType) <span class="keywordflow">return</span> value;</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> </div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>   assert((varType->isIntegerTy() || varType->isFloatingPointTy())</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>          && <span class="stringliteral">"unexpected promotion type"</span>);</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> </div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>   <span class="keywordflow">if</span> (isa<llvm::IntegerType>(varType))</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>     <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateTrunc(value, varType, <span class="stringliteral">"arg.unpromote"</span>);</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> </div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateFPCast(value, varType, <span class="stringliteral">"arg.unpromote"</span>);</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> }</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> </div>
+<div class="line"><a name="l01218"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aaa3ade2417cb0d44418b2372d9ac65e6"> 1218</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aaa3ade2417cb0d44418b2372d9ac65e6">CodeGenFunction::EmitFunctionProlog</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="l01219"></a><span class="lineno"> 1219</span>                                          llvm::Function *Fn,</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &<a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>) {</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>   <span class="comment">// If this is an implicit-return-zero function, go ahead and</span></div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>   <span class="comment">// initialize the return value.  TODO: it might be nice to have</span></div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>   <span class="comment">// a more general mechanism for this that didn't require synthesized</span></div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>   <span class="comment">// return statements.</span></div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD = dyn_cast_or_null<FunctionDecl>(<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="l01226"></a><span class="lineno"> 1226</span>     <span class="keywordflow">if</span> (FD->hasImplicitReturnZero()) {</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> RetTy = FD->getResultType().getUnqualifiedType();</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>       llvm::Type* LLVMTy = <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>(RetTy);</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>       llvm::Constant* Zero = llvm::Constant::getNullValue(LLVMTy);</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(Zero, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>);</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>     }</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>   }</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> </div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>   <span class="comment">// FIXME: We no longer need the types from FunctionArgList; lift up and</span></div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>   <span class="comment">// simplify.</span></div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> </div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>   <span class="comment">// Emit allocs for param decls.  Give the LLVM Argument nodes names.</span></div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>   llvm::Function::arg_iterator AI = Fn->arg_begin();</div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span> </div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>   <span class="comment">// Name the struct return argument.</span></div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</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#abff43a999a921f0ca833d064865e43a6">ReturnTypeUsesSRet</a>(FI)) {</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>     AI->setName(<span class="stringliteral">"agg.result"</span>);</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>     AI->addAttr(llvm::AttributeSet::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(),</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>                                         AI->getArgNo() + 1,</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>                                         llvm::Attribute::NoAlias));</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>     ++AI;</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> </div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>   assert(FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a6bc6f3a652408934a6a71cb40db48bf8">arg_size</a>() == Args.size() &&</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>          <span class="stringliteral">"Mismatch between function signature & arguments."</span>);</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>   <span class="keywordtype">unsigned</span> ArgNo = 1;</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a65e9af9d90f96254d71c45f2669d3115">CGFunctionInfo::const_arg_iterator</a> info_it = FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ae79a956b6ca82977dc154183144c62fe">arg_begin</a>();</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>   <span class="keywordflow">for</span> (FunctionArgList::const_iterator i = Args.begin(), e = Args.end(); </div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>        i != e; ++i, ++info_it, ++ArgNo) {</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *Arg = *i;</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty = info_it->type;</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html">ABIArgInfo</a> &ArgI = info_it->info;</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> </div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>     <span class="keywordtype">bool</span> isPromoted =</div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>       isa<ParmVarDecl>(Arg) && cast<ParmVarDecl>(Arg)->isKNRPromoted();</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">// Skip the dummy padding argument.</span></div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>     <span class="keywordflow">if</span> (ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#aea38a545d30c2c9b7c587bb3cb44e549">getPaddingType</a>())</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>       ++AI;</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> </div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>     <span class="keywordflow">switch</span> (ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a5a95c44143588f81827dc8aeda02d3d0">getKind</a>()) {</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cadae4ef4ee3f65e068672fa51f8aaca15">ABIArgInfo::Indirect</a>: {</div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = AI;</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> </div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>       <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c6e4fe9ddc3eb21b00b36f9655a7bf4">hasScalarEvaluationKind</a>(Ty)) {</div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>         <span class="comment">// Aggregates and complex variables are accessed by reference.  All we</span></div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>         <span class="comment">// need to do is realign the value, if requested</span></div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>         <span class="keywordflow">if</span> (ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a1fe978bdb38b9f8005a9c65e224ebbe9">getIndirectRealign</a>()) {</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *AlignedTemp = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(Ty, <span class="stringliteral">"coerce"</span>);</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span> </div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>           <span class="comment">// Copy from the incoming argument pointer to the temporary with the</span></div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>           <span class="comment">// appropriate alignment.</span></div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>           <span class="comment">//</span></div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>           <span class="comment">// FIXME: We should have a common utility for generating an aggregate</span></div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>           <span class="comment">// copy.</span></div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>           llvm::Type *I8PtrTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt8PtrTy();</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>           <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Size = <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>(Ty);</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Dst = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(AlignedTemp, I8PtrTy);</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Src = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, I8PtrTy);</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemCpy(Dst,</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>                                Src,</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>                                llvm::ConstantInt::get(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a9cce048bcd175a468127b4eb05c050d2">IntPtrTy</a>, </div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>                                                       Size.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>()),</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>                                ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#afa125e330e08f23880af60bcf59cd4b3">getIndirectAlign</a>(),</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>                                <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>           V = AlignedTemp;</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>         }</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>         <span class="comment">// Load scalar value from indirect argument.</span></div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>         <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Alignment = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a78053c06e4477f81b295cac200144fc4" title="Return the ABI-specified alignment of a (complete) type T, in characters.">getTypeAlignInChars</a>(Ty);</div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>         V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aff8d4768706029de6dbe796b2867a8ef">EmitLoadOfScalar</a>(V, <span class="keyword">false</span>, Alignment.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>(), Ty,</div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>                              Arg-><a class="code" href="classclang_1_1DeclaratorDecl.html#a6d2ddcefd349a098905a94c33732c51e">getLocStart</a>());</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> </div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>         <span class="keywordflow">if</span> (isPromoted)</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>           V = <a class="code" href="CGCall_8cpp.html#a4f5bd6b74e197cd1905b217453fc801a">emitArgumentDemotion</a>(*<span class="keyword">this</span>, Arg, V);</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>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0f6e7571feb12b1d1214ab940ec3d438" title="EmitParmDecl - Emit a ParmVarDecl or an ImplicitParamDecl.">EmitParmDecl</a>(*Arg, V, ArgNo);</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>     }</div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span> </div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca149a9e29cad3ccc4597b88d5cf507d94">ABIArgInfo::Extend</a>:</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cafd121945c5d2ff7deee51a3616c13fe3">ABIArgInfo::Direct</a>: {</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span> </div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>       <span class="comment">// If we have the trivial case, handle it with no muss and fuss.</span></div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>       <span class="keywordflow">if</span> (!isa<llvm::StructType>(ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>()) &&</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>           ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>() == <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(Ty) &&</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>           ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a3b66257410f8756458e957da5f824c33">getDirectOffset</a>() == 0) {</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>         assert(AI != Fn->arg_end() && <span class="stringliteral">"Argument mismatch!"</span>);</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = AI;</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>         <span class="keywordflow">if</span> (Arg-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>().<a class="code" href="classclang_1_1QualType.html#ad46531988ff6ba4e51ef972ed7a7b8ac" title="Determine whether this type is restrict-qualified.">isRestrictQualified</a>())</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>           AI->addAttr(llvm::AttributeSet::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(),</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>                                               AI->getArgNo() + 1,</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>                                               llvm::Attribute::NoAlias));</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> </div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>         <span class="comment">// Ensure the argument is the correct type.</span></div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>         <span class="keywordflow">if</span> (V->getType() != ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>())</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>           V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>());</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> </div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>         <span class="keywordflow">if</span> (isPromoted)</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>           V = <a class="code" href="CGCall_8cpp.html#a4f5bd6b74e197cd1905b217453fc801a">emitArgumentDemotion</a>(*<span class="keyword">this</span>, Arg, V);</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> </div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD =</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>             dyn_cast_or_null<CXXMethodDecl>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a57b46a6624e733181105ee9c0eb39618" title="CurCodeDecl - This is the inner-most code context, which includes blocks.">CurCodeDecl</a>)) {</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>           <span class="keywordflow">if</span> (MD->isVirtual() && Arg == CXXABIThisDecl)</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>             V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>                 adjustThisParameterInVirtualFunctionPrologue(*<span class="keyword">this</span>, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a07a029445bbdb49eea32bef47594ba93" title="CurGD - The GlobalDecl for the current function being compiled.">CurGD</a>, V);</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> </div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>         <span class="comment">// Because of merging of function types from multiple decls it is</span></div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>         <span class="comment">// possible for the type of an argument to not match the corresponding</span></div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>         <span class="comment">// type in the function type. Since we are codegening the callee</span></div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>         <span class="comment">// in here, add a cast to the argument type.</span></div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>         llvm::Type *LTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(Arg-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>         <span class="keywordflow">if</span> (V->getType() != LTy)</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>           V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, LTy);</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span> </div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0f6e7571feb12b1d1214ab940ec3d438" title="EmitParmDecl - Emit a ParmVarDecl or an ImplicitParamDecl.">EmitParmDecl</a>(*Arg, V, ArgNo);</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>       }</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> </div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>       llvm::AllocaInst *Alloca = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(Ty, Arg-><a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>());</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span> </div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>       <span class="comment">// The alignment we need to use is the max of the requested alignment for</span></div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>       <span class="comment">// the argument plus the alignment required by our access code below.</span></div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>       <span class="keywordtype">unsigned</span> AlignmentToUse =</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getABITypeAlignment(ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>());</div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>       AlignmentToUse = std::max(AlignmentToUse,</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>                         (<span class="keywordtype">unsigned</span>)<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getDeclAlign(Arg).getQuantity());</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span> </div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>       Alloca->setAlignment(AlignmentToUse);</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = Alloca;</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr = V;    <span class="comment">// Pointer to store into.</span></div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span> </div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>       <span class="comment">// If the value is offset in memory, apply the offset now.</span></div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>       <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span> Offs = ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a3b66257410f8756458e957da5f824c33">getDirectOffset</a>()) {</div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>         Ptr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Ptr, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt8PtrTy());</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>         Ptr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP1_32(Ptr, Offs);</div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>         Ptr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Ptr,</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>                           llvm::PointerType::getUnqual(ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>()));</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>       }</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> </div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>       <span class="comment">// If the coerce-to type is a first class aggregate, we flatten it and</span></div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>       <span class="comment">// pass the elements. Either way is semantically identical, but fast-isel</span></div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>       <span class="comment">// and the optimizer generally likes scalar values better than FCAs.</span></div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>       llvm::StructType *STy = dyn_cast<llvm::StructType>(ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>());</div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>       <span class="keywordflow">if</span> (STy && STy->getNumElements() > 1) {</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>         uint64_t SrcSize = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getTypeAllocSize(STy);</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>         llvm::Type *DstTy =</div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>           cast<llvm::PointerType>(Ptr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>         uint64_t DstSize = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getTypeAllocSize(DstTy);</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> </div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>         <span class="keywordflow">if</span> (SrcSize <= DstSize) {</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>           Ptr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Ptr, llvm::PointerType::getUnqual(STy));</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> </div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = STy->getNumElements(); i != e; ++i) {</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>             assert(AI != Fn->arg_end() && <span class="stringliteral">"Argument mismatch!"</span>);</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>             AI->setName(Arg-><a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>() + <span class="stringliteral">".coerce"</span> + Twine(i));</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EltPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP2_32(Ptr, 0, i);</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>             <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(AI++, EltPtr);</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>           }</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>           llvm::AllocaInst *TempAlloca =</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>             <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(ArgI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>(), <span class="stringliteral">"coerce"</span>);</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>           TempAlloca->setAlignment(AlignmentToUse);</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *TempV = TempAlloca;</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>           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = STy->getNumElements(); i != e; ++i) {</div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>             assert(AI != Fn->arg_end() && <span class="stringliteral">"Argument mismatch!"</span>);</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>             AI->setName(Arg-><a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>() + <span class="stringliteral">".coerce"</span> + Twine(i));</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EltPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP2_32(TempV, 0, i);</div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>             <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(AI++, EltPtr);</div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>           }</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> </div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemCpy(Ptr, TempV, DstSize, AlignmentToUse);</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>         }</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>         <span class="comment">// Simple case, just do a coerced store of the argument into the alloca.</span></div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>         assert(AI != Fn->arg_end() && <span class="stringliteral">"Argument mismatch!"</span>);</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>         AI->setName(Arg-><a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>() + <span class="stringliteral">".coerce"</span>);</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>         <a class="code" href="CGCall_8cpp.html#a1e1bec8e68d7f4df598891783c488e60">CreateCoercedStore</a>(AI++, Ptr, <span class="comment">/*DestIsVolatile=*/</span><span class="keyword">false</span>, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>       }</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> </div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> </div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>       <span class="comment">// Match to what EmitParmDecl is expecting for this type.</span></div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c6e4fe9ddc3eb21b00b36f9655a7bf4">CodeGenFunction::hasScalarEvaluationKind</a>(Ty)) {</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>         V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aff8d4768706029de6dbe796b2867a8ef">EmitLoadOfScalar</a>(V, <span class="keyword">false</span>, AlignmentToUse, Ty, Arg-><a class="code" href="classclang_1_1DeclaratorDecl.html#a6d2ddcefd349a098905a94c33732c51e">getLocStart</a>());</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>         <span class="keywordflow">if</span> (isPromoted)</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>           V = <a class="code" href="CGCall_8cpp.html#a4f5bd6b74e197cd1905b217453fc801a">emitArgumentDemotion</a>(*<span class="keyword">this</span>, Arg, V);</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>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0f6e7571feb12b1d1214ab940ec3d438" title="EmitParmDecl - Emit a ParmVarDecl or an ImplicitParamDecl.">EmitParmDecl</a>(*Arg, V, ArgNo);</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>       <span class="keywordflow">continue</span>;  <span class="comment">// Skip ++AI increment, already done.</span></div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>     }</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span> </div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca9afd96bf046f2e86cd8f89e924c4ec6c">ABIArgInfo::Expand</a>: {</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>       <span class="comment">// If this structure was expanded into multiple arguments then</span></div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>       <span class="comment">// we need to create a temporary and reconstruct it from the</span></div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>       <span class="comment">// arguments.</span></div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>       llvm::AllocaInst *Alloca = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(Ty);</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Align = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#addc194ad79f18e8de0cc0d34ab389eb6" title="Return a conservative estimate of the alignment of the specified decl D.">getDeclAlign</a>(Arg);</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>       Alloca->setAlignment(Align.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>());</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(Alloca, Ty, Align);</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>       llvm::Function::arg_iterator End = ExpandTypeFromArgs(Ty, LV, AI);</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0f6e7571feb12b1d1214ab940ec3d438" title="EmitParmDecl - Emit a ParmVarDecl or an ImplicitParamDecl.">EmitParmDecl</a>(*Arg, Alloca, ArgNo);</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> </div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>       <span class="comment">// Name the arguments used in expansion and increment AI.</span></div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>       <span class="keywordtype">unsigned</span> Index = 0;</div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>       <span class="keywordflow">for</span> (; AI != End; ++AI, ++Index)</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>         AI->setName(Arg-><a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>() + <span class="stringliteral">"."</span> + Twine(Index));</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>       <span class="keywordflow">continue</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> </div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca163f4f084f0a9d023f08f225e8f86623">ABIArgInfo::Ignore</a>:</div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>       <span class="comment">// Initialize the local variable appropriately.</span></div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>       <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c6e4fe9ddc3eb21b00b36f9655a7bf4">hasScalarEvaluationKind</a>(Ty))</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0f6e7571feb12b1d1214ab940ec3d438" title="EmitParmDecl - Emit a ParmVarDecl or an ImplicitParamDecl.">EmitParmDecl</a>(*Arg, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(Ty), ArgNo);</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0f6e7571feb12b1d1214ab940ec3d438" title="EmitParmDecl - Emit a ParmVarDecl or an ImplicitParamDecl.">EmitParmDecl</a>(*Arg, llvm::UndefValue::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(Arg-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>())),</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>                      ArgNo);</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span> </div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>       <span class="comment">// Skip increment, no matching LLVM parameter.</span></div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>     }</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> </div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>     ++AI;</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>   }</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>   assert(AI == Fn->arg_end() && <span class="stringliteral">"Argument mismatch!"</span>);</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span> }</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span> </div>
+<div class="line"><a name="l01455"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a4b692e19f110bd140df92df41c07226f"> 1455</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGCall_8cpp.html#a4b692e19f110bd140df92df41c07226f">eraseUnusedBitCasts</a>(llvm::Instruction *insn) {</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>   <span class="keywordflow">while</span> (insn->use_empty()) {</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>     llvm::BitCastInst *bitcast = dyn_cast<llvm::BitCastInst>(insn);</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>     <span class="keywordflow">if</span> (!bitcast) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> </div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>     <span class="comment">// This is "safe" because we would have used a ConstantExpr otherwise.</span></div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>     insn = cast<llvm::Instruction>(bitcast->getOperand(0));</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>     bitcast->eraseFromParent();</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>   }</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> }</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span> <span class="comment"></span></div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> <span class="comment">/// Try to emit a fused autorelease of a return result.</span></div>
+<div class="line"><a name="l01467"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a543e7763936a4a0379e4ec0d3eb2a0de"> 1467</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="CGCall_8cpp.html#a543e7763936a4a0379e4ec0d3eb2a0de" title="Try to emit a fused autorelease of a return result.">tryEmitFusedAutoreleaseOfResult</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>                                                     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *result) {</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>   <span class="comment">// We must be immediately followed the cast.</span></div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>   llvm::BasicBlock *BB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>   <span class="keywordflow">if</span> (BB->empty()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>   <span class="keywordflow">if</span> (&BB->back() != result) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span> </div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>   llvm::Type *resultType = result->getType();</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> </div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>   <span class="comment">// result is in a BasicBlock and is therefore an Instruction.</span></div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>   llvm::Instruction *generator = cast<llvm::Instruction>(result);</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> </div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Instruction*,4></a> insnsToKill;</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">// Look for:</span></div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>   <span class="comment">//  %generator = bitcast %type1* %generator2 to %type2*</span></div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>   <span class="keywordflow">while</span> (llvm::BitCastInst *bitcast = dyn_cast<llvm::BitCastInst>(generator)) {</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>     <span class="comment">// We would have emitted this as a constant if the operand weren't</span></div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>     <span class="comment">// an Instruction.</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>     generator = cast<llvm::Instruction>(bitcast->getOperand(0));</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">// Require the generator to be immediately followed by the cast.</span></div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>     <span class="keywordflow">if</span> (generator->getNextNode() != bitcast)</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> </div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>     insnsToKill.push_back(bitcast);</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>   }</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> </div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>   <span class="comment">// Look for:</span></div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>   <span class="comment">//   %generator = call i8* @objc_retain(i8* %originalResult)</span></div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>   <span class="comment">// or</span></div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>   <span class="comment">//   %generator = call i8* @objc_retainAutoreleasedReturnValue(i8* %originalResult)</span></div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>   llvm::CallInst *call = dyn_cast<llvm::CallInst>(generator);</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>   <span class="keywordflow">if</span> (!call) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span> </div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>   <span class="keywordtype">bool</span> doRetainAutorelease;</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span> </div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>   <span class="keywordflow">if</span> (call->getCalledValue() == CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<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="l01505"></a><span class="lineno"> 1505</span>     doRetainAutorelease = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (call->getCalledValue() == CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>()</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>                                           .<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="l01508"></a><span class="lineno"> 1508</span>     doRetainAutorelease = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span> </div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>     <span class="comment">// If we emitted an assembly marker for this call (and the</span></div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>     <span class="comment">// ARCEntrypoints field should have been set if so), go looking</span></div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>     <span class="comment">// for that call.  If we can't find it, we can't do this</span></div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>     <span class="comment">// optimization.  But it should always be the immediately previous</span></div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>     <span class="comment">// instruction, unless we needed bitcasts around the call.</span></div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>     <span class="keywordflow">if</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a4fcdce74afb7f350ef6c2cb1a2c1ab46">retainAutoreleasedReturnValueMarker</a>) {</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>       llvm::Instruction *prev = call->getPrevNode();</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>       assert(prev);</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>       <span class="keywordflow">if</span> (isa<llvm::BitCastInst>(prev)) {</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>         prev = prev->getPrevNode();</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>         assert(prev);</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>       }</div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>       assert(isa<llvm::CallInst>(prev));</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>       assert(cast<llvm::CallInst>(prev)->getCalledValue() ==</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</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#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a4fcdce74afb7f350ef6c2cb1a2c1ab46">retainAutoreleasedReturnValueMarker</a>);</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>       insnsToKill.push_back(prev);</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="keywordflow">else</span> {</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>   }</div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> </div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>   result = call->getArgOperand(0);</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>   insnsToKill.push_back(call);</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span> </div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>   <span class="comment">// Keep killing bitcasts, for sanity.  Note that we no longer care</span></div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>   <span class="comment">// about precise ordering as long as there's exactly one use.</span></div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>   <span class="keywordflow">while</span> (llvm::BitCastInst *bitcast = dyn_cast<llvm::BitCastInst>(result)) {</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>     <span class="keywordflow">if</span> (!bitcast->hasOneUse()) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>     insnsToKill.push_back(bitcast);</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>     result = bitcast->getOperand(0);</div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>   }</div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> </div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>   <span class="comment">// Delete all the unnecessary instructions, from latest to earliest.</span></div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<llvm::Instruction*>::iterator</a></div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>          i = insnsToKill.begin(), e = insnsToKill.end(); i != e; ++i)</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>     (*i)->eraseFromParent();</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span> </div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>   <span class="comment">// Do the fused retain/autorelease if we were asked to.</span></div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>   <span class="keywordflow">if</span> (doRetainAutorelease)</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>     result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0bc089e441ae4fbb13dd119349db633a">EmitARCRetainAutoreleaseReturnValue</a>(result);</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> </div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>   <span class="comment">// Cast back to the result type.</span></div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result, resultType);</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span> }</div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span> <span class="comment"></span></div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span> <span class="comment">/// If this is a +1 of the value of an immutable 'self', remove it.</span></div>
+<div class="line"><a name="l01556"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a97ffd91802fa8ef047a71fd2c09c51b1"> 1556</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="CGCall_8cpp.html#a97ffd91802fa8ef047a71fd2c09c51b1" title="If this is a +1 of the value of an immutable 'self', remove it.">tryRemoveRetainOfSelf</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>                                           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *result) {</div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>   <span class="comment">// This is only applicable to a method with an immutable 'self'.</span></div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method =</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>     dyn_cast_or_null<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="l01561"></a><span class="lineno"> 1561</span>   <span class="keywordflow">if</span> (!method) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *<span class="keyword">self</span> = method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aca5d21d1409956e5d6ba77b0ce4beb0d">getSelfDecl</a>();</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>   <span class="keywordflow">if</span> (!self->getType().isConstQualified()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span> </div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>   <span class="comment">// Look for a retain call.</span></div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>   llvm::CallInst *retainCall =</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>     dyn_cast<llvm::CallInst>(result->stripPointerCasts());</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>   <span class="keywordflow">if</span> (!retainCall ||</div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>       retainCall->getCalledValue() != CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<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="l01570"></a><span class="lineno"> 1570</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span> </div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>   <span class="comment">// Look for an ordinary load of 'self'.</span></div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *retainedValue = retainCall->getArgOperand(0);</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>   llvm::LoadInst *load =</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>     dyn_cast<llvm::LoadInst>(retainedValue->stripPointerCasts());</div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>   <span class="keywordflow">if</span> (!load || load->isAtomic() || load->isVolatile() || </div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>       load->getPointerOperand() != CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a82621c86a6f95d33ae07868357749654" title="GetAddrOfLocalVar - Return the address of a local variable.">GetAddrOfLocalVar</a>(<span class="keyword">self</span>))</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span> </div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>   <span class="comment">// Okay!  Burn it all down.  This relies for correctness on the</span></div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>   <span class="comment">// assumption that the retain is emitted as part of the return and</span></div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>   <span class="comment">// that thereafter everything is used "linearly".</span></div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>   llvm::Type *resultType = result->getType();</div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>   <a class="code" href="CGCall_8cpp.html#a4b692e19f110bd140df92df41c07226f">eraseUnusedBitCasts</a>(cast<llvm::Instruction>(result));</div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>   assert(retainCall->use_empty());</div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>   retainCall->eraseFromParent();</div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>   <a class="code" href="CGCall_8cpp.html#a4b692e19f110bd140df92df41c07226f">eraseUnusedBitCasts</a>(cast<llvm::Instruction>(retainedValue));</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span> </div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(load, resultType);</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span> }</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span> <span class="comment"></span></div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span> <span class="comment">/// Emit an ARC autorelease of the result of a function.</span></div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span> <span class="comment">/// \return the value to actually return from the function</span></div>
+<div class="line"><a name="l01595"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a268ee04ad4326a62a58096adf8718108"> 1595</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="CGCall_8cpp.html#a268ee04ad4326a62a58096adf8718108">emitAutoreleaseOfResult</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>                                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *result) {</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>   <span class="comment">// If we're returning 'self', kill the initial retain.  This is a</span></div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>   <span class="comment">// heuristic attempt to "encourage correctness" in the really unfortunate</span></div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>   <span class="comment">// case where we have a return of self during a dealloc and we desperately</span></div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>   <span class="comment">// need to avoid the possible autorelease.</span></div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>   <span class="keywordflow">if</span> (<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<span class="keyword">self</span> = <a class="code" href="CGCall_8cpp.html#a97ffd91802fa8ef047a71fd2c09c51b1" title="If this is a +1 of the value of an immutable 'self', remove it.">tryRemoveRetainOfSelf</a>(CGF, result))</div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>     <span class="keywordflow">return</span> <span class="keyword">self</span>;</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span> </div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>   <span class="comment">// At -O0, try to emit a fused retain/autorelease.</span></div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>   <span class="keywordflow">if</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2d4331f8070be31c4042da24b3a98169">shouldUseFusedARCCalls</a>())</div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>     <span class="keywordflow">if</span> (<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *fused = <a class="code" href="CGCall_8cpp.html#a543e7763936a4a0379e4ec0d3eb2a0de" title="Try to emit a fused autorelease of a return result.">tryEmitFusedAutoreleaseOfResult</a>(CGF, result))</div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>       <span class="keywordflow">return</span> fused;</div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span> </div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a27c7debe106b52406d15aa004e73e71e">EmitARCAutoreleaseReturnValue</a>(result);</div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> }</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span> <span class="comment"></span></div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> <span class="comment">/// Heuristically search for a dominating store to the return-value slot.</span></div>
+<div class="line"><a name="l01613"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a41ceda79c710021834ef9d5bcfc4314d"> 1613</a></span> <span class="comment"></span><span class="keyword">static</span> llvm::StoreInst *<a class="code" href="CGCall_8cpp.html#a41ceda79c710021834ef9d5bcfc4314d" title="Heuristically search for a dominating store to the return-value slot.">findDominatingStoreToReturnValue</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>   <span class="comment">// If there are multiple uses of the return-value slot, just check</span></div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>   <span class="comment">// for something immediately preceding the IP.  Sometimes this can</span></div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>   <span class="comment">// happen with how we generate implicit-returns; it can also happen</span></div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>   <span class="comment">// with noreturn cleanups.</span></div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>   <span class="keywordflow">if</span> (!CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>->hasOneUse()) {</div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>     llvm::BasicBlock *IP = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>     <span class="keywordflow">if</span> (IP->empty()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>     llvm::StoreInst *store = dyn_cast<llvm::StoreInst>(&IP->back());</div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>     <span class="keywordflow">if</span> (!store) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>     <span class="keywordflow">if</span> (store->getPointerOperand() != CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>     assert(!store->isAtomic() && !store->isVolatile()); <span class="comment">// see below</span></div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>     <span class="keywordflow">return</span> store;</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>   }</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span> </div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>   llvm::StoreInst *store =</div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>     dyn_cast<llvm::StoreInst>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>->use_back());</div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>   <span class="keywordflow">if</span> (!store) <span class="keywordflow">return</span> 0;</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>   <span class="comment">// These aren't actually possible for non-coerced returns, and we</span></div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>   <span class="comment">// only care about non-coerced returns on this code path.</span></div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>   assert(!store->isAtomic() && !store->isVolatile());</div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> </div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>   <span class="comment">// Now do a first-and-dirty dominance check: just walk up the</span></div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>   <span class="comment">// single-predecessors chain from the current insertion point.</span></div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>   llvm::BasicBlock *StoreBB = store->getParent();</div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>   llvm::BasicBlock *IP = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>   <span class="keywordflow">while</span> (IP != StoreBB) {</div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>     <span class="keywordflow">if</span> (!(IP = IP->getSinglePredecessor()))</div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>   }</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> </div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>   <span class="comment">// Okay, the store's basic block dominates the insertion point; we</span></div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>   <span class="comment">// can do our thing.</span></div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>   <span class="keywordflow">return</span> store;</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> }</div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span> </div>
+<div class="line"><a name="l01650"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12afed68808fd6a54f5182855f36510d"> 1650</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12afed68808fd6a54f5182855f36510d">CodeGenFunction::EmitFunctionEpilog</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="l01651"></a><span class="lineno"> 1651</span>                                          <span class="keywordtype">bool</span> EmitRetDbgLoc,</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</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> EndLoc) {</div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>   <span class="comment">// Functions with no result always return void.</span></div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a> == 0) {</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateRetVoid();</div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>   }</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> </div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>   llvm::DebugLoc RetDbgLoc;</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RV = 0;</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> RetTy = FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a30c5ff80d845c6b4a36f1628651f8fed">getReturnType</a>();</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html">ABIArgInfo</a> &RetAI = FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ac0f497df111824e55810d0e389f8b7ae">getReturnInfo</a>();</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span> </div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>   <span class="keywordflow">switch</span> (RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a5a95c44143588f81827dc8aeda02d3d0">getKind</a>()) {</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cadae4ef4ee3f65e068672fa51f8aaca15">ABIArgInfo::Indirect</a>: {</div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>     <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1be3afe566ffd19818efe9f6b07a8ea">getEvaluationKind</a>(RetTy)) {</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9ad0c74fbe072df321c2078f52f052d07c">TEK_Complex</a>: {</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae417ed4971c18c5ce0607e1be62ec117">ComplexPairTy</a> RT =</div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a26d8547dd8e031970116491629669c39" title="EmitLoadOfComplex - Load a complex number from the specified l-value.">EmitLoadOfComplex</a>(<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>, RetTy),</div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>                           EndLoc);</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</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>(RT,</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>                        <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ade1be93e4c11e1945ef1c0d8bbc61ff8">CurFn</a>->arg_begin(), RetTy),</div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>                          <span class="comment">/*isInit*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>     }</div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9a6bdd6972cc7f7a6326c359a2a07df29a">TEK_Aggregate</a>:</div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>       <span class="comment">// Do nothing; aggregrates get evaluated directly into the destination.</span></div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9aa4a7b0b5cf5c3854e35ca0c172e93269">TEK_Scalar</a>:</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>),</div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>                         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ade1be93e4c11e1945ef1c0d8bbc61ff8">CurFn</a>->arg_begin(), RetTy),</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>                         <span class="comment">/*isInit*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>     }</div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>   }</div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span> </div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca149a9e29cad3ccc4597b88d5cf507d94">ABIArgInfo::Extend</a>:</div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cafd121945c5d2ff7deee51a3616c13fe3">ABIArgInfo::Direct</a>:</div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>     <span class="keywordflow">if</span> (RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>() == <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(RetTy) &&</div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>         RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a3b66257410f8756458e957da5f824c33">getDirectOffset</a>() == 0) {</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>       <span class="comment">// The internal return value temp always will have pointer-to-return-type</span></div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>       <span class="comment">// type, just do a load.</span></div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span> </div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>       <span class="comment">// If there is a dominating store to ReturnValue, we can elide</span></div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>       <span class="comment">// the load, zap the store, and usually zap the alloca.</span></div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>       <span class="keywordflow">if</span> (llvm::StoreInst *SI = <a class="code" href="CGCall_8cpp.html#a41ceda79c710021834ef9d5bcfc4314d" title="Heuristically search for a dominating store to the return-value slot.">findDominatingStoreToReturnValue</a>(*<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>         <span class="comment">// Reuse the debug location from the store unless there is</span></div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>         <span class="comment">// cleanup code to be emitted between the store and return</span></div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>         <span class="comment">// instruction.</span></div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>         <span class="keywordflow">if</span> (EmitRetDbgLoc && !<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab76fb84db4ffd19dc418ce9ee4e253ed" title="In ARC, whether we should autorelease the return value.">AutoreleaseResult</a>)</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>           RetDbgLoc = SI->getDebugLoc();</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>         <span class="comment">// Get the stored value and nuke the now-dead store.</span></div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>         RV = SI->getValueOperand();</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>         SI->eraseFromParent();</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span> </div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>         <span class="comment">// If that was the only use of the return value, nuke it as well now.</span></div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>->use_empty() && isa<llvm::AllocaInst>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>)) {</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>           cast<llvm::AllocaInst>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>)->eraseFromParent();</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a> = 0;</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="comment">// Otherwise, we have to do a simple load.</span></div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>         RV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>);</div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>       }</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>;</div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>       <span class="comment">// If the value is offset in memory, apply the offset now.</span></div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>       <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span> Offs = RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a3b66257410f8756458e957da5f824c33">getDirectOffset</a>()) {</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>         V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt8PtrTy());</div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>         V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP1_32(V, Offs);</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>         V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V,</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>                          llvm::PointerType::getUnqual(RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>()));</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>       }</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span> </div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>       RV = <a class="code" href="CGCall_8cpp.html#aead940bcd5c3067308135fdc10a1f3df">CreateCoercedLoad</a>(V, RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>(), *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>     }</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span> </div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>     <span class="comment">// In ARC, end functions that return a retainable type with a call</span></div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>     <span class="comment">// to objc_autoreleaseReturnValue.</span></div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab76fb84db4ffd19dc418ce9ee4e253ed" title="In ARC, whether we should autorelease the return value.">AutoreleaseResult</a>) {</div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>       assert(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>              !FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ad94959ffe0be739442a11ae1fe0825fb">isReturnsRetained</a>() &&</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>              RetTy-><a class="code" href="classclang_1_1Type.html#aefead70d5348015b03c14f274621789c">isObjCRetainableType</a>());</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>       RV = <a class="code" href="CGCall_8cpp.html#a268ee04ad4326a62a58096adf8718108">emitAutoreleaseOfResult</a>(*<span class="keyword">this</span>, RV);</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>     }</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span> </div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span> </div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca163f4f084f0a9d023f08f225e8f86623">ABIArgInfo::Ignore</a>:</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span> </div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca9afd96bf046f2e86cd8f89e924c4ec6c">ABIArgInfo::Expand</a>:</div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>     llvm_unreachable(<span class="stringliteral">"Invalid ABI kind for return argument"</span>);</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>   }</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span> </div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>   llvm::Instruction *Ret = RV ? <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateRet(RV) : <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateRetVoid();</div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>   <span class="keywordflow">if</span> (!RetDbgLoc.isUnknown())</div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>     Ret->setDebugLoc(RetDbgLoc);</div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span> }</div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span> </div>
+<div class="line"><a name="l01753"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3c6a1515396e7d07ad2584353b019302"> 1753</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3c6a1515396e7d07ad2584353b019302">CodeGenFunction::EmitDelegateCallArg</a>(<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &args,</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>                                           <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *param,</div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</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="namespaceclang_1_1ast__matchers.html#af2a0068a0d7c4962e52a7a70967fa5df" title="Matches TypeLocs for which the given inner QualType-matcher matches.">loc</a>) {</div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>   <span class="comment">// StartFunction converted the ABI-lowered parameter(s) into a</span></div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>   <span class="comment">// local alloca.  We need to turn that into an r-value suitable</span></div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>   <span class="comment">// for EmitCall.</span></div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *local = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a82621c86a6f95d33ae07868357749654" title="GetAddrOfLocalVar - Return the address of a local variable.">GetAddrOfLocalVar</a>(param);</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>   <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> = param-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span> </div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>   <span class="comment">// For the most part, we just need to load the alloca, except:</span></div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>   <span class="comment">// 1) aggregate r-values are actually pointers to temporaries, and</span></div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>   <span class="comment">// 2) references to non-scalars are pointers directly to the aggregate.</span></div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>   <span class="comment">// I don't know why references to scalars are different here.</span></div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ReferenceType.html">ReferenceType</a> *ref = type-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ReferenceType.html">ReferenceType</a>>()) {</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c6e4fe9ddc3eb21b00b36f9655a7bf4">hasScalarEvaluationKind</a>(ref->getPointeeType()))</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>       <span class="keywordflow">return</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#aeeb48f4fb8409aca54d4611ad4a28559">RValue::getAggregate</a>(local), type);</div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span> </div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>     <span class="comment">// Locals which are references to scalars are represented</span></div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>     <span class="comment">// with allocas holding the pointer.</span></div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>     <span class="keywordflow">return</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>.CreateLoad(local)), type);</div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>   }</div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> </div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>   args.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af2fc80cbb185fd1567879b4394997878">convertTempToRValue</a>(local, type, loc), type);</div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span> }</div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span> </div>
+<div class="line"><a name="l01779"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a406bfbdaeae2144cff6e034ac669b7fe"> 1779</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGCall_8cpp.html#a406bfbdaeae2144cff6e034ac669b7fe">isProvablyNull</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr) {</div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>   <span class="keywordflow">return</span> isa<llvm::ConstantPointerNull>(addr);</div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span> }</div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span> </div>
+<div class="line"><a name="l01783"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a716ff1700f1cb296927edd3666a8910a"> 1783</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGCall_8cpp.html#a716ff1700f1cb296927edd3666a8910a">isProvablyNonNull</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr) {</div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>   <span class="keywordflow">return</span> isa<llvm::AllocaInst>(addr);</div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span> }</div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span> <span class="comment"></span></div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span> <span class="comment">/// Emit the actual writing-back of a writeback.</span></div>
+<div class="line"><a name="l01788"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#add5542f001008b93c9a3801855b56375"> 1788</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGCall_8cpp.html#add5542f001008b93c9a3801855b56375" title="Emit the actual writing-back of a writeback.">emitWriteback</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>                           <span class="keyword">const</span> <a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html">CallArgList::Writeback</a> &writeback) {</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> &srcLV = writeback.<a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#ab768b07c3986180a240c49120b3be339">Source</a>;</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *srcAddr = srcLV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>   assert(!<a class="code" href="CGCall_8cpp.html#a406bfbdaeae2144cff6e034ac669b7fe">isProvablyNull</a>(srcAddr) &&</div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>          <span class="stringliteral">"shouldn't have writeback for provably null argument"</span>);</div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span> </div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>   llvm::BasicBlock *contBB = 0;</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">// If the argument wasn't provably non-null, we need to null check</span></div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>   <span class="comment">// before doing the store.</span></div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>   <span class="keywordtype">bool</span> provablyNonNull = <a class="code" href="CGCall_8cpp.html#a716ff1700f1cb296927edd3666a8910a">isProvablyNonNull</a>(srcAddr);</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>   <span class="keywordflow">if</span> (!provablyNonNull) {</div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>     llvm::BasicBlock *writebackBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"icr.writeback"</span>);</div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>     contBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"icr.done"</span>);</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span> </div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *isNull = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateIsNull(srcAddr, <span class="stringliteral">"icr.isnull"</span>);</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(isNull, contBB, writebackBB);</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(writebackBB);</div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>   }</div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span> </div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>   <span class="comment">// Load the value to writeback.</span></div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(writeback.<a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#a46914157f09ca18915acd10214b91f16" title="The temporary alloca.">Temporary</a>);</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span> </div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>   <span class="comment">// Cast it back, in case we're writing an id to a Foo* or something.</span></div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>   value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(value,</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>                cast<llvm::PointerType>(srcAddr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>(),</div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>                             <span class="stringliteral">"icr.writeback-cast"</span>);</div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>   </div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>   <span class="comment">// Perform the writeback.</span></div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span> </div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>   <span class="comment">// If we have a "to use" value, it's something we need to emit a use</span></div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>   <span class="comment">// of.  This has to be carefully threaded in: if it's done after the</span></div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>   <span class="comment">// release it's potentially undefined behavior (and the optimizer</span></div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>   <span class="comment">// will ignore it), and if it happens before the retain then the</span></div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>   <span class="comment">// optimizer could move the release there.</span></div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>   <span class="keywordflow">if</span> (writeback.<a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#aaa38920ac9e8d8c51a1370ca4c3285f4" title="A value to "use" after the writeback, or null.">ToUse</a>) {</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>     assert(srcLV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5c85dfcb721330daf4947b347627e632">getObjCLifetime</a>() == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>);</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span> </div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>     <span class="comment">// Retain the new value.  No need to block-copy here:  the block's</span></div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>     <span class="comment">// being passed up the stack.</span></div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>     value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab8f93d18f0518fc32858adb46f0ac861">EmitARCRetainNonBlock</a>(value);</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span> </div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>     <span class="comment">// Emit the intrinsic use here.</span></div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa59fc1074cb261290bcca01d6aa425c9">EmitARCIntrinsicUse</a>(writeback.<a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#aaa38920ac9e8d8c51a1370ca4c3285f4" title="A value to "use" after the writeback, or null.">ToUse</a>);</div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span> </div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>     <span class="comment">// Load the old value (primitively).</span></div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *oldValue = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aff8d4768706029de6dbe796b2867a8ef">EmitLoadOfScalar</a>(srcLV, <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="l01836"></a><span class="lineno"> 1836</span> </div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>     <span class="comment">// Put the new value in place (primitively).</span></div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(value, srcLV, <span class="comment">/*init*/</span> <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span> </div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>     <span class="comment">// Release the old value.</span></div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a585a58940cba78b5edc132481e3af6ec">EmitARCRelease</a>(oldValue, srcLV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a1d4b1559393aa4b485033b95bc973300">isARCPreciseLifetime</a>());</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> </div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>   <span class="comment">// Otherwise, we can just do a normal lvalue store.</span></div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>     CGF.<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), srcLV);</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> </div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>   <span class="comment">// Jump to the continuation block.</span></div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>   <span class="keywordflow">if</span> (!provablyNonNull)</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(contBB);</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> </div>
+<div class="line"><a name="l01853"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a7fabf77ab98db71c40568ac24de30a0d"> 1853</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGCall_8cpp.html#a7fabf77ab98db71c40568ac24de30a0d">emitWritebacks</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>                            <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &args) {</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#ad8205f48223f9f506edce02babee4ffc">CallArgList::writeback_iterator</a></div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>          i = args.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1afbcf0c31c77d08fb884c8a6047f1e7">writeback_begin</a>(), e = args.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a565abd7d25ae2fd035779a07513ae4fc">writeback_end</a>(); i != e; ++i)</div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>     <a class="code" href="CGCall_8cpp.html#add5542f001008b93c9a3801855b56375" title="Emit the actual writing-back of a writeback.">emitWriteback</a>(CGF, *i);</div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span> }</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span> </div>
+<div class="line"><a name="l01860"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a89128c7268e165a37bacda8644d7bbea"> 1860</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGCall_8cpp.html#a89128c7268e165a37bacda8644d7bbea">deactivateArgCleanupsBeforeCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</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="l01862"></a><span class="lineno"> 1862</span>   assert(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a99a31085fa0c84b27925137b3f6f6b97">getTarget</a>().<a class="code" href="classclang_1_1TargetInfo.html#a775f59ee5320dd4b20abde5d724a43f3" title="Get the C++ ABI currently in use.">getCXXABI</a>().<a class="code" href="classclang_1_1TargetCXXABI.html#a8f7c36046f91e49fe9f000e4bf39c2a7">isArgumentDestroyedByCallee</a>());</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>   <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<CallArgList::CallArgCleanup></a> Cleanups =</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>     CallArgs.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a892d76ca481dbcb21661322e76726021">getCleanupsToDeactivate</a>();</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>   <span class="comment">// Iterate in reverse to increase the likelihood of popping the cleanup.</span></div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<CallArgList::CallArgCleanup>::reverse_iterator</a></div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>          I = Cleanups.rbegin(), E = Cleanups.rend(); I != E; ++I) {</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7269997253c3e7e47f864add0bdf2a0e" title="Deactive a cleanup that was created in an active state.">DeactivateCleanupBlock</a>(I->Cleanup, I->IsActiveIP);</div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>     I->IsActiveIP->eraseFromParent();</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>   }</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span> }</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span> </div>
+<div class="line"><a name="l01873"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a44980cc250c14fff14a6f229152e835d"> 1873</a></span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="CGCall_8cpp.html#a44980cc250c14fff14a6f229152e835d">maybeGetUnaryAddrOfOperand</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E) {</div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *uop = dyn_cast<UnaryOperator>(E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>()))</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>     <span class="keywordflow">if</span> (uop->getOpcode() == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa74539ddfc7ac7056cfaeeca1deed46be">UO_AddrOf</a>)</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>       <span class="keywordflow">return</span> uop->getSubExpr();</div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span> }</div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span> <span class="comment"></span></div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span> <span class="comment">/// Emit an argument that's being passed call-by-writeback.  That is,</span></div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span> <span class="comment">/// we are passing the address of </span></div>
+<div class="line"><a name="l01882"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a5624114e59b984b1df6bbbbdcc2488b3"> 1882</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGCall_8cpp.html#a5624114e59b984b1df6bbbbdcc2488b3">emitWritebackArg</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &args,</div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>                              <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIndirectCopyRestoreExpr.html">ObjCIndirectCopyRestoreExpr</a> *CRE) {</div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> srcLV;</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>   <span class="comment">// Make an optimistic effort to emit the address as an l-value.</span></div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>   <span class="comment">// This can fail if the the argument expression is more complicated.</span></div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *lvExpr = <a class="code" href="CGCall_8cpp.html#a44980cc250c14fff14a6f229152e835d">maybeGetUnaryAddrOfOperand</a>(CRE-><a class="code" href="classclang_1_1ObjCIndirectCopyRestoreExpr.html#ab9f03c5ebc646e72d5a396391b5ab57b">getSubExpr</a>())) {</div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>     srcLV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(lvExpr);</div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span> </div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>   <span class="comment">// Otherwise, just emit it as a scalar.</span></div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *srcAddr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(CRE-><a class="code" href="classclang_1_1ObjCIndirectCopyRestoreExpr.html#ab9f03c5ebc646e72d5a396391b5ab57b">getSubExpr</a>());</div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span> </div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> srcAddrType =</div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>       CRE-><a class="code" href="classclang_1_1ObjCIndirectCopyRestoreExpr.html#ab9f03c5ebc646e72d5a396391b5ab57b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1PointerType.html">PointerType</a>>()->getPointeeType();</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>     srcLV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(srcAddr, srcAddrType);</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>   }</div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *srcAddr = srcLV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span> </div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>   <span class="comment">// The dest and src types don't necessarily match in LLVM terms</span></div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>   <span class="comment">// because of the crazy ObjC compatibility rules.</span></div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span> </div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>   llvm::PointerType *destType =</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>     cast<llvm::PointerType>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(CRE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span> </div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>   <span class="comment">// If the address is a constant null, just pass the appropriate null.</span></div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>   <span class="keywordflow">if</span> (<a class="code" href="CGCall_8cpp.html#a406bfbdaeae2144cff6e034ac669b7fe">isProvablyNull</a>(srcAddr)) {</div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</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>(llvm::ConstantPointerNull::get(destType)),</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>              CRE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>   }</div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span> </div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>   <span class="comment">// Create the temporary.</span></div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *temp = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(destType->getElementType(),</div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>                                            <span class="stringliteral">"icr.temp"</span>);</div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>   <span class="comment">// Loading an l-value can introduce a cleanup if the l-value is __weak,</span></div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>   <span class="comment">// and that cleanup will be conditional if we can't prove that the l-value</span></div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>   <span class="comment">// isn't null, so we need to register a dominating point so that the cleanups</span></div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>   <span class="comment">// system will make valid IR.</span></div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1ConditionalEvaluation.html" title="An object to manage conditionally-evaluated expressions.">CodeGenFunction::ConditionalEvaluation</a> condEval(CGF);</div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>   </div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>   <span class="comment">// Zero-initialize it if we're not doing a copy-initialization.</span></div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>   <span class="keywordtype">bool</span> shouldCopy = CRE-><a class="code" href="classclang_1_1ObjCIndirectCopyRestoreExpr.html#ad1c5fff4da1658f8890e62933de2ee35">shouldCopy</a>();</div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>   <span class="keywordflow">if</span> (!shouldCopy) {</div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *null =</div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>       llvm::ConstantPointerNull::get(</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>         cast<llvm::PointerType>(destType->getElementType()));</div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(null, temp);</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>   }</div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>   </div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>   llvm::BasicBlock *contBB = 0;</div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>   llvm::BasicBlock *originBB = 0;</div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span> </div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>   <span class="comment">// If the address is *not* known to be non-null, we need to switch.</span></div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *finalArgument;</div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span> </div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>   <span class="keywordtype">bool</span> provablyNonNull = <a class="code" href="CGCall_8cpp.html#a716ff1700f1cb296927edd3666a8910a">isProvablyNonNull</a>(srcAddr);</div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>   <span class="keywordflow">if</span> (provablyNonNull) {</div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>     finalArgument = temp;</div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *isNull = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateIsNull(srcAddr, <span class="stringliteral">"icr.isnull"</span>);</div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span> </div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>     finalArgument = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateSelect(isNull, </div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>                                    llvm::ConstantPointerNull::get(destType),</div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>                                              temp, <span class="stringliteral">"icr.argument"</span>);</div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span> </div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>     <span class="comment">// If we need to copy, then the load has to be conditional, which</span></div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>     <span class="comment">// means we need control flow.</span></div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>     <span class="keywordflow">if</span> (shouldCopy) {</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>       originBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>       contBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"icr.cont"</span>);</div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>       llvm::BasicBlock *copyBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"icr.copy"</span>);</div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(isNull, contBB, copyBB);</div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(copyBB);</div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>       condEval.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1ConditionalEvaluation.html#a3046835ae0c0878c9a5f95904c074fd1">begin</a>(CGF);</div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>     }</div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>   }</div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span> </div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *valueToUse = 0;</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>   <span class="comment">// Perform a copy if necessary.</span></div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>   <span class="keywordflow">if</span> (shouldCopy) {</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>     <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> srcRV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6ec6fabfbe7aa87203af03a05ab5d157">EmitLoadOfLValue</a>(srcLV, <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="l01965"></a><span class="lineno"> 1965</span>     assert(srcRV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeb42ff4f93c5721cf244b300ba864e3f">isScalar</a>());</div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span> </div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *src = srcRV.<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="l01968"></a><span class="lineno"> 1968</span>     src = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(src, destType->getElementType(),</div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>                                     <span class="stringliteral">"icr.cast"</span>);</div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span> </div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>     <span class="comment">// Use an ordinary store, not a store-to-lvalue.</span></div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(src, temp);</div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span> </div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>     <span class="comment">// If optimization is enabled, and the value was held in a</span></div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>     <span class="comment">// __strong variable, we need to tell the optimizer that this</span></div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>     <span class="comment">// value has to stay alive until we're doing the store back.</span></div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>     <span class="comment">// This is because the temporary is effectively unretained,</span></div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>     <span class="comment">// and so otherwise we can violate the high-level semantics.</span></div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>     <span class="keywordflow">if</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().OptimizationLevel != 0 &&</div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>         srcLV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5c85dfcb721330daf4947b347627e632">getObjCLifetime</a>() == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>) {</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>       valueToUse = src;</div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>     }</div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>   }</div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>   </div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>   <span class="comment">// Finish the control flow if we needed it.</span></div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>   <span class="keywordflow">if</span> (shouldCopy && !provablyNonNull) {</div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>     llvm::BasicBlock *copyBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(contBB);</div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span> </div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>     <span class="comment">// Make a phi for the value to intrinsically use.</span></div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>     <span class="keywordflow">if</span> (valueToUse) {</div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>       llvm::PHINode *phiToUse = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreatePHI(valueToUse->getType(), 2,</div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>                                                       <span class="stringliteral">"icr.to-use"</span>);</div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>       phiToUse->addIncoming(valueToUse, copyBB);</div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>       phiToUse->addIncoming(llvm::UndefValue::get(valueToUse->getType()),</div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>                             originBB);</div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>       valueToUse = phiToUse;</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>     condEval.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1ConditionalEvaluation.html#af1253e4715a161f6c65791f65c9219da">end</a>(CGF);</div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>   }</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>   args.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a3b2c5b1e823bb2509d7ed25b5de4813a">addWriteback</a>(srcLV, temp, valueToUse);</div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</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>(finalArgument), CRE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</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> </div>
+<div class="line"><a name="l02007"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7bc8ff8f3e706c49a171712be9c8a6d3"> 2007</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7bc8ff8f3e706c49a171712be9c8a6d3" title="EmitCallArg - Emit a single call argument.">CodeGenFunction::EmitCallArg</a>(<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &args, <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E,</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</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="l02009"></a><span class="lineno"> 2009</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIndirectCopyRestoreExpr.html">ObjCIndirectCopyRestoreExpr</a> *CRE</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>         = dyn_cast<ObjCIndirectCopyRestoreExpr>(E)) {</div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>     assert(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().ObjCAutoRefCount);</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>     assert(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().hasSameType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</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="l02013"></a><span class="lineno"> 2013</span>     <span class="keywordflow">return</span> <a class="code" href="CGCall_8cpp.html#a5624114e59b984b1df6bbbbdcc2488b3">emitWritebackArg</a>(*<span class="keyword">this</span>, args, CRE);</div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>   }</div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span> </div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>   assert(type-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>() == E-><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>() &&</div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>          <span class="stringliteral">"reference binding to unmaterialized r-value!"</span>);</div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span> </div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>()) {</div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>     assert(E-><a class="code" href="classclang_1_1Expr.html#a6fd3892ddf8334fc9b311daaa93a27f5">getObjectKind</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="l02021"></a><span class="lineno"> 2021</span>     <span class="keywordflow">return</span> args.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4032dd7767cd564a23c06daf0793ec21" title="Emits a reference binding to the passed in expression.">EmitReferenceBindingToExpr</a>(E), type);</div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>   }</div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span> </div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>   <span class="keywordtype">bool</span> HasAggregateEvalKind = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adb210db7ab6920236d4403eaca7d663b">hasAggregateEvaluationKind</a>(type);</div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span> </div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>   <span class="comment">// In the Microsoft C++ ABI, aggregate arguments are destructed by the callee.</span></div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>   <span class="comment">// However, we still have to push an EH-only cleanup in case we unwind before</span></div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>   <span class="comment">// we make it to the call.</span></div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>   <span class="keywordflow">if</span> (HasAggregateEvalKind &&</div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0256b70c5f3ad3812e767f745196fa3f">getTarget</a>().<a class="code" href="classclang_1_1TargetInfo.html#a775f59ee5320dd4b20abde5d724a43f3" title="Get the C++ ABI currently in use.">getCXXABI</a>().<a class="code" href="classclang_1_1TargetCXXABI.html#a8f7c36046f91e49fe9f000e4bf39c2a7">isArgumentDestroyedByCallee</a>()) {</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = type-><a class="code" href="classclang_1_1Type.html#a7dc6c3dbc192ad98871c3cc484376b9a" title="Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or beca...">getAsCXXRecordDecl</a>();</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>     <span class="keywordflow">if</span> (RD && RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a314cd1ab631ceecd9f9bc2b3acd059d5" title="Determine whether this class has a non-trivial destructor (C++ [class.dtor]p3)">hasNonTrivialDestructor</a>()) {</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>       <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Slot = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a28025dd0dfd2cde1cde5445690301c92">CreateAggTemp</a>(type, <span class="stringliteral">"agg.arg.tmp"</span>);</div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>       Slot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a57c314a91cd01bceabd0cb2045d87518">setExternallyDestructed</a>();</div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5">EmitAggExpr</a>(E, Slot);</div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>       <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV = Slot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a7db14eb5994ec93ea9206e82777cc6de">asRValue</a>();</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>       args.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(RV, type);</div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span> </div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a642101502fd1205cd71b9f365695d0fb">pushDestroy</a>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>, RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#ae56c586d571b8d6d1cea9a78b89d9439" title="getAggregateAddr() - Return the Value* of the address of the aggregate.">getAggregateAddr</a>(), <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4be898907517e22404c9140827358d90">destroyCXXObject</a>,</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>                   <span class="comment">/*useEHCleanupForArray*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>       <span class="comment">// This unreachable is a temporary marker which will be removed later.</span></div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>       llvm::Instruction *IsActive = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateUnreachable();</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>       args.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a60d6ca5d6ad1b36192f20cb68bbe9cfa">addArgCleanupDeactivation</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ad727a3cc92638b4bbe253233f8fb2159">getInnermostEHScope</a>(), IsActive);</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>     }</div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>   }</div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span> </div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>   <span class="keywordflow">if</span> (HasAggregateEvalKind && isa<ImplicitCastExpr>(E) &&</div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>       cast<CastExpr>(E)->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a>) {</div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> L = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(cast<CastExpr>(E)->getSubExpr());</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>     assert(L.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8e2a971f64f67d31f84bc136c53c72c0">isSimple</a>());</div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>     <span class="keywordflow">if</span> (L.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a2d35987e18fbcfd14728b22c04c04bf4">getAlignment</a>() >= <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>(type)) {</div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>       args.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(L.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a50e578076cdf6a5e42dca66894e37b8e">asAggregateRValue</a>(), <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>, <span class="comment">/*NeedsCopy*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>       <span class="comment">// We can't represent a misaligned lvalue in the CallArgList, so copy</span></div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>       <span class="comment">// to an aligned temporary now.</span></div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *tmp = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(type);</div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12ee175c3e6e4041476f5d3af692a70a">EmitAggregateCopy</a>(tmp, L.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>, L.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a58eed8b04aab5d70e2f0e6896181e917">isVolatile</a>(),</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>                         L.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a2d35987e18fbcfd14728b22c04c04bf4">getAlignment</a>());</div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</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#aeeb48f4fb8409aca54d4611ad4a28559">RValue::getAggregate</a>(tmp), type);</div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>     }</div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>   }</div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span> </div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>   args.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9fdb742155a07d24c1070a5c558fdf9d">EmitAnyExprToTemp</a>(E), type);</div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span> }</div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span> </div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span> <span class="comment">// In ObjC ARC mode with no ObjC ARC exception safety, tell the ARC</span></div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span> <span class="comment">// optimizer it can aggressively ignore unwind edges.</span></div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span> CodeGenFunction::AddObjCARCExceptionMetadata(llvm::Instruction *Inst) {</div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().OptimizationLevel != 0 &&</div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</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>().ObjCAutoRefCountExceptions)</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>     Inst->setMetadata(<span class="stringliteral">"clang.arc.no_objc_arc_exceptions"</span>,</div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>                       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7566fc041674d28ebbace660bf91bd25">getNoObjCARCExceptionsMetadata</a>());</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span> }</div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span> <span class="comment"></span></div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span> <span class="comment">/// Emits a call to the given no-arguments nounwind runtime function.</span></div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span> <span class="comment"></span>llvm::CallInst *</div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">CodeGenFunction::EmitNounwindRuntimeCall</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *callee,</div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>                                          <span class="keyword">const</span> llvm::Twine &name) {</div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(callee, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<llvm::Value*></a>(), name);</div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span> }</div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span> <span class="comment"></span></div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span> <span class="comment">/// Emits a call to the given nounwind runtime function.</span></div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span> <span class="comment"></span>llvm::CallInst *</div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">CodeGenFunction::EmitNounwindRuntimeCall</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *callee,</div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>                                          <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<llvm::Value*></a> args,</div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>                                          <span class="keyword">const</span> llvm::Twine &name) {</div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>   llvm::CallInst *call = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab55d82e1063f29b5c252f586c9c9bee9">EmitRuntimeCall</a>(callee, args, name);</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>   call->setDoesNotThrow();</div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>   <span class="keywordflow">return</span> call;</div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span> }</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span> <span class="comment"></span></div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span> <span class="comment">/// Emits a simple call (never an invoke) to the given no-arguments</span></div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span> <span class="comment">/// runtime function.</span></div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span> <span class="comment"></span>llvm::CallInst *</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab55d82e1063f29b5c252f586c9c9bee9">CodeGenFunction::EmitRuntimeCall</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *callee,</div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>                                  <span class="keyword">const</span> llvm::Twine &name) {</div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab55d82e1063f29b5c252f586c9c9bee9">EmitRuntimeCall</a>(callee, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<llvm::Value*></a>(), name);</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span> }</div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span> <span class="comment"></span></div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span> <span class="comment">/// Emits a simple call (never an invoke) to the given runtime</span></div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span> <span class="comment">/// function.</span></div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span> <span class="comment"></span>llvm::CallInst *</div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab55d82e1063f29b5c252f586c9c9bee9">CodeGenFunction::EmitRuntimeCall</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *callee,</div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>                                  <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<llvm::Value*></a> args,</div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>                                  <span class="keyword">const</span> llvm::Twine &name) {</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>   llvm::CallInst *call = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(callee, args, name);</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>   call->setCallingConv(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a8edd84af31019b2d64b66ddb14e2593b">getRuntimeCC</a>());</div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>   <span class="keywordflow">return</span> call;</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span> }</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span> <span class="comment"></span></div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span> <span class="comment">/// Emits a call or invoke to the given noreturn runtime function.</span></div>
+<div class="line"><a name="l02115"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a48489db9a91c645ab0cfb4ff42a723e3"> 2115</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a48489db9a91c645ab0cfb4ff42a723e3" title="Emits a call or invoke to the given noreturn runtime function.">CodeGenFunction::EmitNoreturnRuntimeCallOrInvoke</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *callee,</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>                                                <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<llvm::Value*></a> args) {</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab7586d3809e481824b31df7baf09bef7">getInvokeDest</a>()) {</div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>     llvm::InvokeInst *invoke = </div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInvoke(callee,</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>                            <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47a1c2350f7718da5bdbd856b6c302d3">getUnreachableBlock</a>(),</div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>                            <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab7586d3809e481824b31df7baf09bef7">getInvokeDest</a>(),</div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>                            args);</div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>     invoke->setDoesNotReturn();</div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>     invoke->setCallingConv(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a8edd84af31019b2d64b66ddb14e2593b">getRuntimeCC</a>());</div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>     llvm::CallInst *call = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(callee, args);</div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>     call->setDoesNotReturn();</div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>     call->setCallingConv(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a8edd84af31019b2d64b66ddb14e2593b">getRuntimeCC</a>());</div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateUnreachable();</div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>   }</div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span> }</div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span> <span class="comment"></span></div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span> <span class="comment">/// Emits a call or invoke instruction to the given nullary runtime</span></div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span> <span class="comment">/// function.</span></div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> <span class="comment"></span>llvm::CallSite</div>
+<div class="line"><a name="l02136"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac74333a992b2833e7f3d077336db306a"> 2136</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa5f13ed85d317257f72ba3a3f4e1d97e" title="Emits a call or invoke instruction to the given runtime function.">CodeGenFunction::EmitRuntimeCallOrInvoke</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *callee,</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>                                          <span class="keyword">const</span> Twine &name) {</div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>   <span class="keywordflow">return</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>(callee, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<llvm::Value*></a>(), name);</div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span> }</div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span> <span class="comment"></span></div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span> <span class="comment">/// Emits a call or invoke instruction to the given runtime function.</span></div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span> <span class="comment"></span>llvm::CallSite</div>
+<div class="line"><a name="l02143"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa5f13ed85d317257f72ba3a3f4e1d97e"> 2143</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa5f13ed85d317257f72ba3a3f4e1d97e" title="Emits a call or invoke instruction to the given runtime function.">CodeGenFunction::EmitRuntimeCallOrInvoke</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *callee,</div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>                                          <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<llvm::Value*></a> args,</div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>                                          <span class="keyword">const</span> Twine &name) {</div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>   llvm::CallSite callSite = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a44e7409b961b6723829abb1acd5e1db8">EmitCallOrInvoke</a>(callee, args, name);</div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>   callSite.setCallingConv(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a8edd84af31019b2d64b66ddb14e2593b">getRuntimeCC</a>());</div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>   <span class="keywordflow">return</span> callSite;</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span> }</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span> </div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span> llvm::CallSite</div>
+<div class="line"><a name="l02152"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a91750262ccea7958a1e941fe3941e2fb"> 2152</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a44e7409b961b6723829abb1acd5e1db8">CodeGenFunction::EmitCallOrInvoke</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Callee,</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>                                   <span class="keyword">const</span> Twine &Name) {</div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a44e7409b961b6723829abb1acd5e1db8">EmitCallOrInvoke</a>(Callee, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<llvm::Value *></a>(), Name);</div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span> }</div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span> <span class="comment"></span></div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span> <span class="comment">/// Emits a call or invoke instruction to the given function, depending</span></div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span> <span class="comment">/// on the current state of the EH stack.</span></div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span> <span class="comment"></span>llvm::CallSite</div>
+<div class="line"><a name="l02160"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a44e7409b961b6723829abb1acd5e1db8"> 2160</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a44e7409b961b6723829abb1acd5e1db8">CodeGenFunction::EmitCallOrInvoke</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Callee,</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>                                   <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<llvm::Value *></a> <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>                                   <span class="keyword">const</span> Twine &Name) {</div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>   llvm::BasicBlock *InvokeDest = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab7586d3809e481824b31df7baf09bef7">getInvokeDest</a>();</div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span> </div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>   llvm::Instruction *Inst;</div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>   <span class="keywordflow">if</span> (!InvokeDest)</div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>     Inst = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(Callee, Args, Name);</div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>   <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>     llvm::BasicBlock *ContBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"invoke.cont"</span>);</div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>     Inst = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInvoke(Callee, ContBB, InvokeDest, Args, Name);</div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(ContBB);</div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>   }</div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span> </div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>   <span class="comment">// In ObjC ARC mode with no ObjC ARC exception safety, tell the ARC</span></div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>   <span class="comment">// optimizer it can aggressively ignore unwind edges.</span></div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</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="l02177"></a><span class="lineno"> 2177</span>     AddObjCARCExceptionMetadata(Inst);</div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span> </div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>   <span class="keywordflow">return</span> Inst;</div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span> }</div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span> </div>
+<div class="line"><a name="l02182"></a><span class="lineno"><a class="code" href="CGCall_8cpp.html#a2ede551f910d4aec2f276e76ed2b929b"> 2182</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGCall_8cpp.html#a2ede551f910d4aec2f276e76ed2b929b">checkArgMatches</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Elt, <span class="keywordtype">unsigned</span> &ArgNo,</div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>                             llvm::FunctionType *FTy) {</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>   <span class="keywordflow">if</span> (ArgNo < FTy->getNumParams())</div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>     assert(Elt->getType() == FTy->getParamType(ArgNo));</div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>     assert(FTy->isVarArg());</div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>   ++ArgNo;</div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span> }</div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span> </div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span> <span class="keywordtype">void</span> CodeGenFunction::ExpandTypeToArgs(<a class="code" href="classclang_1_1QualType.html">QualType</a> Ty, <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV,</div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>                                        <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<llvm::Value *></a> &<a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>                                        llvm::FunctionType *IRFuncTy) {</div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *AT = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getAsConstantArrayType(Ty)) {</div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>     <span class="keywordtype">unsigned</span> NumElts = AT->getSize().getZExtValue();</div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> EltTy = AT->getElementType();</div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="SemaOverload_8cpp.html#a561f2d973ed74723ce0b1e1165c31804">Addr</a> = RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#ae56c586d571b8d6d1cea9a78b89d9439" title="getAggregateAddr() - Return the Value* of the address of the aggregate.">getAggregateAddr</a>();</div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> Elt = 0; Elt < NumElts; ++Elt) {</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EltAddr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP2_32(Addr, 0, Elt);</div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>       <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> EltRV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af2fc80cbb185fd1567879b4394997878">convertTempToRValue</a>(EltAddr, EltTy, <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="l02201"></a><span class="lineno"> 2201</span>       ExpandTypeToArgs(EltTy, EltRV, Args, IRFuncTy);</div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>     }</div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = Ty-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()) {</div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>     <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = RT->getDecl();</div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>     assert(RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a9de028e086fc0698020b18ebaf2806f5">isAggregate</a>() && <span class="stringliteral">"Unexpected rvalue during struct expansion"</span>);</div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#ae56c586d571b8d6d1cea9a78b89d9439" title="getAggregateAddr() - Return the Value* of the address of the aggregate.">getAggregateAddr</a>(), Ty);</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>     <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>()) {</div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *LargestFD = 0;</div>
+<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> UnionSize = <a class="code" href="classclang_1_1CharUnits.html#ae8fbc6063b513b85cd488904994ac8c2" title="Zero - Construct a CharUnits quantity of zero.">CharUnits::Zero</a>();</div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span> </div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> i = RD-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(), e = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>            i != e; ++i) {</div>
+<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *FD = *i;</div>
+<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>         assert(!FD-><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="l02216"></a><span class="lineno"> 2216</span>                <span class="stringliteral">"Cannot expand structure with bit-field members."</span>);</div>
+<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>         <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> FieldSize = <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>(FD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>         <span class="keywordflow">if</span> (UnionSize < FieldSize) {</div>
+<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>           UnionSize = FieldSize;</div>
+<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>           LargestFD = FD;</div>
+<div class="line"><a name="l02221"></a><span class="lineno"> 2221</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="keywordflow">if</span> (LargestFD) {</div>
+<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>         <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> FldRV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad04099f59689c86396530850a8842b43">EmitRValueForField</a>(LV, LargestFD, <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="l02225"></a><span class="lineno"> 2225</span>         ExpandTypeToArgs(LargestFD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(), FldRV, <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>, IRFuncTy);</div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>       }</div>
+<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> i = RD-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(), e = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>            i != e; ++i) {</div>
+<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>         <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *FD = *i;</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>         <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> FldRV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad04099f59689c86396530850a8842b43">EmitRValueForField</a>(LV, 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>());</div>
+<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>         ExpandTypeToArgs(FD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(), FldRV, <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>, IRFuncTy);</div>
+<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>       }</div>
+<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>     }</div>
+<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Ty-><a class="code" href="classclang_1_1Type.html#a292ac10726adf5426212b5c6ee14d9bb">isAnyComplexType</a>()) {</div>
+<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>     <a class="code" href="CGExprComplex_8cpp.html#a87a13d91cb316b5d407086ac759ec633">ComplexPairTy</a> CV = RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a602381c7fce92d8069962efbeb1d22f6">getComplexVal</a>();</div>
+<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>     Args.push_back(CV.first);</div>
+<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>     Args.push_back(CV.second);</div>
+<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>     assert(RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeb42ff4f93c5721cf244b300ba864e3f">isScalar</a>() &&</div>
+<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>            <span class="stringliteral">"Unexpected non-scalar rvalue during struct expansion."</span>);</div>
+<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span> </div>
+<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>     <span class="comment">// Insert a bitcast as needed.</span></div>
+<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>();</div>
+<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>     <span class="keywordflow">if</span> (Args.size() < IRFuncTy->getNumParams() &&</div>
+<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>         V->getType() != IRFuncTy->getParamType(Args.size()))</div>
+<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>       V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, IRFuncTy->getParamType(Args.size()));</div>
+<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span> </div>
+<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>     Args.push_back(V);</div>
+<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>   }</div>
+<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span> }</div>
+<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span> </div>
+<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span> </div>
+<div class="line"><a name="l02255"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb"> 2255</a></span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">CodeGenFunction::EmitCall</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="l02256"></a><span class="lineno"> 2256</span>                                  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Callee,</div>
+<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>                                  <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a> ReturnValue,</div>
+<div class="line"><a name="l02258"></a><span class="lineno"> 2258</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="l02259"></a><span class="lineno"> 2259</span>                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *TargetDecl,</div>
+<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>                                  llvm::Instruction **callOrInvoke) {</div>
+<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>   <span class="comment">// FIXME: We no longer need the types from CallArgs; lift up and simplify.</span></div>
+<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Value*, 16></a> <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>;</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">// Handle struct-return functions by passing a pointer to the</span></div>
+<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>   <span class="comment">// location that we would like to return into.</span></div>
+<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> RetTy = CallInfo.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a30c5ff80d845c6b4a36f1628651f8fed">getReturnType</a>();</div>
+<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html">ABIArgInfo</a> &RetAI = CallInfo.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ac0f497df111824e55810d0e389f8b7ae">getReturnInfo</a>();</div>
+<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span> </div>
+<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>   <span class="comment">// IRArgNo - Keep track of the argument number in the callee we're looking at.</span></div>
+<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>   <span class="keywordtype">unsigned</span> IRArgNo = 0;</div>
+<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>   llvm::FunctionType *IRFuncTy =</div>
+<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>     cast<llvm::FunctionType>(</div>
+<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>                   cast<llvm::PointerType>(Callee->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>());</div>
+<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span> </div>
+<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>   <span class="comment">// If the call returns a temporary with struct return, create a temporary</span></div>
+<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>   <span class="comment">// alloca to hold the result, unless one is given to us.</span></div>
+<div class="line"><a name="l02277"></a><span class="lineno"> 2277</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#abff43a999a921f0ca833d064865e43a6">ReturnTypeUsesSRet</a>(CallInfo)) {</div>
+<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> = ReturnValue.<a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a39550f5aa0eb32d5b27eb94571e68058">getValue</a>();</div>
+<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>     <span class="keywordflow">if</span> (!Value)</div>
+<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>       Value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(RetTy);</div>
+<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>     Args.push_back(Value);</div>
+<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>     <a class="code" href="CGCall_8cpp.html#a2ede551f910d4aec2f276e76ed2b929b">checkArgMatches</a>(Value, IRArgNo, IRFuncTy);</div>
+<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>   }</div>
+<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span> </div>
+<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>   assert(CallInfo.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a6bc6f3a652408934a6a71cb40db48bf8">arg_size</a>() == CallArgs.size() &&</div>
+<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>          <span class="stringliteral">"Mismatch between function signature & arguments."</span>);</div>
+<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a65e9af9d90f96254d71c45f2669d3115">CGFunctionInfo::const_arg_iterator</a> info_it = CallInfo.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ae79a956b6ca82977dc154183144c62fe">arg_begin</a>();</div>
+<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>   <span class="keywordflow">for</span> (CallArgList::const_iterator I = CallArgs.begin(), E = CallArgs.end();</div>
+<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>        I != E; ++I, ++info_it) {</div>
+<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html">ABIArgInfo</a> &ArgInfo = info_it->info;</div>
+<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>     <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV = I->RV;</div>
+<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span> </div>
+<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> TypeAlign = <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>(I->Ty);</div>
+<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span> </div>
+<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>     <span class="comment">// Insert a padding argument to ensure proper alignment.</span></div>
+<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>     <span class="keywordflow">if</span> (llvm::Type *PaddingType = ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#aea38a545d30c2c9b7c587bb3cb44e549">getPaddingType</a>()) {</div>
+<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>       Args.push_back(llvm::UndefValue::get(PaddingType));</div>
+<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>       ++IRArgNo;</div>
+<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>     }</div>
+<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span> </div>
+<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>     <span class="keywordflow">switch</span> (ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a5a95c44143588f81827dc8aeda02d3d0">getKind</a>()) {</div>
+<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cadae4ef4ee3f65e068672fa51f8aaca15">ABIArgInfo::Indirect</a>: {</div>
+<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>       <span class="keywordflow">if</span> (RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeb42ff4f93c5721cf244b300ba864e3f">isScalar</a>() || RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a4405b3fcd6b3d8228f1157469142826d">isComplex</a>()) {</div>
+<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>         <span class="comment">// Make a temporary alloca to pass the argument.</span></div>
+<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>         llvm::AllocaInst *AI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(I->Ty);</div>
+<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>         <span class="keywordflow">if</span> (ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#afa125e330e08f23880af60bcf59cd4b3">getIndirectAlign</a>() > AI->getAlignment())</div>
+<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>           AI->setAlignment(ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#afa125e330e08f23880af60bcf59cd4b3">getIndirectAlign</a>());</div>
+<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>         Args.push_back(AI);</div>
+<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span> </div>
+<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>         <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> argLV =</div>
+<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(Args.back(), I->Ty, TypeAlign);</div>
+<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>         </div>
+<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>         <span class="keywordflow">if</span> (RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeb42ff4f93c5721cf244b300ba864e3f">isScalar</a>())</div>
+<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>(), argLV, <span class="comment">/*init*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02316"></a><span class="lineno"> 2316</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>(RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a602381c7fce92d8069962efbeb1d22f6">getComplexVal</a>(), argLV, <span class="comment">/*init*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>         </div>
+<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>         <span class="comment">// Validate argument match.</span></div>
+<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>         <a class="code" href="CGCall_8cpp.html#a2ede551f910d4aec2f276e76ed2b929b">checkArgMatches</a>(AI, IRArgNo, IRFuncTy);</div>
+<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>         <span class="comment">// We want to avoid creating an unnecessary temporary+copy here;</span></div>
+<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>         <span class="comment">// however, we need one in three cases:</span></div>
+<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>         <span class="comment">// 1. If the argument is not byval, and we are required to copy the</span></div>
+<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>         <span class="comment">//    source.  (This case doesn't occur on any common architecture.)</span></div>
+<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>         <span class="comment">// 2. If the argument is byval, RV is not sufficiently aligned, and</span></div>
+<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>         <span class="comment">//    we cannot force it to be sufficiently aligned.</span></div>
+<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>         <span class="comment">// 3. If the argument is byval, but RV is located in an address space</span></div>
+<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>         <span class="comment">//    different than that of the argument (0).</span></div>
+<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Addr = RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#ae56c586d571b8d6d1cea9a78b89d9439" title="getAggregateAddr() - Return the Value* of the address of the aggregate.">getAggregateAddr</a>();</div>
+<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>         <span class="keywordtype">unsigned</span> Align = ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#afa125e330e08f23880af60bcf59cd4b3">getIndirectAlign</a>();</div>
+<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>         <span class="keyword">const</span> llvm::DataLayout *TD = &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>();</div>
+<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>         <span class="keyword">const</span> <span class="keywordtype">unsigned</span> RVAddrSpace = Addr->getType()->getPointerAddressSpace();</div>
+<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>         <span class="keyword">const</span> <span class="keywordtype">unsigned</span> ArgAddrSpace = (IRArgNo < IRFuncTy->getNumParams() ?</div>
+<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>           IRFuncTy->getParamType(IRArgNo)->getPointerAddressSpace() : 0);</div>
+<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>         <span class="keywordflow">if</span> ((!ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a055a848f632cf31cdb41410ab9b3704c">getIndirectByVal</a>() && I->NeedsCopy) ||</div>
+<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>             (ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a055a848f632cf31cdb41410ab9b3704c">getIndirectByVal</a>() && TypeAlign.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>() < Align &&</div>
+<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>              llvm::getOrEnforceKnownAlignment(Addr, Align, TD) < Align) ||</div>
+<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>              (ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a055a848f632cf31cdb41410ab9b3704c">getIndirectByVal</a>() && (RVAddrSpace != ArgAddrSpace))) {</div>
+<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>           <span class="comment">// Create an aligned temporary, and copy to it.</span></div>
+<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>           llvm::AllocaInst *AI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(I->Ty);</div>
+<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>           <span class="keywordflow">if</span> (Align > AI->getAlignment())</div>
+<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>             AI->setAlignment(Align);</div>
+<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>           Args.push_back(AI);</div>
+<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12ee175c3e6e4041476f5d3af692a70a">EmitAggregateCopy</a>(AI, Addr, I->Ty, RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a390f53203194bb27a394bd9f77f59156">isVolatileQualified</a>());</div>
+<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>               </div>
+<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>           <span class="comment">// Validate argument match.</span></div>
+<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>           <a class="code" href="CGCall_8cpp.html#a2ede551f910d4aec2f276e76ed2b929b">checkArgMatches</a>(AI, IRArgNo, IRFuncTy);</div>
+<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>           <span class="comment">// Skip the extra memcpy call.</span></div>
+<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>           Args.push_back(Addr);</div>
+<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>           </div>
+<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>           <span class="comment">// Validate argument match.</span></div>
+<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>           <a class="code" href="CGCall_8cpp.html#a2ede551f910d4aec2f276e76ed2b929b">checkArgMatches</a>(Addr, IRArgNo, IRFuncTy);</div>
+<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>         }</div>
+<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>       }</div>
+<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>     }</div>
+<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span> </div>
+<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca163f4f084f0a9d023f08f225e8f86623">ABIArgInfo::Ignore</a>:</div>
+<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span> </div>
+<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca149a9e29cad3ccc4597b88d5cf507d94">ABIArgInfo::Extend</a>:</div>
+<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cafd121945c5d2ff7deee51a3616c13fe3">ABIArgInfo::Direct</a>: {</div>
+<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>       <span class="keywordflow">if</span> (!isa<llvm::StructType>(ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>()) &&</div>
+<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>           ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>() == <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(info_it->type) &&</div>
+<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>           ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a3b66257410f8756458e957da5f824c33">getDirectOffset</a>() == 0) {</div>
+<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V;</div>
+<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>         <span class="keywordflow">if</span> (RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeb42ff4f93c5721cf244b300ba864e3f">isScalar</a>())</div>
+<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>           V = RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>();</div>
+<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>           V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#ae56c586d571b8d6d1cea9a78b89d9439" title="getAggregateAddr() - Return the Value* of the address of the aggregate.">getAggregateAddr</a>());</div>
+<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>         </div>
+<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>         <span class="comment">// If the argument doesn't match, perform a bitcast to coerce it.  This</span></div>
+<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>         <span class="comment">// can happen due to trivial type mismatches.</span></div>
+<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>         <span class="keywordflow">if</span> (IRArgNo < IRFuncTy->getNumParams() &&</div>
+<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>             V->getType() != IRFuncTy->getParamType(IRArgNo))</div>
+<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>           V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, IRFuncTy->getParamType(IRArgNo));</div>
+<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>         Args.push_back(V);</div>
+<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>         </div>
+<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>         <a class="code" href="CGCall_8cpp.html#a2ede551f910d4aec2f276e76ed2b929b">checkArgMatches</a>(V, IRArgNo, IRFuncTy);</div>
+<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>         <span class="keywordflow">break</span>;</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> </div>
+<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>       <span class="comment">// FIXME: Avoid the conversion through memory if possible.</span></div>
+<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SrcPtr;</div>
+<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>       <span class="keywordflow">if</span> (RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeb42ff4f93c5721cf244b300ba864e3f">isScalar</a>() || RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a4405b3fcd6b3d8228f1157469142826d">isComplex</a>()) {</div>
+<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>         SrcPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(I->Ty, <span class="stringliteral">"coerce"</span>);</div>
+<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>         <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> SrcLV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(SrcPtr, I->Ty, TypeAlign);</div>
+<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>         <span class="keywordflow">if</span> (RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeb42ff4f93c5721cf244b300ba864e3f">isScalar</a>()) {</div>
+<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>(), SrcLV, <span class="comment">/*init*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02392"></a><span class="lineno"> 2392</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>(RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a602381c7fce92d8069962efbeb1d22f6">getComplexVal</a>(), SrcLV, <span class="comment">/*init*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>         }</div>
+<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>       } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>         SrcPtr = RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#ae56c586d571b8d6d1cea9a78b89d9439" title="getAggregateAddr() - Return the Value* of the address of the aggregate.">getAggregateAddr</a>();</div>
+<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span> </div>
+<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>       <span class="comment">// If the value is offset in memory, apply the offset now.</span></div>
+<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>       <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span> Offs = ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a3b66257410f8756458e957da5f824c33">getDirectOffset</a>()) {</div>
+<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>         SrcPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(SrcPtr, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt8PtrTy());</div>
+<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>         SrcPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP1_32(SrcPtr, Offs);</div>
+<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>         SrcPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(SrcPtr,</div>
+<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>                        llvm::PointerType::getUnqual(ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>()));</div>
+<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span> </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="comment">// If the coerce-to type is a first class aggregate, we flatten it and</span></div>
+<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>       <span class="comment">// pass the elements. Either way is semantically identical, but fast-isel</span></div>
+<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>       <span class="comment">// and the optimizer generally likes scalar values better than FCAs.</span></div>
+<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>       <span class="keywordflow">if</span> (llvm::StructType *STy =</div>
+<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>             dyn_cast<llvm::StructType>(ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>())) {</div>
+<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>         llvm::Type *SrcTy =</div>
+<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>           cast<llvm::PointerType>(SrcPtr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>         uint64_t SrcSize = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getTypeAllocSize(SrcTy);</div>
+<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>         uint64_t DstSize = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getTypeAllocSize(STy);</div>
+<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span> </div>
+<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>         <span class="comment">// If the source type is smaller than the destination type of the</span></div>
+<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>         <span class="comment">// coerce-to logic, copy the source value into a temp alloca the size</span></div>
+<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>         <span class="comment">// of the destination type to allow loading all of it. The bits past</span></div>
+<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>         <span class="comment">// the source value are left undef.</span></div>
+<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>         <span class="keywordflow">if</span> (SrcSize < DstSize) {</div>
+<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>           llvm::AllocaInst *TempAlloca</div>
+<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>             = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(STy, SrcPtr->getName() + <span class="stringliteral">".coerce"</span>);</div>
+<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemCpy(TempAlloca, SrcPtr, SrcSize, 0);</div>
+<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>           SrcPtr = TempAlloca;</div>
+<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>           SrcPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(SrcPtr,</div>
+<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>                                          llvm::PointerType::getUnqual(STy));</div>
+<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>         }</div>
+<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span> </div>
+<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = STy->getNumElements(); i != e; ++i) {</div>
+<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EltPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP2_32(SrcPtr, 0, i);</div>
+<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>           llvm::LoadInst *LI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(EltPtr);</div>
+<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>           <span class="comment">// We don't know what we're loading from.</span></div>
+<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>           LI->setAlignment(1);</div>
+<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>           Args.push_back(LI);</div>
+<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>           </div>
+<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>           <span class="comment">// Validate argument match.</span></div>
+<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>           <a class="code" href="CGCall_8cpp.html#a2ede551f910d4aec2f276e76ed2b929b">checkArgMatches</a>(LI, IRArgNo, IRFuncTy);</div>
+<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>         }</div>
+<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>         <span class="comment">// In the simple case, just pass the coerced loaded value.</span></div>
+<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>         Args.push_back(<a class="code" href="CGCall_8cpp.html#aead940bcd5c3067308135fdc10a1f3df">CreateCoercedLoad</a>(SrcPtr, ArgInfo.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>(),</div>
+<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>                                          *<span class="keyword">this</span>));</div>
+<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>         </div>
+<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>         <span class="comment">// Validate argument match.</span></div>
+<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>         <a class="code" href="CGCall_8cpp.html#a2ede551f910d4aec2f276e76ed2b929b">checkArgMatches</a>(Args.back(), IRArgNo, IRFuncTy);</div>
+<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>       }</div>
+<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span> </div>
+<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>     }</div>
+<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span> </div>
+<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca9afd96bf046f2e86cd8f89e924c4ec6c">ABIArgInfo::Expand</a>:</div>
+<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>       ExpandTypeToArgs(I->Ty, RV, Args, IRFuncTy);</div>
+<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>       IRArgNo = Args.size();</div>
+<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>     }</div>
+<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>   }</div>
+<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span> </div>
+<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>   <span class="keywordflow">if</span> (!CallArgs.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a892d76ca481dbcb21661322e76726021">getCleanupsToDeactivate</a>().empty())</div>
+<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>     <a class="code" href="CGCall_8cpp.html#a89128c7268e165a37bacda8644d7bbea">deactivateArgCleanupsBeforeCall</a>(*<span class="keyword">this</span>, CallArgs);</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">// If the callee is a bitcast of a function to a varargs pointer to function</span></div>
+<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>   <span class="comment">// type, check to see if we can remove the bitcast.  This handles some cases</span></div>
+<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>   <span class="comment">// with unprototyped functions.</span></div>
+<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>   <span class="keywordflow">if</span> (llvm::ConstantExpr *CE = dyn_cast<llvm::ConstantExpr>(Callee))</div>
+<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>     <span class="keywordflow">if</span> (llvm::Function *CalleeF = dyn_cast<llvm::Function>(CE->getOperand(0))) {</div>
+<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>       llvm::PointerType *CurPT=cast<llvm::PointerType>(Callee->getType());</div>
+<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>       llvm::FunctionType *CurFT =</div>
+<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>         cast<llvm::FunctionType>(CurPT->getElementType());</div>
+<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>       llvm::FunctionType *ActualFT = CalleeF->getFunctionType();</div>
+<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span> </div>
+<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>       <span class="keywordflow">if</span> (CE->getOpcode() == llvm::Instruction::BitCast &&</div>
+<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>           ActualFT->getReturnType() == CurFT->getReturnType() &&</div>
+<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>           ActualFT->getNumParams() == CurFT->getNumParams() &&</div>
+<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>           ActualFT->getNumParams() == Args.size() &&</div>
+<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>           (CurFT->isVarArg() || !ActualFT->isVarArg())) {</div>
+<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>         <span class="keywordtype">bool</span> ArgsMatch = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = ActualFT->getNumParams(); i != e; ++i)</div>
+<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>           <span class="keywordflow">if</span> (ActualFT->getParamType(i) != CurFT->getParamType(i)) {</div>
+<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>             ArgsMatch = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>             <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>           }</div>
+<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span> </div>
+<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>         <span class="comment">// Strip the cast if we can get away with it.  This is a nice cleanup,</span></div>
+<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>         <span class="comment">// but also allows us to inline the function at -O0 if it is marked</span></div>
+<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>         <span class="comment">// always_inline.</span></div>
+<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>         <span class="keywordflow">if</span> (ArgsMatch)</div>
+<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>           Callee = CalleeF;</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>     }</div>
+<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span> </div>
+<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>   <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25b" title="CallingConv - Specifies the calling convention that a function uses.">CallingConv</a>;</div>
+<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>   <a class="code" href="classllvm_1_1SmallVector.html">CodeGen::AttributeListType</a> <a class="code" href="classclang_1_1AttributeList.html">AttributeList</a>;</div>
+<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0b7d538c3e2716ec3a91c8cb74334e63">ConstructAttributeList</a>(CallInfo, TargetDecl, AttributeList,</div>
+<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>                              CallingConv, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>   llvm::AttributeSet Attrs = llvm::AttributeSet::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(),</div>
+<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>                                                      AttributeList);</div>
+<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span> </div>
+<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>   llvm::BasicBlock *InvokeDest = 0;</div>
+<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>   <span class="keywordflow">if</span> (!Attrs.hasAttribute(llvm::AttributeSet::FunctionIndex,</div>
+<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>                           llvm::Attribute::NoUnwind))</div>
+<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>     InvokeDest = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab7586d3809e481824b31df7baf09bef7">getInvokeDest</a>();</div>
+<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span> </div>
+<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>   llvm::CallSite CS;</div>
+<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>   <span class="keywordflow">if</span> (!InvokeDest) {</div>
+<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>     CS = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(Callee, Args);</div>
+<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>     llvm::BasicBlock *Cont = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"invoke.cont"</span>);</div>
+<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>     CS = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInvoke(Callee, Cont, InvokeDest, Args);</div>
+<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(Cont);</div>
+<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>   }</div>
+<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>   <span class="keywordflow">if</span> (callOrInvoke)</div>
+<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>     *callOrInvoke = CS.getInstruction();</div>
+<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span> </div>
+<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>   CS.setAttributes(Attrs);</div>
+<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>   CS.setCallingConv(static_cast<llvm::CallingConv::ID>(CallingConv));</div>
+<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span> </div>
+<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>   <span class="comment">// In ObjC ARC mode with no ObjC ARC exception safety, tell the ARC</span></div>
+<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>   <span class="comment">// optimizer it can aggressively ignore unwind edges.</span></div>
+<div class="line"><a name="l02520"></a><span class="lineno"> 2520</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="l02521"></a><span class="lineno"> 2521</span>     AddObjCARCExceptionMetadata(CS.getInstruction());</div>
+<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span> </div>
+<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>   <span class="comment">// If the call doesn't return, finish the basic block and clear the</span></div>
+<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>   <span class="comment">// insertion point; this allows the rest of IRgen to discard</span></div>
+<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>   <span class="comment">// unreachable code.</span></div>
+<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>   <span class="keywordflow">if</span> (CS.doesNotReturn()) {</div>
+<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateUnreachable();</div>
+<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.ClearInsertionPoint();</div>
+<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span> </div>
+<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>     <span class="comment">// FIXME: For now, emit a dummy basic block because expr emitters in</span></div>
+<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>     <span class="comment">// generally are not ready to handle emitting expressions at unreachable</span></div>
+<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>     <span class="comment">// points.</span></div>
+<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aebc753533aefb02b31dc6d12b1fb6e06">EnsureInsertPoint</a>();</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>     <span class="comment">// Return a reasonable RValue.</span></div>
+<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aadc4775eb7d01ddeba9a00de640cff38" title="GetUndefRValue - Get an appropriate 'undef' rvalue for the given type.">GetUndefRValue</a>(RetTy);</div>
+<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>   }</div>
+<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span> </div>
+<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>   llvm::Instruction *CI = CS.getInstruction();</div>
+<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.isNamePreserving() && !CI->getType()->isVoidTy())</div>
+<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>     CI->setName(<span class="stringliteral">"call"</span>);</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>   <span class="comment">// Emit any writebacks immediately.  Arguably this should happen</span></div>
+<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>   <span class="comment">// after any return-value munging.</span></div>
+<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>   <span class="keywordflow">if</span> (CallArgs.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#ad710144accf0210736814ffc2d9dc6ed">hasWritebacks</a>())</div>
+<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>     <a class="code" href="CGCall_8cpp.html#a7fabf77ab98db71c40568ac24de30a0d">emitWritebacks</a>(*<span class="keyword">this</span>, CallArgs);</div>
+<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span> </div>
+<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>   <span class="keywordflow">switch</span> (RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a5a95c44143588f81827dc8aeda02d3d0">getKind</a>()) {</div>
+<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cadae4ef4ee3f65e068672fa51f8aaca15">ABIArgInfo::Indirect</a>:</div>
+<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af2fc80cbb185fd1567879b4394997878">convertTempToRValue</a>(Args[0], RetTy, <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="l02551"></a><span class="lineno"> 2551</span> </div>
+<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca163f4f084f0a9d023f08f225e8f86623">ABIArgInfo::Ignore</a>:</div>
+<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>     <span class="comment">// If we are ignoring an argument that had a result, make sure to</span></div>
+<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>     <span class="comment">// construct the appropriate return value for our caller.</span></div>
+<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aadc4775eb7d01ddeba9a00de640cff38" title="GetUndefRValue - Get an appropriate 'undef' rvalue for the given type.">GetUndefRValue</a>(RetTy);</div>
+<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span> </div>
+<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca149a9e29cad3ccc4597b88d5cf507d94">ABIArgInfo::Extend</a>:</div>
+<div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cafd121945c5d2ff7deee51a3616c13fe3">ABIArgInfo::Direct</a>: {</div>
+<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>     llvm::Type *RetIRTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(RetTy);</div>
+<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>     <span class="keywordflow">if</span> (RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>() == RetIRTy && RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a3b66257410f8756458e957da5f824c33">getDirectOffset</a>() == 0) {</div>
+<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>       <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1be3afe566ffd19818efe9f6b07a8ea">getEvaluationKind</a>(RetTy)) {</div>
+<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9ad0c74fbe072df321c2078f52f052d07c">TEK_Complex</a>: {</div>
+<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Real = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateExtractValue(CI, 0);</div>
+<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Imag = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateExtractValue(CI, 1);</div>
+<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>         <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a7e337836177fcde90cd36b8a241ab510">RValue::getComplex</a>(std::make_pair(Real, Imag));</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_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9a6bdd6972cc7f7a6326c359a2a07df29a">TEK_Aggregate</a>: {</div>
+<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DestPtr = ReturnValue.<a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a39550f5aa0eb32d5b27eb94571e68058">getValue</a>();</div>
+<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>         <span class="keywordtype">bool</span> DestIsVolatile = ReturnValue.<a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#abc453d8c7e7808f6c9e250642e97d9b9">isVolatile</a>();</div>
+<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span> </div>
+<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>         <span class="keywordflow">if</span> (!DestPtr) {</div>
+<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>           DestPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(RetTy, <span class="stringliteral">"agg.tmp"</span>);</div>
+<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>           DestIsVolatile = <span class="keyword">false</span>;</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>         <a class="code" href="CGCall_8cpp.html#a9d1441ccc35689e73b7eed9529a4faab">BuildAggStore</a>(*<span class="keyword">this</span>, CI, DestPtr, DestIsVolatile, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>         <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeeb48f4fb8409aca54d4611ad4a28559">RValue::getAggregate</a>(DestPtr);</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="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9aa4a7b0b5cf5c3854e35ca0c172e93269">TEK_Scalar</a>: {</div>
+<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>         <span class="comment">// If the argument doesn't match, perform a bitcast to coerce it.  This</span></div>
+<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>         <span class="comment">// can happen due to trivial type mismatches.</span></div>
+<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = CI;</div>
+<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>         <span class="keywordflow">if</span> (V->getType() != RetIRTy)</div>
+<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>           V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, RetIRTy);</div>
+<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>         <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(V);</div>
+<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>       }</div>
+<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>       }</div>
+<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>       llvm_unreachable(<span class="stringliteral">"bad evaluation kind"</span>);</div>
+<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>     }</div>
+<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span> </div>
+<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DestPtr = ReturnValue.<a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a39550f5aa0eb32d5b27eb94571e68058">getValue</a>();</div>
+<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>     <span class="keywordtype">bool</span> DestIsVolatile = ReturnValue.<a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#abc453d8c7e7808f6c9e250642e97d9b9">isVolatile</a>();</div>
+<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span> </div>
+<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>     <span class="keywordflow">if</span> (!DestPtr) {</div>
+<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>       DestPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(RetTy, <span class="stringliteral">"coerce"</span>);</div>
+<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>       DestIsVolatile = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02596"></a><span class="lineno"> 2596</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>     <span class="comment">// If the value is offset in memory, apply the offset now.</span></div>
+<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *StorePtr = DestPtr;</div>
+<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>     <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span> Offs = RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a3b66257410f8756458e957da5f824c33">getDirectOffset</a>()) {</div>
+<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>       StorePtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(StorePtr, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt8PtrTy());</div>
+<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>       StorePtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP1_32(StorePtr, Offs);</div>
+<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>       StorePtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(StorePtr,</div>
+<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>                          llvm::PointerType::getUnqual(RetAI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a618e165187732abac503608251e89c35">getCoerceToType</a>()));</div>
+<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>     }</div>
+<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>     <a class="code" href="CGCall_8cpp.html#a1e1bec8e68d7f4df598891783c488e60">CreateCoercedStore</a>(CI, StorePtr, DestIsVolatile, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span> </div>
+<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af2fc80cbb185fd1567879b4394997878">convertTempToRValue</a>(DestPtr, RetTy, <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="l02609"></a><span class="lineno"> 2609</span>   }</div>
+<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span> </div>
+<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687ca9afd96bf046f2e86cd8f89e924c4ec6c">ABIArgInfo::Expand</a>:</div>
+<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>     llvm_unreachable(<span class="stringliteral">"Invalid ABI kind for return argument"</span>);</div>
+<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>   }</div>
+<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span> </div>
+<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>   llvm_unreachable(<span class="stringliteral">"Unhandled ABIArgInfo::Kind"</span>);</div>
+<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span> }</div>
+<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span> </div>
+<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span> <span class="comment">/* VarArg handling */</span></div>
+<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span> </div>
+<div class="line"><a name="l02620"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a876a331687fa75f496f05de99bb2a0e0"> 2620</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a876a331687fa75f496f05de99bb2a0e0">CodeGenFunction::EmitVAArg</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VAListAddr, <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty) {</div>
+<div class="line"><a name="l02621"></a><span class="lineno"> 2621</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#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a6590a13901a37293b67eb2d3a0a6836f">getABIInfo</a>().<a class="code" href="classclang_1_1ABIInfo.html#a43ce79e3693f78ae212b96e2e09bade9">EmitVAArg</a>(VAListAddr, Ty, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:22 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCall_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCall_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCall_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCall_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,678 @@
+<!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: CGCall.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">CGCall.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGCall_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/CGCall.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/Release+Asserts/CGCall.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  CGCall.cpp CGCall.h CGValue.h \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/Support/Casting.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/Support/DataTypes.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</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="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</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="l00064"></a><span class="lineno">   64</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="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.h \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc \</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h \</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h \</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>  /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h \</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>  /home/tstellar/llvm/include/llvm/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.h \</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>  /home/tstellar/llvm/include/llvm/IR/Use.h EHScopeStack.h \</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>  /home/tstellar/llvm/include/llvm/IR/BasicBlock.h \</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>  /home/tstellar/llvm/include/llvm/ADT/ilist.h \</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>  /home/tstellar/llvm/include/llvm/IR/Instruction.h \</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>  /home/tstellar/llvm/include/llvm/ADT/ilist_node.h \</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>  /home/tstellar/llvm/include/llvm/IR/User.h \</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>  /home/tstellar/llvm/include/llvm/Support/DebugLoc.h \</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>  /home/tstellar/llvm/include/llvm/IR/Instruction.def \</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>  /home/tstellar/llvm/include/llvm/IR/SymbolTableListTraits.h \</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>  /home/tstellar/llvm/include/llvm/IR/Instructions.h \</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>  /home/tstellar/llvm/include/llvm/IR/Attributes.h \</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</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="l00117"></a><span class="lineno">  117</span>  /home/tstellar/llvm/include/llvm/IR/DerivedTypes.h \</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>  /home/tstellar/llvm/include/llvm/IR/Type.h \</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>  /home/tstellar/llvm/include/llvm/IR/InstrTypes.h \</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>  /home/tstellar/llvm/include/llvm/IR/OperandTraits.h ABIInfo.h CGCXXABI.h \
+ CodeGenFunction.h CGBuilder.h \</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>  /home/tstellar/llvm/include/llvm/IR/IRBuilder.h \</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>  /home/tstellar/llvm/include/llvm/IR/DataLayout.h \</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>  /home/tstellar/llvm/include/llvm/Pass.h \</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>  /home/tstellar/llvm/include/llvm/PassSupport.h \</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>  /home/tstellar/llvm/include/llvm/Pass.h \</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>  /home/tstellar/llvm/include/llvm/InitializePasses.h \</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>  /home/tstellar/llvm/include/llvm/PassRegistry.h \</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>  /home/tstellar/llvm/include/llvm/Support/Atomic.h \</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>  /home/tstellar/llvm/include/llvm/Support/Valgrind.h \</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>  /home/tstellar/llvm/include/llvm/PassAnalysisSupport.h \</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>  /home/tstellar/llvm/include/llvm/IR/LLVMContext.h \</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>  /home/tstellar/llvm/include/llvm/IR/Operator.h \</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>  /home/tstellar/llvm/include/llvm/IR/Constants.h \</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>  /home/tstellar/llvm/include/llvm/IR/Constant.h \</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>  /home/tstellar/llvm/include/llvm/Support/GetElementPtrTypeIterator.h \</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>  /home/tstellar/llvm/include/llvm/Support/ConstantFolder.h \</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>  /home/tstellar/llvm/include/llvm/Support/ValueHandle.h CGDebugInfo.h \</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h \</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h \</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h \</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h \</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h \</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h \</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def \</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>  /home/tstellar/llvm/include/llvm/DIBuilder.h \</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>  /home/tstellar/llvm/include/llvm/DebugInfo.h \</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>  /home/tstellar/llvm/include/llvm/IR/Metadata.h \</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>  /home/tstellar/llvm/include/llvm/Support/Dwarf.h CodeGenModule.h \
+ CGVTables.h \</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BaseSubobject.h \</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/GlobalDecl.h \</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.h \</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.h \</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.h \</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.h \</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.h \</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.h \</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclObjC.h \</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/<a class="code" href="namespaceclang.html#a0bca8d4a06a5e7175d2177c94788c9b4" title="Whether all locations of the selector identifiers are in a "standard" position.">SelectorLocationsKind</a>.h \</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.h \</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/VTableBuilder.h \</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CXXInheritance.h \</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.h \</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>  /home/tstellar/llvm/include/llvm/ADT/MapVector.h \</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>  /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h \</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>  /home/tstellar/llvm/include/llvm/ADT/SetVector.h \</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>  /home/tstellar/llvm/include/llvm/IR/GlobalVariable.h \</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>  /home/tstellar/llvm/include/llvm/IR/GlobalValue.h CodeGenTypes.h \</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.h \</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>  /home/tstellar/llvm/include/llvm/IR/Module.h \</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>  /home/tstellar/llvm/include/llvm/IR/Function.h \</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>  /home/tstellar/llvm/include/llvm/IR/Argument.h \</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>  /home/tstellar/llvm/include/llvm/IR/GlobalAlias.h \</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.h \</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrKinds.h \</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc \</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>  /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h \</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc \</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Mangle.h \</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Module.h \</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>  /home/tstellar/llvm/include/llvm/Transforms/Utils/SpecialCaseList.h \</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprObjC.h \</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetInfo.h \</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetCXXABI.h \</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetOptions.h \</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>  /home/tstellar/llvm/include/llvm/Support/Debug.h TargetInfo.h \</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>  /home/tstellar/llvm/include/llvm/ADT/StringExtras.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/MC/SubtargetFeature.h \</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>  /home/tstellar/llvm/include/llvm/Support/CallSite.h \</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>  /home/tstellar/llvm/include/llvm/Transforms/Utils/Local.h</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> CGCall.h:</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> </div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> CGValue.h:</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h:</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> </div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h:</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.h:</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc:</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc:</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def:</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> </div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h:</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> </div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h:</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> </div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> </div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> /home/tstellar/llvm/include/llvm/ADT/APFloat.h:</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> </div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> /home/tstellar/llvm/include/llvm/ADT/APInt.h:</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> </div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> </div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> </div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> </div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> /home/tstellar/llvm/include/llvm/ADT/APSInt.h:</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> </div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> </div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h:</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h:</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h:</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> </div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h:</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> </div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> </div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def:</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> </div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h:</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> </div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def:</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> </div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> </div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> </div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> </div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> </div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h:</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> </div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> </div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> </div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> </div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc:</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h:</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> </div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> </div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> </div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> </div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.h:</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> </div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> /home/tstellar/llvm/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="l00298"></a><span class="lineno">  298</span> </div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h:</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> </div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> </div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h:</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> </div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h:</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> </div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h:</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> </div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h:</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> </div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h:</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> </div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h:</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> </div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h:</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> </div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<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="l00318"></a><span class="lineno">  318</span> </div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/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="l00320"></a><span class="lineno">  320</span> </div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span> </div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> </div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def:</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span> </div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> </div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> </div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> </div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> </div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h:</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> </div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h:</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h:</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> </div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.h:</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> </div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h:</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span> </div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h:</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span> </div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def:</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> </div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h:</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h:</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span> </div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h:</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> </div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc:</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> </div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h:</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> </div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h:</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> </div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h:</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> </div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h:</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span> </div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> /home/tstellar/llvm/include/llvm/ADT/Triple.h:</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> </div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> </div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def:</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span> </div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def:</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h:</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> </div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> </div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> </div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span> </div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> </div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> </div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span> </div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h:</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span> </div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h:</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span> </div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span> /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h:</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span> </div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span> /home/tstellar/llvm/include/llvm/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.h:</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> </div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span> /home/tstellar/llvm/include/llvm/IR/Use.h:</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span> </div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span> EHScopeStack.h:</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span> </div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> /home/tstellar/llvm/include/llvm/IR/BasicBlock.h:</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> </div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span> /home/tstellar/llvm/include/llvm/ADT/ilist.h:</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span> </div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> /home/tstellar/llvm/include/llvm/IR/Instruction.h:</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span> </div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span> /home/tstellar/llvm/include/llvm/ADT/ilist_node.h:</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span> </div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span> /home/tstellar/llvm/include/llvm/IR/User.h:</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> </div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span> /home/tstellar/llvm/include/llvm/Support/DebugLoc.h:</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> </div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span> /home/tstellar/llvm/include/llvm/IR/Instruction.def:</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> </div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> /home/tstellar/llvm/include/llvm/IR/SymbolTableListTraits.h:</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> </div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span> /home/tstellar/llvm/include/llvm/IR/Instructions.h:</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span> </div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> /home/tstellar/llvm/include/llvm/IR/Attributes.h:</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> </div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span> /home/tstellar/llvm/include/llvm/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="l00426"></a><span class="lineno">  426</span> </div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> /home/tstellar/llvm/include/llvm/IR/DerivedTypes.h:</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> </div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span> /home/tstellar/llvm/include/llvm/IR/Type.h:</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> </div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> /home/tstellar/llvm/include/llvm/IR/InstrTypes.h:</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> /home/tstellar/llvm/include/llvm/IR/OperandTraits.h:</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> ABIInfo.h:</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span> </div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span> CGCXXABI.h:</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span> </div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> CodeGenFunction.h:</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span> </div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span> CGBuilder.h:</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span> </div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span> /home/tstellar/llvm/include/llvm/IR/IRBuilder.h:</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span> </div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span> /home/tstellar/llvm/include/llvm/IR/DataLayout.h:</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span> </div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span> /home/tstellar/llvm/include/llvm/Pass.h:</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span> </div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span> /home/tstellar/llvm/include/llvm/PassSupport.h:</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span> </div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span> /home/tstellar/llvm/include/llvm/Pass.h:</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span> </div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span> /home/tstellar/llvm/include/llvm/InitializePasses.h:</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> </div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span> /home/tstellar/llvm/include/llvm/PassRegistry.h:</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> </div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span> /home/tstellar/llvm/include/llvm/Support/Atomic.h:</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span> </div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span> /home/tstellar/llvm/include/llvm/Support/Valgrind.h:</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span> </div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span> /home/tstellar/llvm/include/llvm/PassAnalysisSupport.h:</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> </div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span> /home/tstellar/llvm/include/llvm/IR/LLVMContext.h:</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span> </div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span> /home/tstellar/llvm/include/llvm/IR/Operator.h:</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span> </div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span> /home/tstellar/llvm/include/llvm/IR/Constants.h:</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span> </div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span> /home/tstellar/llvm/include/llvm/IR/Constant.h:</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span> </div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span> /home/tstellar/llvm/include/llvm/Support/GetElementPtrTypeIterator.h:</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span> </div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> /home/tstellar/llvm/include/llvm/Support/ConstantFolder.h:</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span> </div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span> /home/tstellar/llvm/include/llvm/Support/ValueHandle.h:</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span> </div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span> CGDebugInfo.h:</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span> </div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h:</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span> </div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h:</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h:</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span> </div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h:</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span> </div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h:</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span> </div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h:</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> </div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def:</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span> </div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h:</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> </div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def:</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> </div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> /home/tstellar/llvm/include/llvm/DIBuilder.h:</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> </div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span> /home/tstellar/llvm/include/llvm/DebugInfo.h:</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span> </div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span> /home/tstellar/llvm/include/llvm/IR/Metadata.h:</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span> </div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span> /home/tstellar/llvm/include/llvm/Support/Dwarf.h:</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> </div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> CodeGenModule.h:</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> </div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> CGVTables.h:</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> </div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BaseSubobject.h:</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span> </div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/GlobalDecl.h:</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> </div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.h:</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span> </div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.h:</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span> </div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.h:</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> </div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.h:</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span> </div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.h:</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span> </div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.h:</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span> </div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclObjC.h:</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span> </div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/<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="l00528"></a><span class="lineno">  528</span> </div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.h:</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> </div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/VTableBuilder.h:</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span> </div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CXXInheritance.h:</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span> </div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.h:</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span> </div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span> /home/tstellar/llvm/include/llvm/ADT/MapVector.h:</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span> </div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h:</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span> </div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h:</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span> </div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span> /home/tstellar/llvm/include/llvm/ADT/SetVector.h:</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span> </div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span> /home/tstellar/llvm/include/llvm/IR/GlobalVariable.h:</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span> </div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span> /home/tstellar/llvm/include/llvm/IR/GlobalValue.h:</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span> </div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span> CodeGenTypes.h:</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span> </div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.h:</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span> </div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span> /home/tstellar/llvm/include/llvm/IR/Module.h:</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span> </div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span> /home/tstellar/llvm/include/llvm/IR/Function.h:</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span> </div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span> /home/tstellar/llvm/include/llvm/IR/Argument.h:</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span> </div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span> /home/tstellar/llvm/include/llvm/IR/GlobalAlias.h:</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span> </div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.h:</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span> </div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrKinds.h:</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span> </div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc:</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span> </div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span> /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h:</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span> </div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc:</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span> </div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Mangle.h:</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span> </div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Module.h:</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span> </div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span> /home/tstellar/llvm/include/llvm/Transforms/Utils/SpecialCaseList.h:</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span> </div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprObjC.h:</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span> </div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetInfo.h:</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span> </div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetCXXABI.h:</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span> </div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetOptions.h:</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span> </div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span> /home/tstellar/llvm/include/llvm/Support/Debug.h:</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span> </div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span> TargetInfo.h:</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span> </div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span> /home/tstellar/llvm/include/llvm/ADT/StringExtras.h:</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span> </div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span> /home/tstellar/llvm/include/llvm/IR/InlineAsm.h:</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span> </div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span> /home/tstellar/llvm/include/llvm/MC/SubtargetFeature.h:</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span> </div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span> /home/tstellar/llvm/include/llvm/Support/CallSite.h:</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span> </div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span> /home/tstellar/llvm/include/llvm/Transforms/Utils/Local.h:</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span> </div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:22 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCall_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCall_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCall_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCall_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,229 @@
+<!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: CGCall.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">CGCall.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGCall_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">//===----- CGCall.h - Encapsulate calling convention details ----*- 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">// These classes wrap the information about a call or function</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">// definition used to handle ABI compliancy.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#ifndef CLANG_CODEGEN_CGCALL_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#define CLANG_CODEGEN_CGCALL_H</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="CGValue_8h.html">CGValue.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="EHScopeStack_8h.html">EHScopeStack.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="CanonicalType_8h.html">clang/AST/CanonicalType.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="Type_8h.html">clang/AST/Type.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "llvm/ADT/FoldingSet.h"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "llvm/IR/Value.h"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">// FIXME: Restructure so we don't have to expose so much stuff.</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "<a class="code" href="ABIInfo_8h.html">ABIInfo.h</a>"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">namespace </span>llvm {</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   <span class="keyword">class </span>AttributeSet;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="keyword">class </span>Function;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <span class="keyword">class </span>Type;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <span class="keyword">class </span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> }</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keyword">class </span>ASTContext;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="keyword">class </span>Decl;</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keyword">class </span>FunctionDecl;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keyword">class </span>ObjCMethodDecl;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keyword">class </span>VarDecl;</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">namespace </span>CodeGen {</div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="namespaceclang_1_1CodeGen.html#a8ceeac1c8678b2f4a29013bf63fb854a">   43</a></span>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::AttributeSet, 8></a> <a class="code" href="namespaceclang_1_1CodeGen.html#a8ceeac1c8678b2f4a29013bf63fb854a">AttributeListType</a>;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> </div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CallArg.html">   45</a></span>   <span class="keyword">struct </span><a class="code" href="structclang_1_1CodeGen_1_1CallArg.html">CallArg</a> {</div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CallArg.html#ad04d36760f8243297c9916d7f3675a89">   46</a></span>     <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> <a class="code" href="structclang_1_1CodeGen_1_1CallArg.html#ad04d36760f8243297c9916d7f3675a89">RV</a>;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CallArg.html#a4a9cf77592f5be23605352672349ff18">   47</a></span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="structclang_1_1CodeGen_1_1CallArg.html#a4a9cf77592f5be23605352672349ff18">Ty</a>;</div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CallArg.html#ac5266eabc8bec8bbc24ae4c7d5662231">   48</a></span>     <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1CodeGen_1_1CallArg.html#ac5266eabc8bec8bbc24ae4c7d5662231">NeedsCopy</a>;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CallArg.html#ad7ab948f9123e75e3c53dd1a9c156b9b">   49</a></span>     <a class="code" href="structclang_1_1CodeGen_1_1CallArg.html#ad7ab948f9123e75e3c53dd1a9c156b9b">CallArg</a>(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> rv, <a class="code" href="classclang_1_1QualType.html">QualType</a> ty, <span class="keywordtype">bool</span> needscopy)</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     : <a class="code" href="structclang_1_1CodeGen_1_1CallArg.html#ad04d36760f8243297c9916d7f3675a89">RV</a>(rv), <a class="code" href="structclang_1_1CodeGen_1_1CallArg.html#a4a9cf77592f5be23605352672349ff18">Ty</a>(ty), <a class="code" href="structclang_1_1CodeGen_1_1CallArg.html#ac5266eabc8bec8bbc24ae4c7d5662231">NeedsCopy</a>(needscopy)</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     { }</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   };</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment"></span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">  /// CallArgList - Type for representing both the value and type of</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">  /// arguments in a call.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">   56</a></span> <span class="comment"></span>  <span class="keyword">class </span><a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> :</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keyword">public</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector</a><CallArg, 16> {</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html">   59</a></span>     <span class="keyword">struct </span><a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html">Writeback</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment">      /// The original argument.  Note that the argument l-value</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="comment">      /// is potentially null.</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#ab768b07c3986180a240c49120b3be339">   62</a></span> <span class="comment"></span>      <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> <a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#ab768b07c3986180a240c49120b3be339">Source</a>;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="comment"></span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">      /// The temporary alloca.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#a46914157f09ca18915acd10214b91f16">   65</a></span> <span class="comment"></span>      <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#a46914157f09ca18915acd10214b91f16" title="The temporary alloca.">Temporary</a>;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment"></span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment">      /// A value to "use" after the writeback, or null.</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#aaa38920ac9e8d8c51a1370ca4c3285f4">   68</a></span> <span class="comment"></span>      <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#aaa38920ac9e8d8c51a1370ca4c3285f4" title="A value to "use" after the writeback, or null.">ToUse</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> </div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1CallArgCleanup.html">   71</a></span>     <span class="keyword">struct </span><a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1CallArgCleanup.html">CallArgCleanup</a> {</div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1CallArgCleanup.html#a87c3866cb5d9235b0340d45a76f73129">   72</a></span>       <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">EHScopeStack::stable_iterator</a> <a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1CallArgCleanup.html#a87c3866cb5d9235b0340d45a76f73129">Cleanup</a>;</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment"></span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">      /// The "is active" insertion point.  This instruction is temporary and</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">      /// will be removed after insertion.</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1CallArgCleanup.html#a822426d67a0612a981f5f0d2f496c839">   76</a></span> <span class="comment"></span>      llvm::Instruction *<a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1CallArgCleanup.html#a822426d67a0612a981f5f0d2f496c839">IsActiveIP</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_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">   79</a></span>     <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> rvalue, <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>, <span class="keywordtype">bool</span> needscopy = <span class="keyword">false</span>) {</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>       push_back(<a class="code" href="structclang_1_1CodeGen_1_1CallArg.html">CallArg</a>(rvalue, type, needscopy));</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     }</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#af327518aae6c62448e4ce3c52638aef6">   83</a></span>     <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#af327518aae6c62448e4ce3c52638aef6">addFrom</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &other) {</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>       insert(end(), other.begin(), other.end());</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>       Writebacks.insert(Writebacks.end(),</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>                         other.Writebacks.begin(), other.Writebacks.end());</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     }</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a3b2c5b1e823bb2509d7ed25b5de4813a">   89</a></span>     <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a3b2c5b1e823bb2509d7ed25b5de4813a">addWriteback</a>(<a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> srcLV, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *temporary,</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>                       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *toUse) {</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>       <a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html">Writeback</a> writeback;</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>       writeback.<a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#ab768b07c3986180a240c49120b3be339">Source</a> = srcLV;</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>       writeback.<a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#a46914157f09ca18915acd10214b91f16" title="The temporary alloca.">Temporary</a> = temporary;</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>       writeback.<a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1Writeback.html#aaa38920ac9e8d8c51a1370ca4c3285f4" title="A value to "use" after the writeback, or null.">ToUse</a> = toUse;</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>       Writebacks.push_back(writeback);</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     }</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#ad710144accf0210736814ffc2d9dc6ed">   98</a></span>     <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#ad710144accf0210736814ffc2d9dc6ed">hasWritebacks</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !Writebacks.empty(); }</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#ad8205f48223f9f506edce02babee4ffc">  100</a></span>     <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<Writeback>::const_iterator</a> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#ad8205f48223f9f506edce02babee4ffc">writeback_iterator</a>;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1afbcf0c31c77d08fb884c8a6047f1e7">  101</a></span>     <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#ad8205f48223f9f506edce02babee4ffc">writeback_iterator</a> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1afbcf0c31c77d08fb884c8a6047f1e7">writeback_begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Writebacks.begin(); }</div>
+<div class="line"><a name="l00102"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a565abd7d25ae2fd035779a07513ae4fc">  102</a></span>     <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#ad8205f48223f9f506edce02babee4ffc">writeback_iterator</a> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a565abd7d25ae2fd035779a07513ae4fc">writeback_end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Writebacks.end(); }</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a60d6ca5d6ad1b36192f20cb68bbe9cfa">  104</a></span>     <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a60d6ca5d6ad1b36192f20cb68bbe9cfa">addArgCleanupDeactivation</a>(<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">EHScopeStack::stable_iterator</a> Cleanup,</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>                                    llvm::Instruction *IsActiveIP) {</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>       <a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1CallArgCleanup.html">CallArgCleanup</a> ArgCleanup;</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>       ArgCleanup.<a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1CallArgCleanup.html#a87c3866cb5d9235b0340d45a76f73129">Cleanup</a> = Cleanup;</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>       ArgCleanup.<a class="code" href="structclang_1_1CodeGen_1_1CallArgList_1_1CallArgCleanup.html#a822426d67a0612a981f5f0d2f496c839">IsActiveIP</a> = IsActiveIP;</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>       CleanupsToDeactivate.push_back(ArgCleanup);</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     }</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
+<div class="line"><a name="l00112"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a892d76ca481dbcb21661322e76726021">  112</a></span>     <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<CallArgCleanup></a> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a892d76ca481dbcb21661322e76726021">getCleanupsToDeactivate</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>       <span class="keywordflow">return</span> CleanupsToDeactivate;</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     }</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> </div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Writeback, 1></a> Writebacks;</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">    /// Deactivate these cleanups immediately before making the call.  This</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">    /// is used to cleanup objects that are owned by the callee once the call</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">    /// occurs.</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment"></span>    <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CallArgCleanup, 1></a> CleanupsToDeactivate;</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   };</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment"></span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment">  /// FunctionArgList - Type for representing both the decl and type</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment">  /// of parameters to a function. The decl must be either a</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="comment">  /// ParmVarDecl or ImplicitParamDecl.</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">  128</a></span> <span class="comment"></span>  <span class="keyword">class </span><a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> : <span class="keyword">public</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector</a><const VarDecl*, 16> {</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   };</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="comment"></span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment">  /// ReturnValueSlot - Contains the address where the return value of a </span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment">  /// function can be stored, and whether the address is volatile or not.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">  133</a></span> <span class="comment"></span>  <span class="keyword">class </span><a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a> {</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     llvm::PointerIntPair<llvm::Value *, 1, bool> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>;</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> </div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00137"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a747eacaf1a7457170272fd8085297f4a">  137</a></span>     <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a747eacaf1a7457170272fd8085297f4a">ReturnValueSlot</a>() {}</div>
+<div class="line"><a name="l00138"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a3354c50af29fc087da9bcf951c54897c">  138</a></span>     <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a747eacaf1a7457170272fd8085297f4a">ReturnValueSlot</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>, <span class="keywordtype">bool</span> IsVolatile)</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>       : Value(Value, IsVolatile) {}</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
+<div class="line"><a name="l00141"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a9128d2eb4842b48578d34071997756f0">  141</a></span>     <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a9128d2eb4842b48578d34071997756f0">isNull</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !<a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a39550f5aa0eb32d5b27eb94571e68058">getValue</a>(); }</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     </div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#abc453d8c7e7808f6c9e250642e97d9b9">  143</a></span>     <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#abc453d8c7e7808f6c9e250642e97d9b9">isVolatile</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.getInt(); }</div>
+<div class="line"><a name="l00144"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a39550f5aa0eb32d5b27eb94571e68058">  144</a></span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a39550f5aa0eb32d5b27eb94571e68058">getValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.getPointer(); }</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   };</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   </div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> }  <span class="comment">// end namespace CodeGen</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> }  <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> </div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:22 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>





More information about the llvm-commits mailing list