[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/SemaInit_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaInit_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaInit_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaInit_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,7178 @@
+<!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: SemaInit.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_0c3cadfa2fbef89a3b8f57073e8a31f9.html">Sema</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">SemaInit.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="SemaInit_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">//===--- SemaInit.cpp - Semantic Analysis for Initializers ----------------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">// This file implements semantic analysis for initializers.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> </div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include "<a class="code" href="Initialization_8h.html">clang/Sema/Initialization.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="ASTContext_8h.html" title="Defines the clang::ASTContext interface.">clang/AST/ASTContext.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="DeclObjC_8h.html">clang/AST/DeclObjC.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="ExprCXX_8h.html" title="Defines the clang::Expr interface and subclasses for C++ expressions.">clang/AST/ExprCXX.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="ExprObjC_8h.html">clang/AST/ExprObjC.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="TypeLoc_8h.html" title="Defines the clang::TypeLoc interface and its subclasses.">clang/AST/TypeLoc.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="Preprocessor_8h.html">clang/Lex/Preprocessor.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="Designator_8h.html">clang/Sema/Designator.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="Lookup_8h.html">clang/Sema/Lookup.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="SemaInternal_8h.html">clang/Sema/SemaInternal.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "llvm/ADT/APInt.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "llvm/ADT/SmallString.h"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "llvm/Support/ErrorHandling.h"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "llvm/Support/raw_ostream.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <map></span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">// Sema Initialization Checking</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment"></span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment">/// \brief Check whether T is compatible with a wide character type (wchar_t,</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">/// char16_t or char32_t).</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#abe0124796173aa4694007db7616b92f3">   37</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaInit_8cpp.html#abe0124796173aa4694007db7616b92f3" title="Check whether T is compatible with a wide character type (wchar_t, char16_t or char32_t).">IsWideCharCompatible</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T, <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>) {</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keywordflow">if</span> (Context.<a class="code" href="classclang_1_1ASTContext.html#ad6e531fbd1e7f20b3ac64d46301b193f" title="Compatibility predicates used to check assignment expressions.">typesAreCompatible</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#af57de277fc43b9496acfac201da19c37" title="Return the type of wide characters. In C++, this returns the unique wchar_t type. In C99...">getWideCharType</a>(), T))</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keywordflow">if</span> (Context.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().CPlusPlus || Context.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().C11) {</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="keywordflow">return</span> Context.<a class="code" href="classclang_1_1ASTContext.html#ad6e531fbd1e7f20b3ac64d46301b193f" title="Compatibility predicates used to check assignment expressions.">typesAreCompatible</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#a3d6a0672fdf5a30b9acab8ee9531c412">Char16Ty</a>, T) ||</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>            Context.<a class="code" href="classclang_1_1ASTContext.html#ad6e531fbd1e7f20b3ac64d46301b193f" title="Compatibility predicates used to check assignment expressions.">typesAreCompatible</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#acb8f246b353fa5927d539a987e965de4">Char32Ty</a>, T);</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   }</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> }</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440d">   47</a></span> <span class="keyword">enum</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440d">StringInitFailureKind</a> {</div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da0b69dbe5ec3b5031541f85833c880e02">   48</a></span>   <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da0b69dbe5ec3b5031541f85833c880e02">SIF_None</a>,</div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da8e52b91225e7d964d657be8266e3023f">   49</a></span>   <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da8e52b91225e7d964d657be8266e3023f">SIF_NarrowStringIntoWideChar</a>,</div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dadba5a7d2636fe1f37220d98372e64cf3">   50</a></span>   <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dadba5a7d2636fe1f37220d98372e64cf3">SIF_WideStringIntoChar</a>,</div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da375ea08a6d6f95d6f055b05f9a8203cb">   51</a></span>   <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da375ea08a6d6f95d6f055b05f9a8203cb">SIF_IncompatWideStringIntoWideChar</a>,</div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dacb0d6f24ab7e0bcbef573d5d2f836d73">   52</a></span>   <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dacb0d6f24ab7e0bcbef573d5d2f836d73">SIF_Other</a></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> };</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment"></span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">/// \brief Check whether the array of type AT can be initialized by the Init</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">/// expression by means of string initialization. Returns SIF_None if so,</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="comment">/// otherwise returns a StringInitFailureKind that describes why the</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment">/// initialization would not work.</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a4f2ef1cb36540f5ec4a5f2ad4ab407c4">   59</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440d">StringInitFailureKind</a> <a class="code" href="SemaInit_8cpp.html#a4f2ef1cb36540f5ec4a5f2ad4ab407c4" title="Check whether the array of type AT can be initialized by the Init expression by means of string initi...">IsStringInit</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *Init, <span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *AT,</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>                                           <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>) {</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keywordflow">if</span> (!isa<ConstantArrayType>(AT) && !isa<IncompleteArrayType>(AT))</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dacb0d6f24ab7e0bcbef573d5d2f836d73">SIF_Other</a>;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> </div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="comment">// See if this is a string literal or @encode.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   Init = Init-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</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">// Handle @encode, which is a narrow string.</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordflow">if</span> (isa<ObjCEncodeExpr>(Init) && AT-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>()-><a class="code" href="classclang_1_1Type.html#a149f5323f85e3196ecfa0e9746f79755">isCharType</a>())</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da0b69dbe5ec3b5031541f85833c880e02">SIF_None</a>;</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="comment">// Otherwise we can only handle string literals.</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a> *SL = dyn_cast<<a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a>>(Init);</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keywordflow">if</span> (SL == 0)</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dacb0d6f24ab7e0bcbef573d5d2f836d73">SIF_Other</a>;</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1QualType.html">QualType</a> ElemTy =</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>       Context.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(AT-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>()).getUnqualifiedType();</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordflow">switch</span> (SL-><a class="code" href="classclang_1_1StringLiteral.html#a4cd7dc9166f3226b46ec4314eb9063af">getKind</a>()) {</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a1d65c2a7fa94893f57f6d15e3edbcb14">StringLiteral::Ascii</a>:</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a50ddcd2275e37f6cf81ad684a5b2838a">StringLiteral::UTF8</a>:</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="comment">// char array can be initialized with a narrow string.</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <span class="comment">// Only allow char x[] = "foo";  not char x[] = L"foo";</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <span class="keywordflow">if</span> (ElemTy-><a class="code" href="classclang_1_1Type.html#a149f5323f85e3196ecfa0e9746f79755">isCharType</a>())</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da0b69dbe5ec3b5031541f85833c880e02">SIF_None</a>;</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#abe0124796173aa4694007db7616b92f3" title="Check whether T is compatible with a wide character type (wchar_t, char16_t or char32_t).">IsWideCharCompatible</a>(ElemTy, Context))</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da8e52b91225e7d964d657be8266e3023f">SIF_NarrowStringIntoWideChar</a>;</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dacb0d6f24ab7e0bcbef573d5d2f836d73">SIF_Other</a>;</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="comment">// C99 6.7.8p15 (with correction from DR343), or C11 6.7.9p15:</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="comment">// "An array with element type compatible with a qualified or unqualified</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="comment">// version of wchar_t, char16_t, or char32_t may be initialized by a wide</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="comment">// string literal with the corresponding encoding prefix (L, u, or U,</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="comment">// respectively), optionally enclosed in braces.</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a39a273d718f83f3182468eaabf090381">StringLiteral::UTF16</a>:</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     <span class="keywordflow">if</span> (Context.<a class="code" href="classclang_1_1ASTContext.html#ad6e531fbd1e7f20b3ac64d46301b193f" title="Compatibility predicates used to check assignment expressions.">typesAreCompatible</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#a3d6a0672fdf5a30b9acab8ee9531c412">Char16Ty</a>, ElemTy))</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da0b69dbe5ec3b5031541f85833c880e02">SIF_None</a>;</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     <span class="keywordflow">if</span> (ElemTy-><a class="code" href="classclang_1_1Type.html#a149f5323f85e3196ecfa0e9746f79755">isCharType</a>())</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dadba5a7d2636fe1f37220d98372e64cf3">SIF_WideStringIntoChar</a>;</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#abe0124796173aa4694007db7616b92f3" title="Check whether T is compatible with a wide character type (wchar_t, char16_t or char32_t).">IsWideCharCompatible</a>(ElemTy, Context))</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da375ea08a6d6f95d6f055b05f9a8203cb">SIF_IncompatWideStringIntoWideChar</a>;</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dacb0d6f24ab7e0bcbef573d5d2f836d73">SIF_Other</a>;</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a4c1b71b4a68274a86d73a47b3d19167f">StringLiteral::UTF32</a>:</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     <span class="keywordflow">if</span> (Context.<a class="code" href="classclang_1_1ASTContext.html#ad6e531fbd1e7f20b3ac64d46301b193f" title="Compatibility predicates used to check assignment expressions.">typesAreCompatible</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#acb8f246b353fa5927d539a987e965de4">Char32Ty</a>, ElemTy))</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da0b69dbe5ec3b5031541f85833c880e02">SIF_None</a>;</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordflow">if</span> (ElemTy-><a class="code" href="classclang_1_1Type.html#a149f5323f85e3196ecfa0e9746f79755">isCharType</a>())</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dadba5a7d2636fe1f37220d98372e64cf3">SIF_WideStringIntoChar</a>;</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#abe0124796173aa4694007db7616b92f3" title="Check whether T is compatible with a wide character type (wchar_t, char16_t or char32_t).">IsWideCharCompatible</a>(ElemTy, Context))</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da375ea08a6d6f95d6f055b05f9a8203cb">SIF_IncompatWideStringIntoWideChar</a>;</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dacb0d6f24ab7e0bcbef573d5d2f836d73">SIF_Other</a>;</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460af78d80b058e4f2366161f59c458ffcb9">StringLiteral::Wide</a>:</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     <span class="keywordflow">if</span> (Context.<a class="code" href="classclang_1_1ASTContext.html#ad6e531fbd1e7f20b3ac64d46301b193f" title="Compatibility predicates used to check assignment expressions.">typesAreCompatible</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#af57de277fc43b9496acfac201da19c37" title="Return the type of wide characters. In C++, this returns the unique wchar_t type. In C99...">getWideCharType</a>(), ElemTy))</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da0b69dbe5ec3b5031541f85833c880e02">SIF_None</a>;</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     <span class="keywordflow">if</span> (ElemTy-><a class="code" href="classclang_1_1Type.html#a149f5323f85e3196ecfa0e9746f79755">isCharType</a>())</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dadba5a7d2636fe1f37220d98372e64cf3">SIF_WideStringIntoChar</a>;</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#abe0124796173aa4694007db7616b92f3" title="Check whether T is compatible with a wide character type (wchar_t, char16_t or char32_t).">IsWideCharCompatible</a>(ElemTy, Context))</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da375ea08a6d6f95d6f055b05f9a8203cb">SIF_IncompatWideStringIntoWideChar</a>;</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dacb0d6f24ab7e0bcbef573d5d2f836d73">SIF_Other</a>;</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   }</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   llvm_unreachable(<span class="stringliteral">"missed a StringLiteral kind?"</span>);</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> }</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a401558979d2c463155b922bfc0f193b8">  123</a></span> <span class="keyword">static</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440d">StringInitFailureKind</a> <a class="code" href="SemaInit_8cpp.html#a4f2ef1cb36540f5ec4a5f2ad4ab407c4" title="Check whether the array of type AT can be initialized by the Init expression by means of string initi...">IsStringInit</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *init, <a class="code" href="classclang_1_1QualType.html">QualType</a> declType,</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>                                           <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>) {</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *arrayType = Context.<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(declType);</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="keywordflow">if</span> (!arrayType)</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dacb0d6f24ab7e0bcbef573d5d2f836d73">SIF_Other</a>;</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a4f2ef1cb36540f5ec4a5f2ad4ab407c4" title="Check whether the array of type AT can be initialized by the Init expression by means of string initi...">IsStringInit</a>(init, arrayType, Context);</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">/// Update the type of a string literal, including any surrounding parentheses,</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment">/// to match the type of the object which it is initializing.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a0cb9488d295c1fe85dba5ebf0b0f3c7e">  133</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a0cb9488d295c1fe85dba5ebf0b0f3c7e">updateStringLiteralType</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E, <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty) {</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     E-><a class="code" href="classclang_1_1Expr.html#a3b6971eecc3301041ba0d18a91fa1ceb">setType</a>(Ty);</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     <span class="keywordflow">if</span> (isa<StringLiteral>(E) || isa<ObjCEncodeExpr>(E))</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ParenExpr.html">ParenExpr</a> *PE = dyn_cast<ParenExpr>(E))</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>       E = PE->getSubExpr();</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *UO = dyn_cast<UnaryOperator>(E))</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       E = UO->getSubExpr();</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1GenericSelectionExpr.html" title="Represents a C11 generic selection.">GenericSelectionExpr</a> *GSE = dyn_cast<GenericSelectionExpr>(E))</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       E = GSE->getResultExpr();</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>       llvm_unreachable(<span class="stringliteral">"unexpected expr in string literal init"</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> }</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
+<div class="line"><a name="l00149"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a92e10202beb9335517a7a511f5aba0a7">  149</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a92e10202beb9335517a7a511f5aba0a7">CheckStringInit</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *Str, <a class="code" href="classclang_1_1QualType.html">QualType</a> &DeclT, <span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *AT,</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>                             <a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="comment">// Get the length of the string as parsed.</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   uint64_t StrLength =</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     cast<ConstantArrayType>(Str-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>())->getSize().getZExtValue();</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> </div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1IncompleteArrayType.html">IncompleteArrayType</a> *IAT = dyn_cast<IncompleteArrayType>(AT)) {</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     <span class="comment">// C99 6.7.8p14. We have an array of character type with unknown size</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     <span class="comment">// being initialized to a string literal.</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     llvm::APInt ConstVal(32, StrLength);</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="comment">// Return a new array type (C99 6.7.8p22).</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     DeclT = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a1dfd9aba04afad486b0dbbfc17de130b" title="Return the unique reference to the type for a constant array of the specified element type...">getConstantArrayType</a>(IAT->getElementType(),</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>                                            ConstVal,</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>                                            <a class="code" href="classclang_1_1ArrayType.html#a044cc135a180b91387c89659ab7cabb4a4c2f47d08e59b0457e60184462599c17">ArrayType::Normal</a>, 0);</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     <a class="code" href="SemaInit_8cpp.html#a0cb9488d295c1fe85dba5ebf0b0f3c7e">updateStringLiteralType</a>(Str, DeclT);</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   }</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> </div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *CAT = cast<ConstantArrayType>(AT);</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> </div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="comment">// We have an array of character type with known size.  However,</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="comment">// the size may be smaller or larger than the string we are initializing.</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="comment">// FIXME: Avoid truncation for 64-bit length strings.</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus) {</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a> *SL = dyn_cast<StringLiteral>(Str-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>())) {</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>       <span class="comment">// For Pascal strings it's OK to strip off the terminating null character,</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>       <span class="comment">// so the example below is valid:</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>       <span class="comment">// unsigned char a[2] = "\pa";</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>       <span class="keywordflow">if</span> (SL->isPascal())</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         StrLength--;</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>   </div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     <span class="comment">// [dcl.init.string]p2</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     <span class="keywordflow">if</span> (StrLength > CAT-><a class="code" href="classclang_1_1ConstantArrayType.html#add90924c309ad1f353431f2b63e9ba2b">getSize</a>().getZExtValue())</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Str-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>              diag::err_initializer_string_for_char_array_too_long)</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         << Str-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     <span class="comment">// C99 6.7.8p14.</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     <span class="keywordflow">if</span> (StrLength-1 > CAT-><a class="code" href="classclang_1_1ConstantArrayType.html#add90924c309ad1f353431f2b63e9ba2b">getSize</a>().getZExtValue())</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>       S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Str-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>              diag::warn_initializer_string_for_char_array_too_long)</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         << Str-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</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> </div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="comment">// Set the type to the actual size that we are initializing.  If we have</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="comment">// something like:</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="comment">//   char x[1] = "foo";</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   <span class="comment">// then this will set the string literal's type to char[1].</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <a class="code" href="SemaInit_8cpp.html#a0cb9488d295c1fe85dba5ebf0b0f3c7e">updateStringLiteralType</a>(Str, DeclT);</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> }</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> <span class="comment">// Semantic checking for initializer lists.</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment"></span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="comment">/// @brief Semantic checking for initializer lists.</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="comment">/// The InitListChecker class contains a set of routines that each</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> <span class="comment">/// handle the initialization of a certain kind of entity, e.g.,</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="comment">/// arrays, vectors, struct/union types, scalars, etc. The</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">/// InitListChecker itself performs a recursive walk of the subobject</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">/// structure of the type to be initialized, while stepping through</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">/// the initializer list one element at a time. The IList and Index</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="comment">/// parameters to each of the Check* routines contain the active</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment">/// (syntactic) initializer list and the index into that initializer</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment">/// list that represents the current initializer. Each routine is</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="comment">/// responsible for moving that Index forward as it consumes elements.</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">/// Each Check* routine also has a StructuredList/StructuredIndex</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment">/// arguments, which contains the current "structured" (semantic)</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment">/// initializer list and the index into that initializer list where we</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">/// are copying initializers as we map them over to the semantic</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment">/// list. Once we have completed our recursive walk of the subobject</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment">/// structure, we will have constructed a full semantic initializer</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment">/// list.</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="comment">/// C99 designators cause changes in the initializer list traversal,</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment">/// because they make the initialization "jump" into a specific</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment">/// subobject and then continue the initialization from that</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment">/// point. CheckDesignatedInitializer() recursively steps into the</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment">/// designated subobject and manages backing out the recursion to</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="comment">/// initialize the subobjects after the one designated.</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="comment"></span><span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="keyword">class </span>InitListChecker {</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   <a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>;</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keywordtype">bool</span> hadError;</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <span class="keywordtype">bool</span> VerifyOnly; <span class="comment">// no diagnostics, no structure building</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   llvm::DenseMap<InitListExpr *, InitListExpr *> SyntacticToSemantic;</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *FullyStructuredList;</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="keywordtype">void</span> CheckImplicitInitList(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>                              <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ParentIList, <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>                              <span class="keywordtype">unsigned</span> &Index, <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>                              <span class="keywordtype">unsigned</span> &StructuredIndex);</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="keywordtype">void</span> CheckExplicitInitList(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>                              <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> &T,</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>                              <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>                              <span class="keywordtype">bool</span> TopLevelObject = <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <span class="keywordtype">void</span> CheckListElementTypes(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>                              <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> &DeclType,</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>                              <span class="keywordtype">bool</span> SubobjectIsDesignatorContext,</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>                              <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>                              <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>                              <span class="keywordtype">unsigned</span> &StructuredIndex,</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>                              <span class="keywordtype">bool</span> TopLevelObject = <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="keywordtype">void</span> CheckSubElementType(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>                            <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> ElemType,</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>                            <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>                            <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>                            <span class="keywordtype">unsigned</span> &StructuredIndex);</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   <span class="keywordtype">void</span> CheckComplexType(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>                         <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType,</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>                         <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>                         <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>                         <span class="keywordtype">unsigned</span> &StructuredIndex);</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="keywordtype">void</span> CheckScalarType(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>                        <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType,</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>                        <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>                        <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>                        <span class="keywordtype">unsigned</span> &StructuredIndex);</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordtype">void</span> CheckReferenceType(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>                           <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType,</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>                           <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>                           <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>                           <span class="keywordtype">unsigned</span> &StructuredIndex);</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   <span class="keywordtype">void</span> CheckVectorType(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>                        <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType, <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>                        <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>                        <span class="keywordtype">unsigned</span> &StructuredIndex);</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   <span class="keywordtype">void</span> CheckStructUnionTypes(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>                              <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType,</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>                              <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> Field,</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>                              <span class="keywordtype">bool</span> SubobjectIsDesignatorContext, <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>                              <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>                              <span class="keywordtype">unsigned</span> &StructuredIndex,</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>                              <span class="keywordtype">bool</span> TopLevelObject = <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <span class="keywordtype">void</span> CheckArrayType(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>                       <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> &DeclType,</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>                       llvm::APSInt elementIndex,</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>                       <span class="keywordtype">bool</span> SubobjectIsDesignatorContext, <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>                       <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>                       <span class="keywordtype">unsigned</span> &StructuredIndex);</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   <span class="keywordtype">bool</span> CheckDesignatedInitializer(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>                                   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1DesignatedInitExpr.html" title="Represents a C99 designated initializer expression.">DesignatedInitExpr</a> *DIE,</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>                                   <span class="keywordtype">unsigned</span> DesigIdx,</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>                                   <a class="code" href="classclang_1_1QualType.html">QualType</a> &CurrentObjectType,</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>                                   <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> *NextField,</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>                                   llvm::APSInt *NextElementIndex,</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>                                   <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>                                   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>                                   <span class="keywordtype">unsigned</span> &StructuredIndex,</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>                                   <span class="keywordtype">bool</span> FinishSubobjectInit,</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>                                   <span class="keywordtype">bool</span> TopLevelObject);</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *getStructuredSubobjectInit(<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <span class="keywordtype">unsigned</span> Index,</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>                                            <a class="code" href="classclang_1_1QualType.html">QualType</a> CurrentObjectType,</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>                                            <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>                                            <span class="keywordtype">unsigned</span> StructuredIndex,</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>                                            <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> InitRange);</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="keywordtype">void</span> UpdateStructuredListElement(<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>                                    <span class="keywordtype">unsigned</span> &StructuredIndex,</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>                                    <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>);</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   <span class="keywordtype">int</span> numArrayElements(<a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType);</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   <span class="keywordtype">int</span> numStructUnionElements(<a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType);</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="keywordtype">void</span> FillInValueInitForField(<span class="keywordtype">unsigned</span> Init, <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field,</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>                                <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &ParentEntity,</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>                                <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ILE, <span class="keywordtype">bool</span> &RequiresSecondPass);</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="keywordtype">void</span> FillInValueInitializations(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>                                   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ILE, <span class="keywordtype">bool</span> &RequiresSecondPass);</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <span class="keywordtype">bool</span> CheckFlexibleArrayInit(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>                               <a class="code" href="classclang_1_1Expr.html">Expr</a> *InitExpr, <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field,</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>                               <span class="keywordtype">bool</span> TopLevelObject);</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="keywordtype">void</span> CheckValueInitializable(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity);</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   InitListChecker(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>                   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IL, <a class="code" href="classclang_1_1QualType.html">QualType</a> &T, <span class="keywordtype">bool</span> VerifyOnly);</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   <span class="keywordtype">bool</span> HadError() { <span class="keywordflow">return</span> hadError; }</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   <span class="comment">// @brief Retrieves the fully-structured initializer list used for</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>   <span class="comment">// semantic analysis and code generation.</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *getFullyStructuredList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FullyStructuredList; }</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">// end anonymous namespace</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> </div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> <span class="keywordtype">void</span> InitListChecker::CheckValueInitializable(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity) {</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   assert(VerifyOnly &&</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>          <span class="stringliteral">"CheckValueInitializable is only inteded for verification mode."</span>);</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>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc;</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = <a class="code" href="classclang_1_1InitializationKind.html#af526bb57c5ba19fd82f93a4d8da1573b" title="Create a value initialization.">InitializationKind::CreateValue</a>(Loc, Loc, Loc,</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>                                                             <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> InitSeq(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>, Entity, Kind, None);</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   <span class="keywordflow">if</span> (InitSeq.Failed())</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span> }</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span> </div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> <span class="keywordtype">void</span> InitListChecker::FillInValueInitForField(<span class="keywordtype">unsigned</span> Init, <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field,</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>                                         <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &ParentEntity,</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>                                               <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ILE,</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>                                               <span class="keywordtype">bool</span> &RequiresSecondPass) {</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc = ILE-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>();</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   <span class="keywordtype">unsigned</span> NumInits = ILE-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>();</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> MemberEntity</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     = <a class="code" href="classclang_1_1InitializedEntity.html#abaad933a3436855b082dca1cca8961cc" title="Create the initialization entity for a member subobject.">InitializedEntity::InitializeMember</a>(Field, &ParentEntity);</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   <span class="keywordflow">if</span> (Init >= NumInits || !ILE-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Init)) {</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     <span class="comment">// If there's no explicit initializer but we have a default initializer, use</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     <span class="comment">// that. This only happens in C++1y, since classes with default</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     <span class="comment">// initializers are not aggregates in C++11.</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     <span class="keywordflow">if</span> (Field-><a class="code" href="classclang_1_1FieldDecl.html#aa11de31e26263195b5c2b2ab6cdd2918">hasInClassInitializer</a>()) {</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>       <a class="code" href="classclang_1_1Expr.html">Expr</a> *DIE = <a class="code" href="classclang_1_1CXXDefaultInitExpr.html#a5199663c26bbc4bc13cb0c69cc13923e">CXXDefaultInitExpr::Create</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>,</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>                                              ILE-><a class="code" href="classclang_1_1InitListExpr.html#a4c8fe557e9b57b9dd9d7675a555a5513">getRBraceLoc</a>(), Field);</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>       <span class="keywordflow">if</span> (Init < NumInits)</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         ILE-><a class="code" href="classclang_1_1InitListExpr.html#a6858a240f6329b5c5106e38b96bfb611">setInit</a>(Init, DIE);</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>       <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>         ILE-><a class="code" href="classclang_1_1InitListExpr.html#a8736c08fc15eded5b30c34b997fd2d8f" title="Updates the initializer at index Init with the new expression expr, and returns the old expression at...">updateInit</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, Init, DIE);</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>         RequiresSecondPass = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>       }</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     }</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> </div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     <span class="comment">// FIXME: We probably don't need to handle references</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     <span class="comment">// specially here, since value-initialization of references is</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     <span class="comment">// handled in InitializationSequence.</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     <span class="keywordflow">if</span> (Field-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       <span class="comment">// C++ [dcl.init.aggr]p9:</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>       <span class="comment">//   If an incomplete or empty initializer-list leaves a</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       <span class="comment">//   member of reference type uninitialized, the program is</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>       <span class="comment">//   ill-formed.</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_init_reference_member_uninitialized)</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>         << Field-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>         << ILE-><a class="code" href="classclang_1_1InitListExpr.html#a802842fde8e9d55098e4d6c5dba68ff8">getSyntacticForm</a>()-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Field-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>                    diag::note_uninit_reference_member);</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     }</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> </div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> Kind = <a class="code" href="classclang_1_1InitializationKind.html#af526bb57c5ba19fd82f93a4d8da1573b" title="Create a value initialization.">InitializationKind::CreateValue</a>(Loc, Loc, Loc,</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>                                                               <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> InitSeq(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>, MemberEntity, Kind, None);</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     <span class="keywordflow">if</span> (!InitSeq) {</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>       InitSeq.Diagnose(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>, MemberEntity, Kind, None);</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>       hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     }</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span> </div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> MemberInit</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       = InitSeq.Perform(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>, MemberEntity, Kind, None);</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>     <span class="keywordflow">if</span> (MemberInit.<a class="code" href="classclang_1_1ActionResult.html#ac9ac9ca2df07fbb1931300e2a926351a">isInvalid</a>()) {</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>       hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>       <span class="keywordflow">return</span>;</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> </div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>     <span class="keywordflow">if</span> (hadError) {</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>       <span class="comment">// Do nothing</span></div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Init < NumInits) {</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>       ILE-><a class="code" href="classclang_1_1InitListExpr.html#a6858a240f6329b5c5106e38b96bfb611">setInit</a>(Init, MemberInit.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>());</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (InitSeq.isConstructorInitialization()) {</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>       <span class="comment">// Value-initialization requires a constructor call, so</span></div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       <span class="comment">// extend the initializer list to include the constructor</span></div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>       <span class="comment">// call and make a note that we'll need to take another pass</span></div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>       <span class="comment">// through the initializer list.</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       ILE-><a class="code" href="classclang_1_1InitListExpr.html#a8736c08fc15eded5b30c34b997fd2d8f" title="Updates the initializer at index Init with the new expression expr, and returns the old expression at...">updateInit</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, Init, MemberInit.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>());</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       RequiresSecondPass = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     }</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *InnerILE</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>                = dyn_cast<InitListExpr>(ILE-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Init)))</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>     FillInValueInitializations(MemberEntity, InnerILE,</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>                                RequiresSecondPass);</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> <span class="comment"></span></div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> <span class="comment">/// Recursively replaces NULL values within the given initializer list</span></div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span> <span class="comment">/// with expressions that perform value-initialization of the</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span> <span class="comment">/// appropriate type.</span></div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> <span class="comment"></span><span class="keywordtype">void</span></div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> InitListChecker::FillInValueInitializations(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>                                             <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ILE,</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>                                             <span class="keywordtype">bool</span> &RequiresSecondPass) {</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   assert((ILE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>() != <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>) &&</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>          <span class="stringliteral">"Should not have void type"</span>);</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc = ILE-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>();</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   <span class="keywordflow">if</span> (ILE-><a class="code" href="classclang_1_1InitListExpr.html#a802842fde8e9d55098e4d6c5dba68ff8">getSyntacticForm</a>())</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>     Loc = ILE-><a class="code" href="classclang_1_1InitListExpr.html#a802842fde8e9d55098e4d6c5dba68ff8">getSyntacticForm</a>()-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>();</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span> </div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RType = ILE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()) {</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RDecl = RType->getDecl();</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>     <span class="keywordflow">if</span> (RDecl-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>() && ILE-><a class="code" href="classclang_1_1InitListExpr.html#a00be38ec80f991a7554541800dc9e48a" title="If this initializes a union, specifies which field in the union to initialize.">getInitializedFieldInUnion</a>())</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>       FillInValueInitForField(0, ILE-><a class="code" href="classclang_1_1InitListExpr.html#a00be38ec80f991a7554541800dc9e48a" title="If this initializes a union, specifies which field in the union to initialize.">getInitializedFieldInUnion</a>(),</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>                               Entity, ILE, RequiresSecondPass);</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (RDecl-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>() && isa<CXXRecordDecl>(RDecl) &&</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>              cast<CXXRecordDecl>(RDecl)->hasInClassInitializer()) {</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> Field = RDecl-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>                                       FieldEnd = RDecl-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>            Field != FieldEnd; ++Field) {</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>         <span class="keywordflow">if</span> (Field-><a class="code" href="classclang_1_1FieldDecl.html#aa11de31e26263195b5c2b2ab6cdd2918">hasInClassInitializer</a>()) {</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>           FillInValueInitForField(0, *Field, Entity, ILE, RequiresSecondPass);</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>           <span class="keywordflow">break</span>;</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>       }</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>       <span class="keywordtype">unsigned</span> Init = 0;</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> Field = RDecl-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>                                       FieldEnd = RDecl-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>            Field != FieldEnd; ++Field) {</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>         <span class="keywordflow">if</span> (Field-><a class="code" href="classclang_1_1FieldDecl.html#a6e726e3d2fc5514bb6e0c213d11b232b" title="Determines whether this is an unnamed bitfield.">isUnnamedBitfield</a>())</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>           <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span> </div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>         <span class="keywordflow">if</span> (hadError)</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>           <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> </div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>         FillInValueInitForField(Init, *Field, Entity, ILE, RequiresSecondPass);</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>         <span class="keywordflow">if</span> (hadError)</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>           <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span> </div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>         ++Init;</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span> </div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>         <span class="comment">// Only look at the first initialization of a union.</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>         <span class="keywordflow">if</span> (RDecl-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>())</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>           <span class="keywordflow">break</span>;</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>     }</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>;</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">  478</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType;</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>   <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> ElementEntity = Entity;</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>   <span class="keywordtype">unsigned</span> NumInits = ILE->getNumInits();</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>   <span class="keywordtype">unsigned</span> NumElements = NumInits;</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *AType = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(ILE->getType())) {</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>     ElementType = AType->getElementType();</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *CAType = dyn_cast<ConstantArrayType>(AType))</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>       NumElements = CAType->getSize().getZExtValue();</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>     ElementEntity = <a class="code" href="classclang_1_1InitializedEntity.html#a5e9a47f756a63c655823569b404e8c07" title="Create the initialization entity for an array element.">InitializedEntity::InitializeElement</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>,</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>                                                          0, Entity);</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1VectorType.html">VectorType</a> *VType = ILE->getType()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1VectorType.html">VectorType</a>>()) {</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     ElementType = VType->getElementType();</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>     NumElements = VType->getNumElements();</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     ElementEntity = <a class="code" href="classclang_1_1InitializedEntity.html#a5e9a47f756a63c655823569b404e8c07" title="Create the initialization entity for an array element.">InitializedEntity::InitializeElement</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>,</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>                                                          0, Entity);</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>   } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     ElementType = ILE->getType();</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> </div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> Init = 0; Init != NumElements; ++Init) {</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>     <span class="keywordflow">if</span> (hadError)</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span> </div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>     <span class="keywordflow">if</span> (ElementEntity.<a class="code" href="classclang_1_1InitializedEntity.html#a22f327e1c51a6322f89ceaef6be71908" title="Determine the kind of initialization.">getKind</a>() == <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ae93df264642b0877b845dce85ae4f0cf" title="The entity being initialized is an element of an array.">InitializedEntity::EK_ArrayElement</a> ||</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>         ElementEntity.<a class="code" href="classclang_1_1InitializedEntity.html#a22f327e1c51a6322f89ceaef6be71908" title="Determine the kind of initialization.">getKind</a>() == <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a9eb5e8ee681640b1fc04be0ab9ee4569" title="The entity being initialized is an element of a vector. or vector.">InitializedEntity::EK_VectorElement</a>)</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>       ElementEntity.<a class="code" href="classclang_1_1InitializedEntity.html#a7a60eb1081934fd72dcaf830b9e05d38" title="If this is already the initializer for an array or vector element, sets the element index...">setElementIndex</a>(Init);</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     <a class="code" href="classclang_1_1Expr.html">Expr</a> *InitExpr = (Init < NumInits ? ILE->getInit(Init) : 0);</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     <span class="keywordflow">if</span> (!InitExpr && !ILE->hasArrayFiller()) {</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>       <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> Kind = <a class="code" href="classclang_1_1InitializationKind.html#af526bb57c5ba19fd82f93a4d8da1573b" title="Create a value initialization.">InitializationKind::CreateValue</a>(Loc, Loc, Loc,</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>                                                                 <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>       <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> InitSeq(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>, ElementEntity, Kind, None);</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       <span class="keywordflow">if</span> (!InitSeq) {</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>         InitSeq.Diagnose(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>, ElementEntity, Kind, None);</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>         hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>       }</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span> </div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>       <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> ElementInit</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>         = InitSeq.Perform(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>, ElementEntity, Kind, None);</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>       <span class="keywordflow">if</span> (ElementInit.<a class="code" href="classclang_1_1ActionResult.html#ac9ac9ca2df07fbb1931300e2a926351a">isInvalid</a>()) {</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>         hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>       }</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span> </div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>       <span class="keywordflow">if</span> (hadError) {</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>         <span class="comment">// Do nothing</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Init < NumInits) {</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>         <span class="comment">// For arrays, just set the expression used for value-initialization</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>         <span class="comment">// of the "holes" in the array.</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>         <span class="keywordflow">if</span> (ElementEntity.<a class="code" href="classclang_1_1InitializedEntity.html#a22f327e1c51a6322f89ceaef6be71908" title="Determine the kind of initialization.">getKind</a>() == <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ae93df264642b0877b845dce85ae4f0cf" title="The entity being initialized is an element of an array.">InitializedEntity::EK_ArrayElement</a>)</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>           ILE->setArrayFiller(ElementInit.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>());</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>           ILE->setInit(Init, ElementInit.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>());</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>         <span class="comment">// For arrays, just set the expression used for value-initialization</span></div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>         <span class="comment">// of the rest of elements and exit.</span></div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>         <span class="keywordflow">if</span> (ElementEntity.<a class="code" href="classclang_1_1InitializedEntity.html#a22f327e1c51a6322f89ceaef6be71908" title="Determine the kind of initialization.">getKind</a>() == <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ae93df264642b0877b845dce85ae4f0cf" title="The entity being initialized is an element of an array.">InitializedEntity::EK_ArrayElement</a>) {</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>           ILE->setArrayFiller(ElementInit.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>());</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>           <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>         }</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span> </div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>         <span class="keywordflow">if</span> (InitSeq.isConstructorInitialization()) {</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>           <span class="comment">// Value-initialization requires a constructor call, so</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>           <span class="comment">// extend the initializer list to include the constructor</span></div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>           <span class="comment">// call and make a note that we'll need to take another pass</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>           <span class="comment">// through the initializer list.</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>           ILE->updateInit(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, Init, ElementInit.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>());</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>           RequiresSecondPass = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>         }</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>       }</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *InnerILE</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>                  = dyn_cast_or_null<InitListExpr>(InitExpr))</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>       FillInValueInitializations(ElementEntity, InnerILE, RequiresSecondPass);</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> }</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span> </div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span> </div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span> InitListChecker::InitListChecker(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>                                  <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IL, <a class="code" href="classclang_1_1QualType.html">QualType</a> &T,</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>                                  <span class="keywordtype">bool</span> VerifyOnly)</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>   : <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>(S), VerifyOnly(VerifyOnly) {</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>   hadError = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span> </div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>   FullyStructuredList =</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>       getStructuredSubobjectInit(IL, 0, T, 0, 0, IL-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>());</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>   CheckExplicitInitList(Entity, IL, T, FullyStructuredList,</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>                         <span class="comment">/*TopLevelObject=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span> </div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>   <span class="keywordflow">if</span> (!hadError && !VerifyOnly) {</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>     <span class="keywordtype">bool</span> RequiresSecondPass = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     FillInValueInitializations(Entity, FullyStructuredList, RequiresSecondPass);</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     <span class="keywordflow">if</span> (RequiresSecondPass && !hadError)</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>       FillInValueInitializations(Entity, FullyStructuredList,</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>                                  RequiresSecondPass);</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> }</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span> </div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span> <span class="keywordtype">int</span> InitListChecker::numArrayElements(<a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType) {</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>   <span class="comment">// FIXME: use a proper constant</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>   <span class="keywordtype">int</span> maxElements = 0x7FFFFFFF;</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *CAT =</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>         <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a881d1a09f9d299e910aaa0b6c40a7780">getAsConstantArrayType</a>(DeclType)) {</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>     maxElements = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(CAT->getSize().getZExtValue());</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>   }</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>   <span class="keywordflow">return</span> maxElements;</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> </div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span> <span class="keywordtype">int</span> InitListChecker::numStructUnionElements(<a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType) {</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>   <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *structDecl = DeclType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl();</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   <span class="keywordtype">int</span> InitializableMembers = 0;</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a></div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>          Field = structDecl-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>          FieldEnd = structDecl-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>        Field != FieldEnd; ++Field) {</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>     <span class="keywordflow">if</span> (!Field-><a class="code" href="classclang_1_1FieldDecl.html#a6e726e3d2fc5514bb6e0c213d11b232b" title="Determines whether this is an unnamed bitfield.">isUnnamedBitfield</a>())</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>       ++InitializableMembers;</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">if</span> (structDecl-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>())</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>     <span class="keywordflow">return</span> std::min(InitializableMembers, 1);</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>   <span class="keywordflow">return</span> InitializableMembers - structDecl-><a class="code" href="classclang_1_1RecordDecl.html#aaacf26482f17281507bd198e82ee7a7e">hasFlexibleArrayMember</a>();</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span> }</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span> <span class="comment"></span></div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span> <span class="comment">/// Check whether the range of the initializer \p ParentIList from element</span></div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span> <span class="comment">/// \p Index onwards can be used to initialize an object of type \p T. Update</span></div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span> <span class="comment">/// \p Index to indicate how many elements of the list were consumed.</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span> <span class="comment">/// This also fills in \p StructuredList, from element \p StructuredIndex</span></div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span> <span class="comment">/// onwards, with the fully-braced, desugared form of the initialization.</span></div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span> <span class="comment"></span><span class="keywordtype">void</span> InitListChecker::CheckImplicitInitList(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>                                             <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ParentIList,</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>                                             <a class="code" href="classclang_1_1QualType.html">QualType</a> T, <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>                                             <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>                                             <span class="keywordtype">unsigned</span> &StructuredIndex) {</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>   <span class="keywordtype">int</span> maxElements = 0;</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span> </div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>   <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>())</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>     maxElements = numArrayElements(T);</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>())</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>     maxElements = numStructUnionElements(T);</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>())</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     maxElements = T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1VectorType.html">VectorType</a>>()-><a class="code" href="classclang_1_1VectorType.html#adfa7e090380e24449722cc934b2a71b1">getNumElements</a>();</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>     llvm_unreachable(<span class="stringliteral">"CheckImplicitInitList(): Illegal type"</span>);</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="keywordflow">if</span> (maxElements == 0) {</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ParentIList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index)-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>                    diag::err_implicit_empty_initializer);</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>     ++Index;</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>   }</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span> </div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>   <span class="comment">// Build a structured initializer list corresponding to this subobject.</span></div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredSubobjectInitList</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     = getStructuredSubobjectInit(ParentIList, Index, T, StructuredList,</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>                                  StructuredIndex,</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>           <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(ParentIList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index)-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>                       ParentIList-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>().<a class="code" href="classclang_1_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0">getEnd</a>()));</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>   <span class="keywordtype">unsigned</span> StructuredSubobjectInitIndex = 0;</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span> </div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>   <span class="comment">// Check the element types and build the structural subobject.</span></div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>   <span class="keywordtype">unsigned</span> StartIndex = Index;</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>   CheckListElementTypes(Entity, ParentIList, T,</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>                         <span class="comment">/*SubobjectIsDesignatorContext=*/</span><span class="keyword">false</span>, Index,</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>                         StructuredSubobjectInitList,</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>                         StructuredSubobjectInitIndex);</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span> </div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>   <span class="keywordflow">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>     StructuredSubobjectInitList-><a class="code" href="classclang_1_1Expr.html#a3b6971eecc3301041ba0d18a91fa1ceb">setType</a>(T);</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span> </div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>     <span class="keywordtype">unsigned</span> EndIndex = (Index == StartIndex? StartIndex : Index - 1);</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     <span class="comment">// Update the structured sub-object initializer so that it's ending</span></div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>     <span class="comment">// range corresponds with the end of the last initializer it used.</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>     <span class="keywordflow">if</span> (EndIndex < ParentIList->getNumInits()) {</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</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="l00656"></a><span class="lineno">  656</span>         = ParentIList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(EndIndex)-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>().<a class="code" href="classclang_1_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0">getEnd</a>();</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>       StructuredSubobjectInitList-><a class="code" href="classclang_1_1InitListExpr.html#ae240b72469808f9f0e1283cabd7fa8ac">setRBraceLoc</a>(EndLoc);</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     }</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span> </div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>     <span class="comment">// Complain about missing braces.</span></div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>() || T-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) {</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(StructuredSubobjectInitList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(),</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>                    diag::warn_missing_braces)</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>         << StructuredSubobjectInitList-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>()</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>         << FixItHint::CreateInsertion(</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>               StructuredSubobjectInitList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(), <span class="stringliteral">"{"</span>)</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>         << FixItHint::CreateInsertion(</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>               <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a6829f2b169c74ad544c53a8b1415061b">PP</a>.<a class="code" href="classclang_1_1Preprocessor.html#aef7193e9d262ea6852d666beb28dc1a0" title="Computes the source location just past the end of the token at this source location.">getLocForEndOfToken</a>(</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>                                       StructuredSubobjectInitList-><a class="code" href="classclang_1_1InitListExpr.html#af6f6f4be77b3490277f43b11d7e2797c">getLocEnd</a>()),</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>               <span class="stringliteral">"}"</span>);</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     }</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>   }</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span> }</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span> <span class="comment"></span></div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span> <span class="comment">/// Check whether the initializer \p IList (that was written with explicit</span></div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span> <span class="comment">/// braces) can be used to initialize an object of type \p T.</span></div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span> <span class="comment">/// This also fills in \p StructuredList with the fully-braced, desugared</span></div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span> <span class="comment">/// form of the initialization.</span></div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span> <span class="comment"></span><span class="keywordtype">void</span> InitListChecker::CheckExplicitInitList(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>                                             <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> &T,</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>                                             <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>                                             <span class="keywordtype">bool</span> TopLevelObject) {</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>   assert(IList-><a class="code" href="classclang_1_1InitListExpr.html#a15b6e428fc2e17568f424224bf3329bb">isExplicit</a>() && <span class="stringliteral">"Illegal Implicit InitListExpr"</span>);</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   <span class="keywordflow">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     SyntacticToSemantic[IList] = StructuredList;</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>     StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#a1bb0c775f7d3b946209de4b47f82532c">setSyntacticForm</a>(IList);</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="keywordtype">unsigned</span> Index = 0, StructuredIndex = 0;</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>   CheckListElementTypes(Entity, IList, T, <span class="comment">/*SubobjectIsDesignatorContext=*/</span><span class="keyword">true</span>,</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>                         Index, StructuredList, StructuredIndex, TopLevelObject);</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>   <span class="keywordflow">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ExprTy = T;</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>     <span class="keywordflow">if</span> (!ExprTy-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>())</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>       ExprTy = ExprTy.<a class="code" href="classclang_1_1QualType.html#a89e3ea65c009b7a0ea76edc56076107c" title="Determine the type of a (typically non-lvalue) expression with the specified result type...">getNonLValueExprType</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>);</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     IList-><a class="code" href="classclang_1_1Expr.html#a3b6971eecc3301041ba0d18a91fa1ceb">setType</a>(ExprTy);</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>     StructuredList-><a class="code" href="classclang_1_1Expr.html#a3b6971eecc3301041ba0d18a91fa1ceb">setType</a>(ExprTy);</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>   }</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>   <span class="keywordflow">if</span> (hadError)</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span> </div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>   <span class="keywordflow">if</span> (Index < IList->getNumInits()) {</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     <span class="comment">// We have leftover initializers</span></div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     <span class="keywordflow">if</span> (VerifyOnly) {</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>       <span class="keywordflow">if</span> (<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus ||</div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>           (<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().OpenCL &&</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>            IList-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>())) {</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>         hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>       }</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>     }</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span> </div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     <span class="keywordflow">if</span> (StructuredIndex == 1 &&</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>         <a class="code" href="SemaInit_8cpp.html#a4f2ef1cb36540f5ec4a5f2ad4ab407c4" title="Check whether the array of type AT can be initialized by the Init expression by means of string initi...">IsStringInit</a>(StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(0), T, <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) ==</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>             <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da0b69dbe5ec3b5031541f85833c880e02">SIF_None</a>) {</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>       <span class="keywordtype">unsigned</span> DK = diag::warn_excess_initializers_in_char_array_initializer;</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>       <span class="keywordflow">if</span> (<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus) {</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>         DK = diag::err_excess_initializers_in_char_array_initializer;</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>         hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>       }</div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>       <span class="comment">// Special-case</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index)-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(), DK)</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>         << IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index)-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!T-><a class="code" href="classclang_1_1Type.html#a6d84e779575f1e510f7ddc98119662bd" title="Def If non-NULL, and the type refers to some kind of declaration that can be completed (such as a C s...">isIncompleteType</a>()) {</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>       <span class="comment">// Don't complain for incomplete types, since we'll get an error</span></div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>       <span class="comment">// elsewhere</span></div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> CurrentObjectType = StructuredList-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>       <span class="keywordtype">int</span> initKind =</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>         CurrentObjectType-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>()? 0 :</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>         CurrentObjectType-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>()? 1 :</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>         CurrentObjectType-><a class="code" href="classclang_1_1Type.html#a69765f6b95c14d64a9555ab8824dac61">isScalarType</a>()? 2 :</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>         CurrentObjectType-><a class="code" href="classclang_1_1Type.html#aeb2ffe71ce3dab180574284222a92bc3">isUnionType</a>()? 3 :</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>         4;</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span> </div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>       <span class="keywordtype">unsigned</span> DK = diag::warn_excess_initializers;</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>       <span class="keywordflow">if</span> (<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus) {</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>         DK = diag::err_excess_initializers;</div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>         hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>       }</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>       <span class="keywordflow">if</span> (<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().OpenCL && initKind == 1) {</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>         DK = diag::err_excess_initializers;</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>         hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>       }</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span> </div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index)-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(), DK)</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>         << initKind << IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index)-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>     }</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>   }</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span> </div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>   <span class="keywordflow">if</span> (!VerifyOnly && T-><a class="code" href="classclang_1_1Type.html#a69765f6b95c14d64a9555ab8824dac61">isScalarType</a>() && IList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() == 1 &&</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>       !TopLevelObject)</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>     <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(), diag::warn_braces_around_scalar_init)</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>       << IList-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>()</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>       << FixItHint::CreateRemoval(IList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>())</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>       << FixItHint::CreateRemoval(IList-><a class="code" href="classclang_1_1InitListExpr.html#af6f6f4be77b3490277f43b11d7e2797c">getLocEnd</a>());</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="keywordtype">void</span> InitListChecker::CheckListElementTypes(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>                                             <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList,</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>                                             <a class="code" href="classclang_1_1QualType.html">QualType</a> &DeclType,</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>                                             <span class="keywordtype">bool</span> SubobjectIsDesignatorContext,</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>                                             <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>                                             <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>                                             <span class="keywordtype">unsigned</span> &StructuredIndex,</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>                                             <span class="keywordtype">bool</span> TopLevelObject) {</div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>   <span class="keywordflow">if</span> (DeclType-><a class="code" href="classclang_1_1Type.html#a292ac10726adf5426212b5c6ee14d9bb">isAnyComplexType</a>() && SubobjectIsDesignatorContext) {</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>     <span class="comment">// Explicitly braced initializer for complex type can be real+imaginary</span></div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>     <span class="comment">// parts.</span></div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>     CheckComplexType(Entity, IList, DeclType, Index,</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>                      StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (DeclType-><a class="code" href="classclang_1_1Type.html#a69765f6b95c14d64a9555ab8824dac61">isScalarType</a>()) {</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>     CheckScalarType(Entity, IList, DeclType, Index,</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>                     StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (DeclType-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>()) {</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>     CheckVectorType(Entity, IList, DeclType, Index,</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>                     StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (DeclType-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) {</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>     assert(DeclType-><a class="code" href="classclang_1_1Type.html#aadea9e62486670509201cda6f8bc1df4" title="Determines whether the type is a C++ aggregate type or C aggregate or union type.">isAggregateType</a>() &&</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>            <span class="stringliteral">"non-aggregate records should be handed in CheckSubElementType"</span>);</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>     <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = DeclType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl();</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>     CheckStructUnionTypes(Entity, IList, DeclType, RD->field_begin(),</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>                           SubobjectIsDesignatorContext, Index,</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>                           StructuredList, StructuredIndex,</div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>                           TopLevelObject);</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (DeclType-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>()) {</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>     llvm::APSInt Zero(</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>                     <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ae3093bf57c46337c9a3f2f42ad8764ee" title="Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.">getSizeType</a>()),</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>                     <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>     CheckArrayType(Entity, IList, DeclType, Zero,</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>                    SubobjectIsDesignatorContext, Index,</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>                    StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (DeclType-><a class="code" href="classclang_1_1Type.html#a0ee6d74a089fe24d755d9cfd8bceef3f">isVoidType</a>() || DeclType-><a class="code" href="classclang_1_1Type.html#af0ae1f40cbbc07fabfefc86af91072e3">isFunctionType</a>()) {</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>     <span class="comment">// This type is invalid, issue a diagnostic.</span></div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     ++Index;</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>     <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(), diag::err_illegal_initializer_type)</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>         << DeclType;</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (DeclType-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>     CheckReferenceType(Entity, IList, DeclType, Index,</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>                        StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (DeclType-><a class="code" href="classclang_1_1Type.html#a044e6e3fc98266ba0e065860aa6f7305">isObjCObjectType</a>()) {</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>     <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(), diag::err_init_objc_class)</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>         << DeclType;</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>     <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(), diag::err_illegal_initializer_type)</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>         << DeclType;</div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>   }</div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span> }</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span> </div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span> <span class="keywordtype">void</span> InitListChecker::CheckSubElementType(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>                                           <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList,</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>                                           <a class="code" href="classclang_1_1QualType.html">QualType</a> ElemType,</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>                                           <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>                                           <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>                                           <span class="keywordtype">unsigned</span> &StructuredIndex) {</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a> = IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index);</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span> </div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>   <span class="keywordflow">if</span> (ElemType-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>())</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>     <span class="keywordflow">return</span> CheckReferenceType(Entity, IList, ElemType, Index,</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>                               StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span> </div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *SubInitList = dyn_cast<InitListExpr>(expr)) {</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>     <span class="keywordflow">if</span> (!ElemType-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>() || ElemType-><a class="code" href="classclang_1_1Type.html#aadea9e62486670509201cda6f8bc1df4" title="Determines whether the type is a C++ aggregate type or C aggregate or union type.">isAggregateType</a>()) {</div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>       <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *InnerStructuredList</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>         = getStructuredSubobjectInit(IList, Index, ElemType,</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>                                      StructuredList, StructuredIndex,</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>                                      SubInitList->getSourceRange());</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>       CheckExplicitInitList(Entity, SubInitList, ElemType,</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>                             InnerStructuredList);</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>       ++StructuredIndex;</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>       ++Index;</div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>     }</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>     assert(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus &&</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>            <span class="stringliteral">"non-aggregate records are only possible in C++"</span>);</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>     <span class="comment">// C++ initialization is handled later.</span></div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>   }</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span> </div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>   <span class="comment">// FIXME: Need to handle atomic aggregate types with implicit init lists.</span></div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>   <span class="keywordflow">if</span> (ElemType-><a class="code" href="classclang_1_1Type.html#a69765f6b95c14d64a9555ab8824dac61">isScalarType</a>() || ElemType-><a class="code" href="classclang_1_1Type.html#a626764b819022cad4c8812cc25bbeb4d">isAtomicType</a>())</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>     <span class="keywordflow">return</span> CheckScalarType(Entity, IList, ElemType, Index,</div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>                            StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span> </div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>   assert((ElemType-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>() || ElemType-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>() ||</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>           ElemType-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>()) && <span class="stringliteral">"Unexpected type"</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">  853</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *arrayType = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(ElemType)) {</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     <span class="comment">// arrayType can be incomplete if we're initializing a flexible</span></div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>     <span class="comment">// array member.  There's nothing we can do with the completed</span></div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     <span class="comment">// type here, though.</span></div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span> </div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>     <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#a4f2ef1cb36540f5ec4a5f2ad4ab407c4" title="Check whether the array of type AT can be initialized by the Init expression by means of string initi...">IsStringInit</a>(expr, arrayType, <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) == <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da0b69dbe5ec3b5031541f85833c880e02">SIF_None</a>) {</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>       <span class="keywordflow">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>         <a class="code" href="SemaInit_8cpp.html#a92e10202beb9335517a7a511f5aba0a7">CheckStringInit</a>(expr, ElemType, arrayType, <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>);</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>         UpdateStructuredListElement(StructuredList, StructuredIndex, expr);</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>       }</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>       ++Index;</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>       <span class="keywordflow">return</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="comment">// Fall through for subaggregate initialization.</span></div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span> </div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus) {</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>     <span class="comment">// C++ [dcl.init.aggr]p12:</span></div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>     <span class="comment">//   All implicit type conversions (clause 4) are considered when</span></div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>     <span class="comment">//   initializing the aggregate member with an initializer from</span></div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>     <span class="comment">//   an initializer-list. If the initializer can initialize a</span></div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>     <span class="comment">//   member, the member is initialized. [...]</span></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>     <span class="comment">// FIXME: Better EqualLoc?</span></div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>     <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> Kind =</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>       InitializationKind::CreateCopy(expr-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(), <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>());</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>     <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> Seq(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>, Entity, Kind, expr);</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span> </div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>     <span class="keywordflow">if</span> (Seq) {</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>       <span class="keywordflow">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>         <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> Result =</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>           Seq.Perform(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>, Entity, Kind, expr);</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>         <span class="keywordflow">if</span> (Result.<a class="code" href="classclang_1_1ActionResult.html#ac9ac9ca2df07fbb1931300e2a926351a">isInvalid</a>())</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>           hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span> </div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>         UpdateStructuredListElement(StructuredList, StructuredIndex,</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>                                     Result.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>());</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>       }</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>       ++Index;</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>     }</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span> </div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>     <span class="comment">// Fall through for subaggregate initialization</span></div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>     <span class="comment">// C99 6.7.8p13:</span></div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>     <span class="comment">//   The initializer for a structure or union object that has</span></div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>     <span class="comment">//   automatic storage duration shall be either an initializer</span></div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>     <span class="comment">//   list as described below, or a single expression that has</span></div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>     <span class="comment">//   compatible structure or union type. In the latter case, the</span></div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>     <span class="comment">//   initial value of the object, including unnamed members, is</span></div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>     <span class="comment">//   that of the expression.</span></div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>     <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> ExprRes = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ae88e27735e88a2d4ef2d863eab8865ba">Owned</a>(expr);</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>     <span class="keywordflow">if</span> ((ElemType-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>() || ElemType-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>()) &&</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>         <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a2562b169e9dec351f8d4654c982b4f8a">CheckSingleAssignmentConstraints</a>(ElemType, ExprRes,</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>                                                  !VerifyOnly)</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>           != Sema::Incompatible) {</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>       <span class="keywordflow">if</span> (ExprRes.<a class="code" href="classclang_1_1ActionResult.html#ac9ac9ca2df07fbb1931300e2a926351a">isInvalid</a>())</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>         hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>       <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>         ExprRes = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#aa6ce8098fd2a7b59969e125805b897f4">DefaultFunctionArrayLvalueConversion</a>(ExprRes.<a class="code" href="classclang_1_1ActionResult.html#a938165c101b60e87ee1956ed4950fd9a">take</a>());</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>           <span class="keywordflow">if</span> (ExprRes.<a class="code" href="classclang_1_1ActionResult.html#ac9ac9ca2df07fbb1931300e2a926351a">isInvalid</a>())</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>             hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>       }</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>       UpdateStructuredListElement(StructuredList, StructuredIndex,</div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>                                   ExprRes.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>());</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>       ++Index;</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>     }</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>     ExprRes.<a class="code" href="classclang_1_1ActionResult.html#af3c660207dfebb140ea0832cd41dfeb1">release</a>();</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>     <span class="comment">// Fall through for subaggregate initialization</span></div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>   }</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span> </div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>   <span class="comment">// C++ [dcl.init.aggr]p12:</span></div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>   <span class="comment">//   [...] Otherwise, if the member is itself a non-empty</span></div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>   <span class="comment">//   subaggregate, brace elision is assumed and the initializer is</span></div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>   <span class="comment">//   considered for the initialization of the first member of</span></div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>   <span class="comment">//   the subaggregate.</span></div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>   <span class="keywordflow">if</span> (!<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().OpenCL && </div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>       (ElemType-><a class="code" href="classclang_1_1Type.html#aadea9e62486670509201cda6f8bc1df4" title="Determines whether the type is a C++ aggregate type or C aggregate or union type.">isAggregateType</a>() || ElemType-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>())) {</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>     CheckImplicitInitList(Entity, IList, ElemType, Index, StructuredList,</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>                           StructuredIndex);</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>     ++StructuredIndex;</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>     <span class="keywordflow">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>       <span class="comment">// We cannot initialize this element, so let</span></div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>       <span class="comment">// PerformCopyInitialization produce the appropriate diagnostic.</span></div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad36f57d7a801997658ab43b24034db20">PerformCopyInitialization</a>(Entity, <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="l00942"></a><span class="lineno">  942</span>                                         <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ae88e27735e88a2d4ef2d863eab8865ba">Owned</a>(expr),</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>                                         <span class="comment">/*TopLevelOfInitList=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>     }</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>     ++Index;</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>     ++StructuredIndex;</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>   }</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span> }</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span> </div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span> <span class="keywordtype">void</span> InitListChecker::CheckComplexType(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>                                        <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType,</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>                                        <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>                                        <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>                                        <span class="keywordtype">unsigned</span> &StructuredIndex) {</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>   assert(Index == 0 && <span class="stringliteral">"Index in explicit init list must be zero"</span>);</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="comment">// As an extension, clang supports complex initializers, which initialize</span></div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>   <span class="comment">// a complex number component-wise.  When an explicit initializer list for</span></div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>   <span class="comment">// a complex number contains two two initializers, this extension kicks in:</span></div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>   <span class="comment">// it exepcts the initializer list to contain two elements convertible to</span></div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>   <span class="comment">// the element type of the complex type. The first element initializes</span></div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>   <span class="comment">// the real part, and the second element intitializes the imaginary part.</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>   <span class="keywordflow">if</span> (IList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() != 2)</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>     <span class="keywordflow">return</span> CheckScalarType(Entity, IList, DeclType, Index, StructuredList,</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>                            StructuredIndex);</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span> </div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>   <span class="comment">// This is an extension in C.  (The builtin _Complex type does not exist</span></div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>   <span class="comment">// in the C++ standard.)</span></div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>   <span class="keywordflow">if</span> (!<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus && !VerifyOnly)</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>     <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(), diag::ext_complex_component_init)</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>       << IList-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span> </div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>   <span class="comment">// Initialize the complex number.</span></div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType = DeclType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ComplexType.html">ComplexType</a>>()-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>   <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> ElementEntity =</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>     InitializedEntity::InitializeElement(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, 0, Entity);</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < 2; ++i) {</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>     ElementEntity.<a class="code" href="classclang_1_1InitializedEntity.html#a7a60eb1081934fd72dcaf830b9e05d38" title="If this is already the initializer for an array or vector element, sets the element index...">setElementIndex</a>(Index);</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>     CheckSubElementType(ElementEntity, IList, elementType, Index,</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>                         StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>   }</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span> }</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">  988</span> <span class="keywordtype">void</span> InitListChecker::CheckScalarType(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>                                       <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType,</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>                                       <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>                                       <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>                                       <span class="keywordtype">unsigned</span> &StructuredIndex) {</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>   <span class="keywordflow">if</span> (Index >= IList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>()) {</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>     <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(),</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>                    <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus11 ?</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>                      diag::warn_cxx98_compat_empty_scalar_initializer :</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>                      diag::err_empty_scalar_initializer)</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>         << IList-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>     hadError = !<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus11;</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>     ++Index;</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>     ++StructuredIndex;</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>   }</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> </div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *expr = IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index);</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *SubIList = dyn_cast<InitListExpr>(expr)) {</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>     <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SubIList->getLocStart(),</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>                    diag::warn_many_braces_around_scalar_init)</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>         << SubIList->getSourceRange();</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> </div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>     CheckScalarType(Entity, SubIList, DeclType, Index, StructuredList,</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>                     StructuredIndex);</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isa<DesignatedInitExpr>(expr)) {</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>     <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(expr-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>                    diag::err_designator_for_scalar_init)</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>         << DeclType << expr-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>     ++Index;</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>     ++StructuredIndex;</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>   }</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>   <span class="keywordflow">if</span> (VerifyOnly) {</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>     <span class="keywordflow">if</span> (!<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#aedb8504694219aa168d394bb74c1a774">CanPerformCopyInitialization</a>(Entity, <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ae88e27735e88a2d4ef2d863eab8865ba">Owned</a>(expr)))</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>       hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     ++Index;</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>   <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> Result =</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>     <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad36f57d7a801997658ab43b24034db20">PerformCopyInitialization</a>(Entity, expr-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>                                       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ae88e27735e88a2d4ef2d863eab8865ba">Owned</a>(expr),</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>                                       <span class="comment">/*TopLevelOfInitList=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> </div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *ResultExpr = 0;</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> </div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>   <span class="keywordflow">if</span> (Result.<a class="code" href="classclang_1_1ActionResult.html#ac9ac9ca2df07fbb1931300e2a926351a">isInvalid</a>())</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>     hadError = <span class="keyword">true</span>; <span class="comment">// types weren't compatible.</span></div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>   <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     ResultExpr = Result.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>();</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>     <span class="keywordflow">if</span> (ResultExpr != expr) {</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>       <span class="comment">// The type was promoted, update initializer list.</span></div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>       IList-><a class="code" href="classclang_1_1InitListExpr.html#a6858a240f6329b5c5106e38b96bfb611">setInit</a>(Index, ResultExpr);</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>     }</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>   }</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>   <span class="keywordflow">if</span> (hadError)</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>     ++StructuredIndex;</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>     UpdateStructuredListElement(StructuredList, StructuredIndex, ResultExpr);</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>   ++Index;</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> <span class="keywordtype">void</span> InitListChecker::CheckReferenceType(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>                                          <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType,</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>                                          <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>                                          <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>                                          <span class="keywordtype">unsigned</span> &StructuredIndex) {</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>   <span class="keywordflow">if</span> (Index >= IList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>()) {</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>     <span class="comment">// FIXME: It would be wonderful if we could point at the actual member. In</span></div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>     <span class="comment">// general, it would be useful to pass location information down the stack,</span></div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>     <span class="comment">// so that we know the location (or decl) of the "current object" being</span></div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>     <span class="comment">// initialized.</span></div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>     <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(),</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>                     diag::err_init_reference_member_uninitialized)</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>         << DeclType</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>         << IList-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>     ++Index;</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>     ++StructuredIndex;</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>   }</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> </div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *expr = IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index);</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>   <span class="keywordflow">if</span> (isa<InitListExpr>(expr) && !<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus11) {</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>     <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(), diag::err_init_non_aggr_init_list)</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>         << DeclType << IList-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>     ++Index;</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>     ++StructuredIndex;</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>   }</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> </div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>   <span class="keywordflow">if</span> (VerifyOnly) {</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>     <span class="keywordflow">if</span> (!<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#aedb8504694219aa168d394bb74c1a774">CanPerformCopyInitialization</a>(Entity, <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ae88e27735e88a2d4ef2d863eab8865ba">Owned</a>(expr)))</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>       hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>     ++Index;</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>   }</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> </div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>   <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> Result =</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>     <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad36f57d7a801997658ab43b24034db20">PerformCopyInitialization</a>(Entity, expr-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>                                       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ae88e27735e88a2d4ef2d863eab8865ba">Owned</a>(expr),</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>                                       <span class="comment">/*TopLevelOfInitList=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> </div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>   <span class="keywordflow">if</span> (Result.<a class="code" href="classclang_1_1ActionResult.html#ac9ac9ca2df07fbb1931300e2a926351a">isInvalid</a>())</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> </div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>   expr = Result.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>();</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>   IList-><a class="code" href="classclang_1_1InitListExpr.html#a6858a240f6329b5c5106e38b96bfb611">setInit</a>(Index, expr);</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> </div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>   <span class="keywordflow">if</span> (hadError)</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>     ++StructuredIndex;</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>     UpdateStructuredListElement(StructuredList, StructuredIndex, expr);</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>   ++Index;</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> }</div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> </div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> <span class="keywordtype">void</span> InitListChecker::CheckVectorType(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>                                       <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType,</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>                                       <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>                                       <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>                                       <span class="keywordtype">unsigned</span> &StructuredIndex) {</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1VectorType.html">VectorType</a> *VT = DeclType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1VectorType.html">VectorType</a>>();</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>   <span class="keywordtype">unsigned</span> maxElements = VT-><a class="code" href="classclang_1_1VectorType.html#adfa7e090380e24449722cc934b2a71b1">getNumElements</a>();</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>   <span class="keywordtype">unsigned</span> numEltsInit = 0;</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType = VT-><a class="code" href="classclang_1_1VectorType.html#aa82693de604f63a6366f39372252ab42">getElementType</a>();</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span> </div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>   <span class="keywordflow">if</span> (Index >= IList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>()) {</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>     <span class="comment">// Make sure the element type can be value-initialized.</span></div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>     <span class="keywordflow">if</span> (VerifyOnly)</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>       CheckValueInitializable(</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>           InitializedEntity::InitializeElement(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, 0, Entity));</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>   }</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span> </div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>   <span class="keywordflow">if</span> (!<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().OpenCL) {</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>     <span class="comment">// If the initializing element is a vector, try to copy-initialize</span></div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>     <span class="comment">// instead of breaking it apart (which is doomed to failure anyway).</span></div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init = IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index);</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>     <span class="keywordflow">if</span> (!isa<InitListExpr>(Init) && Init-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>()) {</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>       <span class="keywordflow">if</span> (VerifyOnly) {</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>         <span class="keywordflow">if</span> (!<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#aedb8504694219aa168d394bb74c1a774">CanPerformCopyInitialization</a>(Entity, <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ae88e27735e88a2d4ef2d863eab8865ba">Owned</a>(Init)))</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>           hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>         ++Index;</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>       }</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> </div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>       <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> Result =</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>         <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad36f57d7a801997658ab43b24034db20">PerformCopyInitialization</a>(Entity, Init-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>                                           <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ae88e27735e88a2d4ef2d863eab8865ba">Owned</a>(Init),</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>                                           <span class="comment">/*TopLevelOfInitList=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> </div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>       <a class="code" href="classclang_1_1Expr.html">Expr</a> *ResultExpr = 0;</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>       <span class="keywordflow">if</span> (Result.<a class="code" href="classclang_1_1ActionResult.html#ac9ac9ca2df07fbb1931300e2a926351a">isInvalid</a>())</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>         hadError = <span class="keyword">true</span>; <span class="comment">// types weren't compatible.</span></div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>       <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>         ResultExpr = Result.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>();</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">if</span> (ResultExpr != Init) {</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>           <span class="comment">// The type was promoted, update initializer list.</span></div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>           IList-><a class="code" href="classclang_1_1InitListExpr.html#a6858a240f6329b5c5106e38b96bfb611">setInit</a>(Index, ResultExpr);</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>         }</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>       }</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>       <span class="keywordflow">if</span> (hadError)</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>         ++StructuredIndex;</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>         UpdateStructuredListElement(StructuredList, StructuredIndex,</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>                                     ResultExpr);</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>       ++Index;</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>     }</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> </div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>     <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> ElementEntity =</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>       InitializedEntity::InitializeElement(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, 0, Entity);</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> </div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < maxElements; ++i, ++numEltsInit) {</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>       <span class="comment">// Don't attempt to go past the end of the init list</span></div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>       <span class="keywordflow">if</span> (Index >= IList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>()) {</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>         <span class="keywordflow">if</span> (VerifyOnly)</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>           CheckValueInitializable(ElementEntity);</div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>       }</div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span> </div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>       ElementEntity.<a class="code" href="classclang_1_1InitializedEntity.html#a7a60eb1081934fd72dcaf830b9e05d38" title="If this is already the initializer for an array or vector element, sets the element index...">setElementIndex</a>(Index);</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>       CheckSubElementType(ElementEntity, IList, elementType, Index,</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>                           StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>     }</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>   <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> ElementEntity =</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>     InitializedEntity::InitializeElement(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, 0, Entity);</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="comment">// OpenCL initializers allows vectors to be constructed from vectors.</span></div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < maxElements; ++i) {</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>     <span class="comment">// Don't attempt to go past the end of the init list</span></div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>     <span class="keywordflow">if</span> (Index >= IList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>())</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> </div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>     ElementEntity.<a class="code" href="classclang_1_1InitializedEntity.html#a7a60eb1081934fd72dcaf830b9e05d38" title="If this is already the initializer for an array or vector element, sets the element index...">setElementIndex</a>(Index);</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> </div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> IType = IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index)-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>     <span class="keywordflow">if</span> (!IType-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>()) {</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>       CheckSubElementType(ElementEntity, IList, elementType, Index,</div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>                           StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>       ++numEltsInit;</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> VecType;</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1VectorType.html">VectorType</a> *IVT = IType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1VectorType.html">VectorType</a>>();</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>       <span class="keywordtype">unsigned</span> numIElts = IVT-><a class="code" href="classclang_1_1VectorType.html#adfa7e090380e24449722cc934b2a71b1">getNumElements</a>();</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>       <span class="keywordflow">if</span> (IType-><a class="code" href="classclang_1_1Type.html#aa46cb894fc6f6f4e43d48232b6129d0b">isExtVectorType</a>())</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>         VecType = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a083cfef8b192871196e505a9295a77ad" title="Return the unique reference to an extended vector type of the specified element type and size...">getExtVectorType</a>(elementType, numIElts);</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>         VecType = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a9ede456580df03d5d74568b3c533eaa9" title="Return the unique reference to a vector type of the specified element type and size.">getVectorType</a>(elementType, numIElts,</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>                                                 IVT-><a class="code" href="classclang_1_1VectorType.html#a11d7df86c16906cee06ddffcc2845245">getVectorKind</a>());</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>       CheckSubElementType(ElementEntity, IList, VecType, Index,</div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>                           StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>       numEltsInit += numIElts;</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>     }</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>   }</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> </div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>   <span class="comment">// OpenCL requires all elements to be initialized.</span></div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>   <span class="keywordflow">if</span> (numEltsInit != maxElements) {</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>     <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(),</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>                    diag::err_vector_incorrect_num_initializers)</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>         << (numEltsInit < maxElements) << maxElements << numEltsInit;</div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>   }</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> }</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span> </div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> <span class="keywordtype">void</span> InitListChecker::CheckArrayType(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>                                      <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <a class="code" href="classclang_1_1QualType.html">QualType</a> &DeclType,</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>                                      llvm::APSInt elementIndex,</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>                                      <span class="keywordtype">bool</span> SubobjectIsDesignatorContext,</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>                                      <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>                                      <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>                                      <span class="keywordtype">unsigned</span> &StructuredIndex) {</div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *arrayType = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(DeclType);</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> </div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>   <span class="comment">// Check for the special-case of initializing an array with a string.</span></div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>   <span class="keywordflow">if</span> (Index < IList->getNumInits()) {</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>     <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#a4f2ef1cb36540f5ec4a5f2ad4ab407c4" title="Check whether the array of type AT can be initialized by the Init expression by means of string initi...">IsStringInit</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index), arrayType, <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) ==</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>         <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da0b69dbe5ec3b5031541f85833c880e02">SIF_None</a>) {</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>       <span class="comment">// We place the string literal directly into the resulting</span></div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>       <span class="comment">// initializer list. This is the only place where the structure</span></div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>       <span class="comment">// of the structured initializer list doesn't match exactly,</span></div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>       <span class="comment">// because doing so would involve allocating one character</span></div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>       <span class="comment">// constant for each string.</span></div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>       <span class="keywordflow">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>         <a class="code" href="SemaInit_8cpp.html#a92e10202beb9335517a7a511f5aba0a7">CheckStringInit</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index), DeclType, arrayType, <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>);</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>         UpdateStructuredListElement(StructuredList, StructuredIndex,</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>                                     IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index));</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>         StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#a53e837eb4723c032fe96aa58bb7e8931" title="Specify the number of initializers.">resizeInits</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, StructuredIndex);</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>       }</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>       ++Index;</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>     }</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>   }</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1VariableArrayType.html">VariableArrayType</a> *VAT = dyn_cast<VariableArrayType>(arrayType)) {</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>     <span class="comment">// Check for VLAs; in standard C it would be possible to check this</span></div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>     <span class="comment">// earlier, but I don't know where clang accepts VLAs (gcc accepts</span></div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>     <span class="comment">// them in all sorts of strange places).</span></div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>     <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(VAT->getSizeExpr()->getLocStart(),</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>                     diag::err_variable_object_no_init)</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>         << VAT->getSizeExpr()->getSourceRange();</div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>     ++Index;</div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>     ++StructuredIndex;</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>   }</div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> </div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>   <span class="comment">// We might know the maximum number of elements in advance.</span></div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>   llvm::APSInt maxElements(elementIndex.getBitWidth(),</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>                            elementIndex.isUnsigned());</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>   <span class="keywordtype">bool</span> maxElementsKnown = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *CAT = dyn_cast<ConstantArrayType>(arrayType)) {</div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>     maxElements = CAT->getSize();</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>     elementIndex = elementIndex.extOrTrunc(maxElements.getBitWidth());</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>     elementIndex.setIsUnsigned(maxElements.isUnsigned());</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>     maxElementsKnown = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>   }</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> </div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType = arrayType-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>();</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>   <span class="keywordflow">while</span> (Index < IList->getNumInits()) {</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>     <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init = IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index);</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1DesignatedInitExpr.html" title="Represents a C99 designated initializer expression.">DesignatedInitExpr</a> *DIE = dyn_cast<DesignatedInitExpr>(Init)) {</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>       <span class="comment">// If we're not the subobject that matches up with the '{' for</span></div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>       <span class="comment">// the designator, we shouldn't be handling the</span></div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>       <span class="comment">// designator. Return immediately.</span></div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>       <span class="keywordflow">if</span> (!SubobjectIsDesignatorContext)</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>         <span class="keywordflow">return</span>;</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="comment">// Handle this designated initializer. elementIndex will be</span></div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>       <span class="comment">// updated to be the next array element we'll initialize.</span></div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>       <span class="keywordflow">if</span> (CheckDesignatedInitializer(Entity, IList, DIE, 0,</div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>                                      DeclType, 0, &elementIndex, Index,</div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>                                      StructuredList, StructuredIndex, <span class="keyword">true</span>,</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>                                      <span class="keyword">false</span>)) {</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>         hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>       }</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> </div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>       <span class="keywordflow">if</span> (elementIndex.getBitWidth() > maxElements.getBitWidth())</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>         maxElements = maxElements.extend(elementIndex.getBitWidth());</div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elementIndex.getBitWidth() < maxElements.getBitWidth())</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>         elementIndex = elementIndex.extend(maxElements.getBitWidth());</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>       elementIndex.setIsUnsigned(maxElements.isUnsigned());</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 the array is of incomplete type, keep track of the number of</span></div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>       <span class="comment">// elements in the initializer.</span></div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>       <span class="keywordflow">if</span> (!maxElementsKnown && elementIndex > maxElements)</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>         maxElements = elementIndex;</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>       <span class="keywordflow">continue</span>;</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> </div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>     <span class="comment">// If we know the maximum number of elements, and we've already</span></div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>     <span class="comment">// hit it, stop consuming elements in the initializer list.</span></div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>     <span class="keywordflow">if</span> (maxElementsKnown && elementIndex == maxElements)</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> </div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>     <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> ElementEntity =</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>       InitializedEntity::InitializeElement(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, StructuredIndex,</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>                                            Entity);</div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>     <span class="comment">// Check this element.</span></div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>     CheckSubElementType(ElementEntity, IList, elementType, Index,</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>                         StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>     ++elementIndex;</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> </div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>     <span class="comment">// If the array is of incomplete type, keep track of the number of</span></div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>     <span class="comment">// elements in the initializer.</span></div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>     <span class="keywordflow">if</span> (!maxElementsKnown && elementIndex > maxElements)</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>       maxElements = elementIndex;</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="keywordflow">if</span> (!hadError && DeclType-><a class="code" href="classclang_1_1Type.html#a9394ebc74a8c7ad58b9f15abafcbbde2">isIncompleteArrayType</a>() && !VerifyOnly) {</div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>     <span class="comment">// If this is an incomplete array type, the actual type needs to</span></div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>     <span class="comment">// be calculated here.</span></div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>     llvm::APSInt Zero(maxElements.getBitWidth(), maxElements.isUnsigned());</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>     <span class="keywordflow">if</span> (maxElements == Zero) {</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>       <span class="comment">// Sizing an array implicitly to zero is not allowed by ISO C,</span></div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>       <span class="comment">// but is supported by GNU.</span></div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(),</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>                     diag::ext_typecheck_zero_array_size);</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>     }</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span> </div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>     DeclType = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a1dfd9aba04afad486b0dbbfc17de130b" title="Return the unique reference to the type for a constant array of the specified element type...">getConstantArrayType</a>(elementType, maxElements,</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>                                                      ArrayType::Normal, 0);</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="keywordflow">if</span> (!hadError && VerifyOnly) {</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>     <span class="comment">// Check if there are any members of the array that get value-initialized.</span></div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>     <span class="comment">// If so, check if doing that is possible.</span></div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>     <span class="comment">// FIXME: This needs to detect holes left by designated initializers too.</span></div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>     <span class="keywordflow">if</span> (maxElementsKnown && elementIndex < maxElements)</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>       CheckValueInitializable(InitializedEntity::InitializeElement(</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>                                                   <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, 0, Entity));</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>   }</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span> }</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span> </div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span> <span class="keywordtype">bool</span> InitListChecker::CheckFlexibleArrayInit(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>                                              <a class="code" href="classclang_1_1Expr.html">Expr</a> *InitExpr,</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>                                              <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field,</div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>                                              <span class="keywordtype">bool</span> TopLevelObject) {</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>   <span class="comment">// Handle GNU flexible array initializers.</span></div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>   <span class="keywordtype">unsigned</span> FlexArrayDiag;</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>   <span class="keywordflow">if</span> (isa<InitListExpr>(InitExpr) &&</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>       cast<InitListExpr>(InitExpr)->getNumInits() == 0) {</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>     <span class="comment">// Empty flexible array init always allowed as an extension</span></div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>     FlexArrayDiag = diag::ext_flexible_array_init;</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus) {</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>     <span class="comment">// Disallow flexible array init in C++; it is not required for gcc</span></div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>     <span class="comment">// compatibility, and it needs work to IRGen correctly in general.</span></div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>     FlexArrayDiag = diag::err_flexible_array_init;</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!TopLevelObject) {</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>     <span class="comment">// Disallow flexible array init on non-top-level object</span></div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>     FlexArrayDiag = diag::err_flexible_array_init;</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a22f327e1c51a6322f89ceaef6be71908" title="Determine the kind of initialization.">getKind</a>() != InitializedEntity::EK_Variable) {</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>     <span class="comment">// Disallow flexible array init on anything which is not a variable.</span></div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>     FlexArrayDiag = diag::err_flexible_array_init;</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cast<VarDecl>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a612d72ea3c50c222159473b73a994e12" title="Retrieve the variable, parameter, or field being initialized.">getDecl</a>())->hasLocalStorage()) {</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>     <span class="comment">// Disallow flexible array init on local variables.</span></div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>     FlexArrayDiag = diag::err_flexible_array_init;</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>     <span class="comment">// Allow other cases.</span></div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>     FlexArrayDiag = diag::ext_flexible_array_init;</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>   }</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">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>     <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(InitExpr-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>                  FlexArrayDiag)</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>       << InitExpr-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>     <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Field-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_flexible_array_member)</div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>       << Field;</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>   }</div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> </div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>   <span class="keywordflow">return</span> FlexArrayDiag != diag::ext_flexible_array_init;</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span> }</div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> </div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> <span class="keywordtype">void</span> InitListChecker::CheckStructUnionTypes(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>                                             <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList,</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>                                             <a class="code" href="classclang_1_1QualType.html">QualType</a> DeclType,</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>                                             <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> Field,</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>                                             <span class="keywordtype">bool</span> SubobjectIsDesignatorContext,</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>                                             <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>                                             <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>                                             <span class="keywordtype">unsigned</span> &StructuredIndex,</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>                                             <span class="keywordtype">bool</span> TopLevelObject) {</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>   <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a>* structDecl = DeclType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl();</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> </div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>   <span class="comment">// If the record is invalid, some of it's members are invalid. To avoid</span></div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>   <span class="comment">// confusion, we forgo checking the intializer for the entire record.</span></div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>   <span class="keywordflow">if</span> (structDecl-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>()) {</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>     <span class="comment">// Assume it was supposed to consume a single initializer.</span></div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>     ++Index;</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>   }</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span> </div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>   <span class="keywordflow">if</span> (DeclType-><a class="code" href="classclang_1_1Type.html#aeb2ffe71ce3dab180574284222a92bc3">isUnionType</a>() && IList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() == 0) {</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>     <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = DeclType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl();</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span> </div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>     <span class="comment">// If there's a default initializer, use it.</span></div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>     <span class="keywordflow">if</span> (isa<CXXRecordDecl>(RD) && cast<CXXRecordDecl>(RD)->hasInClassInitializer()) {</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>       <span class="keywordflow">if</span> (VerifyOnly)</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> FieldEnd = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>            Field != FieldEnd; ++Field) {</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>         <span class="keywordflow">if</span> (Field->hasInClassInitializer()) {</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>           StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#ada2c5d60a22de37a99a744a1db5988fe">setInitializedFieldInUnion</a>(*Field);</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>           <span class="comment">// FIXME: Actually build a CXXDefaultInitExpr?</span></div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>           <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>         }</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>       }</div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>     }</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span> </div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>     <span class="comment">// Value-initialize the first named member of the union.</span></div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> FieldEnd = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>          Field != FieldEnd; ++Field) {</div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>       <span class="keywordflow">if</span> (Field->getDeclName()) {</div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>         <span class="keywordflow">if</span> (VerifyOnly)</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>           CheckValueInitializable(</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>               InitializedEntity::InitializeMember(*Field, &Entity));</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>           StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#ada2c5d60a22de37a99a744a1db5988fe">setInitializedFieldInUnion</a>(*Field);</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>         <span class="keywordflow">break</span>;</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>     }</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>     <span class="keywordflow">return</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>   <span class="comment">// If structDecl is a forward declaration, this loop won't do</span></div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>   <span class="comment">// anything except look at designated initializers; That's okay,</span></div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>   <span class="comment">// because an error should get printed out elsewhere. It might be</span></div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>   <span class="comment">// worthwhile to skip over the rest of the initializer, though.</span></div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>   <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = DeclType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl();</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>   <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> FieldEnd = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>   <span class="keywordtype">bool</span> InitializedSomething = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>   <span class="keywordtype">bool</span> CheckForMissingFields = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>   <span class="keywordflow">while</span> (Index < IList->getNumInits()) {</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>     <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init = IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index);</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> </div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1DesignatedInitExpr.html" title="Represents a C99 designated initializer expression.">DesignatedInitExpr</a> *DIE = dyn_cast<DesignatedInitExpr>(Init)) {</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>       <span class="comment">// If we're not the subobject that matches up with the '{' for</span></div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>       <span class="comment">// the designator, we shouldn't be handling the</span></div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>       <span class="comment">// designator. Return immediately.</span></div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>       <span class="keywordflow">if</span> (!SubobjectIsDesignatorContext)</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> </div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>       <span class="comment">// Handle this designated initializer. Field will be updated to</span></div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>       <span class="comment">// the next field that we'll be initializing.</span></div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>       <span class="keywordflow">if</span> (CheckDesignatedInitializer(Entity, IList, DIE, 0,</div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>                                      DeclType, &Field, 0, Index,</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>                                      StructuredList, StructuredIndex,</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>                                      <span class="keyword">true</span>, TopLevelObject))</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>         hadError = <span class="keyword">true</span>;</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>       InitializedSomething = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span> </div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>       <span class="comment">// Disable check for missing fields when designators are used.</span></div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>       <span class="comment">// This matches gcc behaviour.</span></div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>       CheckForMissingFields = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>     }</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span> </div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>     <span class="keywordflow">if</span> (Field == FieldEnd) {</div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>       <span class="comment">// We've run out of fields. We're done.</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>       <span class="keywordflow">break</span>;</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> </div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>     <span class="comment">// We've already initialized a member of a union. We're done.</span></div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>     <span class="keywordflow">if</span> (InitializedSomething && DeclType-><a class="code" href="classclang_1_1Type.html#aeb2ffe71ce3dab180574284222a92bc3">isUnionType</a>())</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> </div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>     <span class="comment">// If we've hit the flexible array member at the end, we're done.</span></div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>     <span class="keywordflow">if</span> (Field->getType()->isIncompleteArrayType())</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span> </div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>     <span class="keywordflow">if</span> (Field->isUnnamedBitfield()) {</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>       <span class="comment">// Don't initialize unnamed bitfields, e.g. "int : 20;"</span></div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>       ++Field;</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>       <span class="keywordflow">continue</span>;</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> </div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>     <span class="comment">// Make sure we can use this declaration.</span></div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>     <span class="keywordtype">bool</span> InvalidUse;</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>     <span class="keywordflow">if</span> (VerifyOnly)</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>       InvalidUse = !<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a231963e96c2d720fdb660cdb2e29d2dc" title="Determine whether the use of this declaration is valid, without emitting diagnostics.">CanUseDecl</a>(*Field);</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>       InvalidUse = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3d210c887f39c25660ade50a840938b8" title="Determine whether the use of this declaration is valid, and emit any corresponding diagnostics...">DiagnoseUseOfDecl</a>(*Field,</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>                                           IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index)-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>());</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>     <span class="keywordflow">if</span> (InvalidUse) {</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>       ++Index;</div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>       ++Field;</div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>       hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>     }</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span> </div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>     <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> MemberEntity =</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>       InitializedEntity::InitializeMember(*Field, &Entity);</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>     CheckSubElementType(MemberEntity, IList, Field->getType(), Index,</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>                         StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>     InitializedSomething = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span> </div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>     <span class="keywordflow">if</span> (DeclType-><a class="code" href="classclang_1_1Type.html#aeb2ffe71ce3dab180574284222a92bc3">isUnionType</a>() && !VerifyOnly) {</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>       <span class="comment">// Initialize the first field within the union.</span></div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>       StructuredList->setInitializedFieldInUnion(*Field);</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> </div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>     ++Field;</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>   <span class="comment">// Emit warnings for missing struct field initializers.</span></div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>   <span class="keywordflow">if</span> (!VerifyOnly && InitializedSomething && CheckForMissingFields &&</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>       Field != FieldEnd && !Field->getType()->isIncompleteArrayType() &&</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>       !DeclType-><a class="code" href="classclang_1_1Type.html#aeb2ffe71ce3dab180574284222a92bc3">isUnionType</a>()) {</div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>     <span class="comment">// It is possible we have one or more unnamed bitfields remaining.</span></div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>     <span class="comment">// Find first (if any) named field and emit warning.</span></div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> it = Field, end = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>          it != end; ++it) {</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>       <span class="keywordflow">if</span> (!it->isUnnamedBitfield() && !it->hasInClassInitializer()) {</div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>         <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IList-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>().<a class="code" href="classclang_1_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0">getEnd</a>(),</div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>                      diag::warn_missing_field_initializers) << it->getName();</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>       }</div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>     }</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>   }</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span> </div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>   <span class="comment">// Check that any remaining fields can be value-initialized.</span></div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>   <span class="keywordflow">if</span> (VerifyOnly && Field != FieldEnd && !DeclType-><a class="code" href="classclang_1_1Type.html#aeb2ffe71ce3dab180574284222a92bc3">isUnionType</a>() &&</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>       !Field->getType()->isIncompleteArrayType()) {</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>     <span class="comment">// FIXME: Should check for holes left by designated initializers too.</span></div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>     <span class="keywordflow">for</span> (; Field != FieldEnd && !hadError; ++Field) {</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>       <span class="keywordflow">if</span> (!Field->isUnnamedBitfield() && !Field->hasInClassInitializer())</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>         CheckValueInitializable(</div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>             InitializedEntity::InitializeMember(*Field, &Entity));</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>     }</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>   }</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> </div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>   <span class="keywordflow">if</span> (Field == FieldEnd || !Field->getType()->isIncompleteArrayType() ||</div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>       Index >= IList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>())</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span> </div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>   <span class="keywordflow">if</span> (CheckFlexibleArrayInit(Entity, IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index), *Field,</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>                              TopLevelObject)) {</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>     hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>     ++Index;</div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>   }</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span> </div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>   <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> MemberEntity =</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>     InitializedEntity::InitializeMember(*Field, &Entity);</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="keywordflow">if</span> (isa<InitListExpr>(IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index)))</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>     CheckSubElementType(MemberEntity, IList, Field->getType(), Index,</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>                         StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>     CheckImplicitInitList(MemberEntity, IList, Field->getType(), Index,</div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>                           StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span> }</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span> <span class="comment"></span></div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span> <span class="comment">/// \brief Expand a field designator that refers to a member of an</span></div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span> <span class="comment">/// anonymous struct or union into a series of field designators that</span></div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span> <span class="comment">/// refers to the field within the appropriate subobject.</span></div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01584"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a84e8eabf800bd9ea28852d45130f5c15"> 1584</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a84e8eabf800bd9ea28852d45130f5c15" title="Expand a field designator that refers to a member of an anonymous struct or union into a series of fi...">ExpandAnonymousFieldDesignator</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>,</div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>                                            <a class="code" href="classclang_1_1DesignatedInitExpr.html" title="Represents a C99 designated initializer expression.">DesignatedInitExpr</a> *DIE,</div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>                                            <span class="keywordtype">unsigned</span> DesigIdx,</div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>                                            <a class="code" href="classclang_1_1IndirectFieldDecl.html">IndirectFieldDecl</a> *IndirectField) {</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>   <span class="keyword">typedef</span> <a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html" title="Represents a single C99 designator.">DesignatedInitExpr::Designator</a> <a class="code" href="classclang_1_1Designator.html">Designator</a>;</div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span> </div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>   <span class="comment">// Build the replacement designators.</span></div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Designator, 4></a> <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a>;</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1IndirectFieldDecl.html#a6a0fd4de9f1a53fb21791d50c9ed2abc">IndirectFieldDecl::chain_iterator</a> PI = IndirectField-><a class="code" href="classclang_1_1IndirectFieldDecl.html#a6fc82272044f7f5834621a2f9d66540d">chain_begin</a>(),</div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>        PE = IndirectField-><a class="code" href="classclang_1_1IndirectFieldDecl.html#a844b66f0d6ce8af21722f424e884e6d0">chain_end</a>(); PI != PE; ++PI) {</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>     <span class="keywordflow">if</span> (PI + 1 == PE)</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>       Replacements.push_back(Designator((<a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *)0,</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>                                     DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#ada76cd7d1f9fb6492896d80cb86db917">getDesignator</a>(DesigIdx)-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a918e8d257fd66d2fded21112b9c3f0b7">getDotLoc</a>(),</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>                                 DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#ada76cd7d1f9fb6492896d80cb86db917">getDesignator</a>(DesigIdx)-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a6bbd7f6e64a0c83754ac9d0a61181cfc">getFieldLoc</a>()));</div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>       Replacements.push_back(Designator((<a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *)0, <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="l01600"></a><span class="lineno"> 1600</span>                                         <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>()));</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>     assert(isa<FieldDecl>(*PI));</div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>     Replacements.back().setField(cast<FieldDecl>(*PI));</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> </div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>   <span class="comment">// Expand the current designator into the set of replacement</span></div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>   <span class="comment">// designators, so we have a full subobject path down to where the</span></div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>   <span class="comment">// member of the anonymous struct/union is actually stored.</span></div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>   DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a77850a2fed4bd7dbd722a4c6c43a4aa4" title="Replaces the designator at index Idx with the series of designators in [First, Last).">ExpandDesignator</a>(SemaRef.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, DesigIdx, &Replacements[0],</div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>                         &Replacements[0] + Replacements.size());</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">/// \brief Given an implicit anonymous field, search the IndirectField that</span></div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span> <span class="comment">///  corresponds to FieldName.</span></div>
+<div class="line"><a name="l01614"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a743e367ed324799860f3a9425b698113"> 1614</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1IndirectFieldDecl.html">IndirectFieldDecl</a> *<a class="code" href="SemaInit_8cpp.html#a743e367ed324799860f3a9425b698113" title="Given an implicit anonymous field, search the IndirectField that corresponds to FieldName.">FindIndirectFieldDesignator</a>(<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *AnonField,</div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>                                                  <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *FieldName) {</div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>   <span class="keywordflow">if</span> (!FieldName)</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span> </div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>   assert(AnonField-><a class="code" href="classclang_1_1FieldDecl.html#aaf2cb2e85419db3e55e6194edddc21e9">isAnonymousStructOrUnion</a>());</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>   <a class="code" href="classclang_1_1Decl.html">Decl</a> *NextDecl = AnonField-><a class="code" href="classclang_1_1Decl.html#a4e93d06ed785c3f9a3578a26db56233b">getNextDeclInContext</a>();</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>   <span class="keywordflow">while</span> (<a class="code" href="classclang_1_1IndirectFieldDecl.html">IndirectFieldDecl</a> *IF = </div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>           dyn_cast_or_null<IndirectFieldDecl>(NextDecl)) {</div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>     <span class="keywordflow">if</span> (FieldName == IF->getAnonField()->getIdentifier())</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>       <span class="keywordflow">return</span> IF;</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>     NextDecl = NextDecl-><a class="code" href="classclang_1_1Decl.html#a4e93d06ed785c3f9a3578a26db56233b">getNextDeclInContext</a>();</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>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span> }</div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span> </div>
+<div class="line"><a name="l01630"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a7370f592e0f7d848ae3178d874c3cff0"> 1630</a></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1DesignatedInitExpr.html" title="Represents a C99 designated initializer expression.">DesignatedInitExpr</a> *<a class="code" href="SemaInit_8cpp.html#a7370f592e0f7d848ae3178d874c3cff0">CloneDesignatedInitExpr</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>,</div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>                                                    <a class="code" href="classclang_1_1DesignatedInitExpr.html" title="Represents a C99 designated initializer expression.">DesignatedInitExpr</a> *DIE) {</div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>   <span class="keywordtype">unsigned</span> NumIndexExprs = DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#ae775fee029e6a495e1e7dea7113b314a" title="Retrieve the total number of subexpressions in this designated initializer expression, including the actual initialized value and any expressions that occur within array and array-range designators.">getNumSubExprs</a>() - 1;</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Expr*, 4></a> IndexExprs(NumIndexExprs);</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0; I < NumIndexExprs; ++I)</div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>     IndexExprs[I] = DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#afb2b1f265e00a3a18530a8aeaf805a81">getSubExpr</a>(I + 1);</div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>   <span class="keywordflow">return</span> DesignatedInitExpr::Create(SemaRef.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a51263c9574758eed6a90b4e64d6d6256">designators_begin</a>(),</div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>                                     DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#afa6575564d627546e0c2f1aa25691444" title="Returns the number of designators in this initializer.">size</a>(), IndexExprs,</div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>                                     DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#aa5287eb17d522f02959b25d55bdb7848" title="Retrieve the location of the '=' that precedes the initializer value itself, if present.">getEqualOrColonLoc</a>(),</div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>                                     DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a3ba37bb3d12c38c8eaabfda1b896d4f4" title="Determines whether this designated initializer used the deprecated GNU syntax for designated initiali...">usesGNUSyntax</a>(), DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a1481133dfc5ac3477276e9212c635252" title="Retrieve the initializer value.">getInit</a>());</div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span> }</div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span> </div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> <span class="keyword">namespace </span>{</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> <span class="comment">// Callback to only accept typo corrections that are for field members of</span></div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> <span class="comment">// the given struct or union.</span></div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span> <span class="keyword">class </span>FieldInitializerValidatorCCC : <span class="keyword">public</span> <a class="code" href="classclang_1_1CorrectionCandidateCallback.html" title="Base class for callback objects used by Sema::CorrectTypo to check the validity of a potential typo c...">CorrectionCandidateCallback</a> {</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>  <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>   <span class="keyword">explicit</span> FieldInitializerValidatorCCC(<a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD)</div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>       : Record(RD) {}</div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span> </div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CorrectionCandidateCallback.html#a4cb6eed73f42be78cca42e874e20d962" title="Simple predicate used by the default RankCandidate to determine whether to return an edit distance of...">ValidateCandidate</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1TypoCorrection.html" title="Simple class containing the result of Sema::CorrectTypo.">TypoCorrection</a> &candidate) {</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>     <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *FD = candidate.<a class="code" href="classclang_1_1TypoCorrection.html#a274abfa1fb4a6ecb365acc4458842a13">getCorrectionDeclAs</a><<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a>>();</div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>     <span class="keywordflow">return</span> FD && FD-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>()-><a class="code" href="classclang_1_1DeclContext.html#a61743ae6acff989a26641900282e6305">getRedeclContext</a>()-><a class="code" href="classclang_1_1DeclContext.html#ab26c189165e15c46df7e4c734da0b0b8" title="Determine whether this declaration context is equivalent to the declaration context DC...">Equals</a>(Record);</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>   }</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span> </div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>  <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>   <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *Record;</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> </div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span> }</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> <span class="comment"></span></div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span> <span class="comment">/// @brief Check the well-formedness of a C99 designated initializer.</span></div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span> <span class="comment">/// Determines whether the designated initializer @p DIE, which</span></div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span> <span class="comment">/// resides at the given @p Index within the initializer list @p</span></div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span> <span class="comment">/// IList, is well-formed for a current object of type @p DeclType</span></div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span> <span class="comment">/// (C99 6.7.8). The actual subobject that this designator refers to</span></div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span> <span class="comment">/// within the current subobject is returned in either</span></div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span> <span class="comment">/// @p NextField or @p NextElementIndex (whichever is appropriate).</span></div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span> <span class="comment">/// @param IList  The initializer list in which this designated</span></div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span> <span class="comment">/// initializer occurs.</span></div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> <span class="comment">/// @param DIE The designated initializer expression.</span></div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span> <span class="comment">/// @param DesigIdx  The index of the current designator.</span></div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span> <span class="comment">/// @param CurrentObjectType The type of the "current object" (C99 6.7.8p17),</span></div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span> <span class="comment">/// into which the designation in @p DIE should refer.</span></div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span> <span class="comment">/// @param NextField  If non-NULL and the first designator in @p DIE is</span></div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> <span class="comment">/// a field, this will be set to the field declaration corresponding</span></div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span> <span class="comment">/// to the field named by the designator.</span></div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span> <span class="comment">/// @param NextElementIndex  If non-NULL and the first designator in @p</span></div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span> <span class="comment">/// DIE is an array designator or GNU array-range designator, this</span></div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span> <span class="comment">/// will be set to the last index initialized by this designator.</span></div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span> <span class="comment">/// @param Index  Index into @p IList where the designated initializer</span></div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span> <span class="comment">/// @p DIE occurs.</span></div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span> <span class="comment">/// @param StructuredList  The initializer list expression that</span></div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span> <span class="comment">/// describes all of the subobject initializers in the order they'll</span></div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span> <span class="comment">/// actually be initialized.</span></div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span> <span class="comment">/// @returns true if there was an error, false otherwise.</span></div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span> <span class="comment"></span><span class="keywordtype">bool</span></div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span> InitListChecker::CheckDesignatedInitializer(<span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>                                             <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList,</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>                                             <a class="code" href="classclang_1_1DesignatedInitExpr.html" title="Represents a C99 designated initializer expression.">DesignatedInitExpr</a> *DIE,</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>                                             <span class="keywordtype">unsigned</span> DesigIdx,</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>                                             <a class="code" href="classclang_1_1QualType.html">QualType</a> &CurrentObjectType,</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>                                           <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> *NextField,</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>                                             llvm::APSInt *NextElementIndex,</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>                                             <span class="keywordtype">unsigned</span> &Index,</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>                                             <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>                                             <span class="keywordtype">unsigned</span> &StructuredIndex,</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>                                             <span class="keywordtype">bool</span> FinishSubobjectInit,</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>                                             <span class="keywordtype">bool</span> TopLevelObject) {</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>   <span class="keywordflow">if</span> (DesigIdx == DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#afa6575564d627546e0c2f1aa25691444" title="Returns the number of designators in this initializer.">size</a>()) {</div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>     <span class="comment">// Check the actual initialization for the designated object type.</span></div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>     <span class="keywordtype">bool</span> prevHadError = hadError;</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span> </div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>     <span class="comment">// Temporarily remove the designator expression from the</span></div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>     <span class="comment">// initializer list that the child calls see, so that we don't try</span></div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>     <span class="comment">// to re-process the designator.</span></div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>     <span class="keywordtype">unsigned</span> OldIndex = Index;</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>     IList-><a class="code" href="classclang_1_1InitListExpr.html#a6858a240f6329b5c5106e38b96bfb611">setInit</a>(OldIndex, DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a1481133dfc5ac3477276e9212c635252" title="Retrieve the initializer value.">getInit</a>());</div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span> </div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>     CheckSubElementType(Entity, IList, CurrentObjectType, Index,</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>                         StructuredList, StructuredIndex);</div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span> </div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>     <span class="comment">// Restore the designated initializer expression in the syntactic</span></div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>     <span class="comment">// form of the initializer list.</span></div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>     <span class="keywordflow">if</span> (IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(OldIndex) != DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a1481133dfc5ac3477276e9212c635252" title="Retrieve the initializer value.">getInit</a>())</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>       DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a1a3db5f92890352497b5eb6a1534dfc3">setInit</a>(IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(OldIndex));</div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>     IList-><a class="code" href="classclang_1_1InitListExpr.html#a6858a240f6329b5c5106e38b96bfb611">setInit</a>(OldIndex, DIE);</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span> </div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>     <span class="keywordflow">return</span> hadError && !prevHadError;</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>   }</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> </div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>   <a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html" title="Represents a single C99 designator.">DesignatedInitExpr::Designator</a> *D = DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#ada76cd7d1f9fb6492896d80cb86db917">getDesignator</a>(DesigIdx);</div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>   <span class="keywordtype">bool</span> IsFirstDesignator = (DesigIdx == 0);</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>   <span class="keywordflow">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>     assert((IsFirstDesignator || StructuredList) &&</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>            <span class="stringliteral">"Need a non-designated initializer list to start from"</span>);</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>     <span class="comment">// Determine the structural initializer list that corresponds to the</span></div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>     <span class="comment">// current subobject.</span></div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>     StructuredList = IsFirstDesignator? SyntacticToSemantic.lookup(IList)</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>       : getStructuredSubobjectInit(IList, Index, CurrentObjectType,</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>                                    StructuredList, StructuredIndex,</div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>                                    <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a2fa0f7dcc905be619ae07ec8d7c03d46">getLocStart</a>(),</div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>                                                DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#af44015385aed8b76cf7179654275438c">getLocEnd</a>()));</div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>     assert(StructuredList && <span class="stringliteral">"Expected a structured initializer list"</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>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a67756c72fe37dae326dc30ac708c2bec">isFieldDesignator</a>()) {</div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>     <span class="comment">// C99 6.7.8p7:</span></div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>     <span class="comment">//   If a designator has the form</span></div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>     <span class="comment">//      . identifier</span></div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>     <span class="comment">//   then the current object (defined below) shall have</span></div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>     <span class="comment">//   structure or union type and the identifier shall be the</span></div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>     <span class="comment">//   name of a member of that type.</span></div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = CurrentObjectType-><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="l01759"></a><span class="lineno"> 1759</span>     <span class="keywordflow">if</span> (!RT) {</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>       <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc = D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a918e8d257fd66d2fded21112b9c3f0b7">getDotLoc</a>();</div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>       <span class="keywordflow">if</span> (Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>())</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>         Loc = D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a6bbd7f6e64a0c83754ac9d0a61181cfc">getFieldLoc</a>();</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>       <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>         <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_field_designator_non_aggr)</div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>           << <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus << CurrentObjectType;</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>       ++Index;</div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>     }</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span> </div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>     <span class="comment">// Note: we perform a linear search of the fields here, despite</span></div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>     <span class="comment">// the fact that we have a faster lookup method, because we always</span></div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>     <span class="comment">// need to compute the field's index.</span></div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>     <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *KnownField = D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a1fd2c8e5b2ad2bcf366acc700acf4b9b">getField</a>();</div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>     <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *FieldName = D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#affa27be89e469726c10f8e38b5b7ce09">getFieldName</a>();</div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>     <span class="keywordtype">unsigned</span> FieldIndex = 0;</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>     <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a></div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>       Field = RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>()-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>       FieldEnd = RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>()-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>     <span class="keywordflow">for</span> (; Field != FieldEnd; ++Field) {</div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>       <span class="keywordflow">if</span> (Field->isUnnamedBitfield())</div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>         <span class="keywordflow">continue</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"> 1783</span>       <span class="comment">// If we find a field representing an anonymous field, look in the</span></div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>       <span class="comment">// IndirectFieldDecl that follow for the designated initializer.</span></div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>       <span class="keywordflow">if</span> (!KnownField && Field->isAnonymousStructOrUnion()) {</div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1IndirectFieldDecl.html">IndirectFieldDecl</a> *IF =</div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>             <a class="code" href="SemaInit_8cpp.html#a743e367ed324799860f3a9425b698113" title="Given an implicit anonymous field, search the IndirectField that corresponds to FieldName.">FindIndirectFieldDesignator</a>(*Field, FieldName)) {</div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>           <span class="comment">// In verify mode, don't modify the original.</span></div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>           <span class="keywordflow">if</span> (VerifyOnly)</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>             DIE = <a class="code" href="SemaInit_8cpp.html#a7370f592e0f7d848ae3178d874c3cff0">CloneDesignatedInitExpr</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>, DIE);</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>           <a class="code" href="SemaInit_8cpp.html#a84e8eabf800bd9ea28852d45130f5c15" title="Expand a field designator that refers to a member of an anonymous struct or union into a series of fi...">ExpandAnonymousFieldDesignator</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>, DIE, DesigIdx, IF);</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>           D = DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#ada76cd7d1f9fb6492896d80cb86db917">getDesignator</a>(DesigIdx);</div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>           <span class="keywordflow">break</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>       }</div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>       <span class="keywordflow">if</span> (KnownField && KnownField == *Field)</div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>       <span class="keywordflow">if</span> (FieldName && FieldName == Field->getIdentifier())</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span> </div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>       ++FieldIndex;</div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</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>     <span class="keywordflow">if</span> (Field == FieldEnd) {</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>       <span class="keywordflow">if</span> (VerifyOnly) {</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>         ++Index;</div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// No typo correction when just trying this out.</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> </div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>       <span class="comment">// There was no normal field in the struct with the designated</span></div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>       <span class="comment">// name. Perform another lookup for this name, which may find</span></div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>       <span class="comment">// something that we can't designate (e.g., a member function),</span></div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>       <span class="comment">// may find nothing, or may find a member of an anonymous</span></div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>       <span class="comment">// struct/union.</span></div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>       <a class="code" href="classclang_1_1DeclContext.html#ac25dc34eabe6c4e035c76dd3329e8530">DeclContext::lookup_result</a> Lookup = RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>()-><a class="code" href="classclang_1_1DeclContext.html#a0916b364472e2acc42122885e087222b">lookup</a>(FieldName);</div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>       <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *ReplacementField = 0;</div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>       <span class="keywordflow">if</span> (Lookup.empty()) {</div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>         <span class="comment">// Name lookup didn't find anything. Determine whether this</span></div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>         <span class="comment">// was a typo for another field name.</span></div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>         FieldInitializerValidatorCCC Validator(RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>());</div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1TypoCorrection.html" title="Simple class containing the result of Sema::CorrectTypo.">TypoCorrection</a> Corrected = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a56bda9492c25602dc50508a4170268ef" title="Try to "correct" a typo in the source code by finding visible declarations whose names are similar to...">CorrectTypo</a>(</div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>                 <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a>(FieldName, D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a6bbd7f6e64a0c83754ac9d0a61181cfc">getFieldLoc</a>()),</div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>                 Sema::LookupMemberName, <span class="comment">/*Scope=*/</span> 0, <span class="comment">/*SS=*/</span> 0, Validator,</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>                 RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>())) {</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>           <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ac282105147675560aa1344dcf17aeaa0">diagnoseTypo</a>(</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>               Corrected,</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>               <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ac4e72de7865043558a71912b3bfd8f91" title="Build a partial diagnostic.">PDiag</a>(diag::err_field_designator_unknown_suggest)</div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>                   << FieldName << CurrentObjectType);</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>           ReplacementField = Corrected.getCorrectionDeclAs<<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a>>();</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>           hadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>           <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a6bbd7f6e64a0c83754ac9d0a61181cfc">getFieldLoc</a>(), diag::err_field_designator_unknown)</div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>             << FieldName << CurrentObjectType;</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>           ++Index;</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>           <span class="keywordflow">return</span> <span class="keyword">true</span>;</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>       }</div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> </div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>       <span class="keywordflow">if</span> (!ReplacementField) {</div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>         <span class="comment">// Name lookup found something, but it wasn't a field.</span></div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>         <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a6bbd7f6e64a0c83754ac9d0a61181cfc">getFieldLoc</a>(), diag::err_field_designator_nonfield)</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>           << FieldName;</div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>         <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Lookup.front()->getLocation(),</div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>                       diag::note_field_designator_found);</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>         ++Index;</div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>         <span class="keywordflow">return</span> <span class="keyword">true</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> </div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>       <span class="keywordflow">if</span> (!KnownField) {</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>         <span class="comment">// The replacement field comes from typo correction; find it</span></div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>         <span class="comment">// in the list of fields.</span></div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>         FieldIndex = 0;</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>         Field = RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>()-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>();</div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>         <span class="keywordflow">for</span> (; Field != FieldEnd; ++Field) {</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>           <span class="keywordflow">if</span> (Field->isUnnamedBitfield())</div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>             <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span> </div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>           <span class="keywordflow">if</span> (ReplacementField == *Field ||</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>               Field->getIdentifier() == ReplacementField-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>())</div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>             <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span> </div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>           ++FieldIndex;</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>         }</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>       }</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>     }</div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> </div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>     <span class="comment">// All of the fields of a union are located at the same place in</span></div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>     <span class="comment">// the initializer list.</span></div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>     <span class="keywordflow">if</span> (RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>()-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>()) {</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>       FieldIndex = 0;</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>       <span class="keywordflow">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>         <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *CurrentField = StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#a00be38ec80f991a7554541800dc9e48a" title="If this initializes a union, specifies which field in the union to initialize.">getInitializedFieldInUnion</a>();</div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>         <span class="keywordflow">if</span> (CurrentField && CurrentField != *Field) {</div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>           assert(StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() == 1</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>                  && <span class="stringliteral">"A union should never have more than one initializer!"</span>);</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span> </div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>           <span class="comment">// we're about to throw away an initializer, emit warning</span></div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>           <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a6bbd7f6e64a0c83754ac9d0a61181cfc">getFieldLoc</a>(),</div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>                        diag::warn_initializer_overrides)</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>             << D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a1d8e98def68e55df7db0d47eb0cc3a21">getSourceRange</a>();</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>           <a class="code" href="classclang_1_1Expr.html">Expr</a> *ExistingInit = StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(0);</div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>           <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ExistingInit-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>                        diag::note_previous_initializer)</div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>             << <span class="comment">/*FIXME:has side effects=*/</span>0</div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>             << ExistingInit-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span> </div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>           <span class="comment">// remove existing initializer</span></div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>           StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#a53e837eb4723c032fe96aa58bb7e8931" title="Specify the number of initializers.">resizeInits</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, 0);</div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>           StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#ada2c5d60a22de37a99a744a1db5988fe">setInitializedFieldInUnion</a>(0);</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> </div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>         StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#ada2c5d60a22de37a99a744a1db5988fe">setInitializedFieldInUnion</a>(*Field);</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>       }</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> </div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>     <span class="comment">// Make sure we can use this declaration.</span></div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>     <span class="keywordtype">bool</span> InvalidUse;</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>     <span class="keywordflow">if</span> (VerifyOnly)</div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>       InvalidUse = !<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a231963e96c2d720fdb660cdb2e29d2dc" title="Determine whether the use of this declaration is valid, without emitting diagnostics.">CanUseDecl</a>(*Field);</div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>       InvalidUse = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3d210c887f39c25660ade50a840938b8" title="Determine whether the use of this declaration is valid, and emit any corresponding diagnostics...">DiagnoseUseOfDecl</a>(*Field, D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a6bbd7f6e64a0c83754ac9d0a61181cfc">getFieldLoc</a>());</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>     <span class="keywordflow">if</span> (InvalidUse) {</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>       ++Index;</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>     }</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span> </div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>     <span class="keywordflow">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>       <span class="comment">// Update the designator with the field declaration.</span></div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>       D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#aba17b1d68084aa029d286cd5261fefbf">setField</a>(*Field);</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span> </div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>       <span class="comment">// Make sure that our non-designated initializer list has space</span></div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>       <span class="comment">// for a subobject corresponding to this field.</span></div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>       <span class="keywordflow">if</span> (FieldIndex >= StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>())</div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>         StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#a53e837eb4723c032fe96aa58bb7e8931" title="Specify the number of initializers.">resizeInits</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, FieldIndex + 1);</div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>     }</div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span> </div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>     <span class="comment">// This designator names a flexible array member.</span></div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>     <span class="keywordflow">if</span> (Field->getType()->isIncompleteArrayType()) {</div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>       <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>       <span class="keywordflow">if</span> ((DesigIdx + 1) != DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#afa6575564d627546e0c2f1aa25691444" title="Returns the number of designators in this initializer.">size</a>()) {</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>         <span class="comment">// We can't designate an object within the flexible array</span></div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>         <span class="comment">// member (because GCC doesn't allow it).</span></div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>         <span class="keywordflow">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>           <a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html" title="Represents a single C99 designator.">DesignatedInitExpr::Designator</a> *NextD</div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>             = DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#ada76cd7d1f9fb6492896d80cb86db917">getDesignator</a>(DesigIdx + 1);</div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>           <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(NextD-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a2fa0f7dcc905be619ae07ec8d7c03d46">getLocStart</a>(),</div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>                         diag::err_designator_into_flexible_array_member)</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>             << <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(NextD-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a2fa0f7dcc905be619ae07ec8d7c03d46">getLocStart</a>(),</div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>                            DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#af44015385aed8b76cf7179654275438c">getLocEnd</a>());</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>           <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Field->getLocation(), diag::note_flexible_array_member)</div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>             << *Field;</div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>         }</div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>         Invalid = <span class="keyword">true</span>;</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> </div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>       <span class="keywordflow">if</span> (!hadError && !isa<InitListExpr>(DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a1481133dfc5ac3477276e9212c635252" title="Retrieve the initializer value.">getInit</a>()) &&</div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>           !isa<StringLiteral>(DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a1481133dfc5ac3477276e9212c635252" title="Retrieve the initializer value.">getInit</a>())) {</div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>         <span class="comment">// The initializer is not an initializer list.</span></div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>         <span class="keywordflow">if</span> (!VerifyOnly) {</div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>           <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a1481133dfc5ac3477276e9212c635252" title="Retrieve the initializer value.">getInit</a>()-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>                         diag::err_flexible_array_init_needs_braces)</div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>             << DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a1481133dfc5ac3477276e9212c635252" title="Retrieve the initializer value.">getInit</a>()-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>           <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Field->getLocation(), diag::note_flexible_array_member)</div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>             << *Field;</div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>         }</div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>         Invalid = <span class="keyword">true</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> </div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>       <span class="comment">// Check GNU flexible array initializer.</span></div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>       <span class="keywordflow">if</span> (!Invalid && CheckFlexibleArrayInit(Entity, DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a1481133dfc5ac3477276e9212c635252" title="Retrieve the initializer value.">getInit</a>(), *Field,</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>                                              TopLevelObject))</div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>         Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span> </div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>       <span class="keywordflow">if</span> (Invalid) {</div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>         ++Index;</div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</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>       <span class="comment">// Initialize the array.</span></div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>       <span class="keywordtype">bool</span> prevHadError = hadError;</div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>       <span class="keywordtype">unsigned</span> newStructuredIndex = FieldIndex;</div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>       <span class="keywordtype">unsigned</span> OldIndex = Index;</div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>       IList-><a class="code" href="classclang_1_1InitListExpr.html#a6858a240f6329b5c5106e38b96bfb611">setInit</a>(Index, DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a1481133dfc5ac3477276e9212c635252" title="Retrieve the initializer value.">getInit</a>());</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span> </div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>       <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> MemberEntity =</div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>         InitializedEntity::InitializeMember(*Field, &Entity);</div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>       CheckSubElementType(MemberEntity, IList, Field->getType(), Index,</div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>                           StructuredList, newStructuredIndex);</div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span> </div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>       IList-><a class="code" href="classclang_1_1InitListExpr.html#a6858a240f6329b5c5106e38b96bfb611">setInit</a>(OldIndex, DIE);</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>       <span class="keywordflow">if</span> (hadError && !prevHadError) {</div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>         ++Field;</div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>         ++FieldIndex;</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>         <span class="keywordflow">if</span> (NextField)</div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>           *NextField = Field;</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>         StructuredIndex = FieldIndex;</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>       }</div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>       <span class="comment">// Recurse to check later designated subobjects.</span></div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> FieldType = Field->getType();</div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>       <span class="keywordtype">unsigned</span> newStructuredIndex = FieldIndex;</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>       <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> MemberEntity =</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>         InitializedEntity::InitializeMember(*Field, &Entity);</div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>       <span class="keywordflow">if</span> (CheckDesignatedInitializer(MemberEntity, IList, DIE, DesigIdx + 1,</div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>                                      FieldType, 0, 0, Index,</div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>                                      StructuredList, newStructuredIndex,</div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>                                      <span class="keyword">true</span>, <span class="keyword">false</span>))</div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>     }</div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span> </div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>     <span class="comment">// Find the position of the next field to be initialized in this</span></div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>     <span class="comment">// subobject.</span></div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>     ++Field;</div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>     ++FieldIndex;</div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span> </div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>     <span class="comment">// If this the first designator, our caller will continue checking</span></div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>     <span class="comment">// the rest of this struct/class/union subobject.</span></div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>     <span class="keywordflow">if</span> (IsFirstDesignator) {</div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>       <span class="keywordflow">if</span> (NextField)</div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>         *NextField = Field;</div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>       StructuredIndex = FieldIndex;</div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</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"> 2007</span>     <span class="keywordflow">if</span> (!FinishSubobjectInit)</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span> </div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>     <span class="comment">// We've already initialized something in the union; we're done.</span></div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>     <span class="keywordflow">if</span> (RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>()-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>())</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>       <span class="keywordflow">return</span> hadError;</div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span> </div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>     <span class="comment">// Check the remaining fields within this class/struct/union subobject.</span></div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>     <span class="keywordtype">bool</span> prevHadError = hadError;</div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span> </div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>     CheckStructUnionTypes(Entity, IList, CurrentObjectType, Field, <span class="keyword">false</span>, Index,</div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>                           StructuredList, FieldIndex);</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>     <span class="keywordflow">return</span> hadError && !prevHadError;</div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>   }</div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span> </div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>   <span class="comment">// C99 6.7.8p6:</span></div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>   <span class="comment">//   If a designator has the form</span></div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>   <span class="comment">//      [ constant-expression ]</span></div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>   <span class="comment">//   then the current object (defined below) shall have array</span></div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>   <span class="comment">//   type and the expression shall be an integer constant</span></div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>   <span class="comment">//   expression. If the array is of unknown size, any</span></div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>   <span class="comment">//   nonnegative value is valid.</span></div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>   <span class="comment">// Additionally, cope with the GNU extension that permits</span></div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>   <span class="comment">// designators of the form</span></div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>   <span class="comment">//      [ constant-expression ... constant-expression ]</span></div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *AT = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(CurrentObjectType);</div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>   <span class="keywordflow">if</span> (!AT) {</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>     <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>       <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a183b7e8dc9a75298f0f3c262da53b199">getLBracketLoc</a>(), diag::err_array_designator_non_array)</div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>         << CurrentObjectType;</div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>     ++Index;</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</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>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *IndexExpr = 0;</div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>   llvm::APSInt DesignatedStartIndex, DesignatedEndIndex;</div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a63d58abeca84e9848307d722c1396d59">isArrayDesignator</a>()) {</div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>     IndexExpr = DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a89dedc0b811ec6782f19884d7656e88c">getArrayIndex</a>(*D);</div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>     DesignatedStartIndex = IndexExpr-><a class="code" href="classclang_1_1Expr.html#a9a303252fadd3163f7349daa10955aa4">EvaluateKnownConstInt</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>);</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>     DesignatedEndIndex = DesignatedStartIndex;</div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>     assert(D-><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html#a2ac58c78ffd906621cf394886e0f1dd4">isArrayRangeDesignator</a>() && <span class="stringliteral">"Need array-range designator"</span>);</div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span> </div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>     DesignatedStartIndex =</div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>       DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#ada549c9bdf3d9954c2d2582f8925dea0">getArrayRangeStart</a>(*D)-><a class="code" href="classclang_1_1Expr.html#a9a303252fadd3163f7349daa10955aa4">EvaluateKnownConstInt</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>);</div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>     DesignatedEndIndex =</div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>       DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#ae51b0689cf96e60a377bc8471d86590a">getArrayRangeEnd</a>(*D)-><a class="code" href="classclang_1_1Expr.html#a9a303252fadd3163f7349daa10955aa4">EvaluateKnownConstInt</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>);</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>     IndexExpr = DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#ae51b0689cf96e60a377bc8471d86590a">getArrayRangeEnd</a>(*D);</div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span> </div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>     <span class="comment">// Codegen can't handle evaluating array range designators that have side</span></div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>     <span class="comment">// effects, because we replicate the AST value for each initialized element.</span></div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>     <span class="comment">// As such, set the sawArrayRangeDesignator() bit if we initialize multiple</span></div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>     <span class="comment">// elements with something that has a side effect, so codegen can emit an</span></div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>     <span class="comment">// "error unsupported" error instead of miscompiling the app.</span></div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>     <span class="keywordflow">if</span> (DesignatedStartIndex.getZExtValue()!=DesignatedEndIndex.getZExtValue()&&</div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>         DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a1481133dfc5ac3477276e9212c635252" title="Retrieve the initializer value.">getInit</a>()-><a class="code" href="classclang_1_1Expr.html#ae87e52ec0e14be11804122a03f8744ed">HasSideEffects</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) && !VerifyOnly)</div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>       FullyStructuredList->sawArrayRangeDesignator();</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>   }</div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span> </div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>   <span class="keywordflow">if</span> (isa<ConstantArrayType>(AT)) {</div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>     llvm::APSInt MaxElements(cast<ConstantArrayType>(AT)->getSize(), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>     DesignatedStartIndex</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>       = DesignatedStartIndex.extOrTrunc(MaxElements.getBitWidth());</div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>     DesignatedStartIndex.setIsUnsigned(MaxElements.isUnsigned());</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>     DesignatedEndIndex</div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>       = DesignatedEndIndex.extOrTrunc(MaxElements.getBitWidth());</div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>     DesignatedEndIndex.setIsUnsigned(MaxElements.isUnsigned());</div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>     <span class="keywordflow">if</span> (DesignatedEndIndex >= MaxElements) {</div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>       <span class="keywordflow">if</span> (!VerifyOnly)</div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>         <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IndexExpr-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>                       diag::err_array_designator_too_large)</div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>           << DesignatedEndIndex.toString(10) << MaxElements.toString(10)</div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>           << IndexExpr-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>       ++Index;</div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>     }</div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>     <span class="comment">// Make sure the bit-widths and signedness match.</span></div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>     <span class="keywordflow">if</span> (DesignatedStartIndex.getBitWidth() > DesignatedEndIndex.getBitWidth())</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>       DesignatedEndIndex</div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>         = DesignatedEndIndex.extend(DesignatedStartIndex.getBitWidth());</div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (DesignatedStartIndex.getBitWidth() <</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>              DesignatedEndIndex.getBitWidth())</div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>       DesignatedStartIndex</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>         = DesignatedStartIndex.extend(DesignatedEndIndex.getBitWidth());</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>     DesignatedStartIndex.setIsUnsigned(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>     DesignatedEndIndex.setIsUnsigned(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>   }</div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span> </div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>   <span class="keywordflow">if</span> (!VerifyOnly && StructuredList->isStringLiteralInit()) {</div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>     <span class="comment">// We're modifying a string literal init; we have to decompose the string</span></div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>     <span class="comment">// so we can modify the individual characters.</span></div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>     <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a> = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>;</div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>     <a class="code" href="classclang_1_1Expr.html">Expr</a> *SubExpr = StructuredList->getInit(0)-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span> </div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>     <span class="comment">// Compute the character type</span></div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> CharTy = AT-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>();</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span> </div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>     <span class="comment">// Compute the type of the integer literals.</span></div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> PromotedCharTy = CharTy;</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>     <span class="keywordflow">if</span> (CharTy-><a class="code" href="classclang_1_1Type.html#a93646db2ec9bee65a487eb0de943aac5" title="More type predicates useful for type checking/promotion.">isPromotableIntegerType</a>())</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>       PromotedCharTy = Context.<a class="code" href="classclang_1_1ASTContext.html#af9e92eecbebef4f85cfeb6e9f7058e61" title="Return the type that PromotableType will promote to: C99 6.3.1.1p2, assuming that PromotableType is a...">getPromotedIntegerType</a>(CharTy);</div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>     <span class="keywordtype">unsigned</span> PromotedCharTyWidth = Context.<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(PromotedCharTy);</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span> </div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a> *SL = dyn_cast<StringLiteral>(SubExpr)) {</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>       <span class="comment">// Get the length of the string.</span></div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>       uint64_t StrLen = SL->getLength();</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>       <span class="keywordflow">if</span> (cast<ConstantArrayType>(AT)->getSize().ult(StrLen))</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>         StrLen = cast<ConstantArrayType>(AT)->getSize().getZExtValue();</div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>       StructuredList->resizeInits(Context, StrLen);</div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span> </div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>       <span class="comment">// Build a literal for each character in the string, and put them into</span></div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>       <span class="comment">// the init list.</span></div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = StrLen; i != e; ++i) {</div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>         llvm::APInt CodeUnit(PromotedCharTyWidth, SL->getCodeUnit(i));</div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>         <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init = <span class="keyword">new</span> (<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>) <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a>(</div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>             Context, CodeUnit, PromotedCharTy, SubExpr-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>());</div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>         <span class="keywordflow">if</span> (CharTy != PromotedCharTy)</div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>           Init = ImplicitCastExpr::Create(Context, CharTy, <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad71cad80dd5957bfc6e8aa8f3a36f814">CK_IntegralCast</a>,</div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>                                           Init, 0, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>);</div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>         StructuredList->updateInit(Context, i, Init);</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>       }</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>       <a class="code" href="classclang_1_1ObjCEncodeExpr.html">ObjCEncodeExpr</a> *E = cast<ObjCEncodeExpr>(SubExpr);</div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>       std::string Str;</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>       Context.<a class="code" href="classclang_1_1ASTContext.html#a569fb528261328166e6851503ba82178" title="Emit the Objective-CC type encoding for the given type T into S.">getObjCEncodingForType</a>(E-><a class="code" href="classclang_1_1ObjCEncodeExpr.html#af09d4edc96995177a4931a9143afed32">getEncodedType</a>(), Str);</div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span> </div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>       <span class="comment">// Get the length of the string.</span></div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>       uint64_t StrLen = Str.size();</div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>       <span class="keywordflow">if</span> (cast<ConstantArrayType>(AT)->getSize().ult(StrLen))</div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>         StrLen = cast<ConstantArrayType>(AT)->getSize().getZExtValue();</div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>       StructuredList->resizeInits(Context, StrLen);</div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span> </div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>       <span class="comment">// Build a literal for each character in the string, and put them into</span></div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>       <span class="comment">// the init list.</span></div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = StrLen; i != e; ++i) {</div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>         llvm::APInt CodeUnit(PromotedCharTyWidth, Str[i]);</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>         <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init = <span class="keyword">new</span> (<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>) <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a>(</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>             Context, CodeUnit, PromotedCharTy, SubExpr-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>());</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>         <span class="keywordflow">if</span> (CharTy != PromotedCharTy)</div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>           Init = ImplicitCastExpr::Create(Context, CharTy, <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad71cad80dd5957bfc6e8aa8f3a36f814">CK_IntegralCast</a>,</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>                                           Init, 0, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>);</div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>         StructuredList->updateInit(Context, i, Init);</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>     }</div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>   }</div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span> </div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>   <span class="comment">// Make sure that our non-designated initializer list has space</span></div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>   <span class="comment">// for a subobject corresponding to this array element.</span></div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>   <span class="keywordflow">if</span> (!VerifyOnly &&</div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>       DesignatedEndIndex.getZExtValue() >= StructuredList->getNumInits())</div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>     StructuredList->resizeInits(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>,</div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>                                 DesignatedEndIndex.getZExtValue() + 1);</div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span> </div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>   <span class="comment">// Repeatedly perform subobject initializations in the range</span></div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>   <span class="comment">// [DesignatedStartIndex, DesignatedEndIndex].</span></div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span> </div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>   <span class="comment">// Move to the next designator</span></div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>   <span class="keywordtype">unsigned</span> ElementIndex = DesignatedStartIndex.getZExtValue();</div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>   <span class="keywordtype">unsigned</span> OldIndex = Index;</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>   <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> ElementEntity =</div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>     InitializedEntity::InitializeElement(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, 0, Entity);</div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span> </div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>   <span class="keywordflow">while</span> (DesignatedStartIndex <= DesignatedEndIndex) {</div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>     <span class="comment">// Recurse to check later designated subobjects.</span></div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType = AT-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>();</div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>     Index = OldIndex;</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>     ElementEntity.<a class="code" href="classclang_1_1InitializedEntity.html#a7a60eb1081934fd72dcaf830b9e05d38" title="If this is already the initializer for an array or vector element, sets the element index...">setElementIndex</a>(ElementIndex);</div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>     <span class="keywordflow">if</span> (CheckDesignatedInitializer(ElementEntity, IList, DIE, DesigIdx + 1,</div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>                                    ElementType, 0, 0, Index,</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>                                    StructuredList, ElementIndex,</div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>                                    (DesignatedStartIndex == DesignatedEndIndex),</div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>                                    <span class="keyword">false</span>))</div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span> </div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>     <span class="comment">// Move to the next index in the array that we'll be initializing.</span></div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>     ++DesignatedStartIndex;</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>     ElementIndex = DesignatedStartIndex.getZExtValue();</div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>   }</div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span> </div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>   <span class="comment">// If this the first designator, our caller will continue checking</span></div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>   <span class="comment">// the rest of this array subobject.</span></div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>   <span class="keywordflow">if</span> (IsFirstDesignator) {</div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>     <span class="keywordflow">if</span> (NextElementIndex)</div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>       *NextElementIndex = DesignatedStartIndex;</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>     StructuredIndex = ElementIndex;</div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>   }</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">if</span> (!FinishSubobjectInit)</div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span> </div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>   <span class="comment">// Check the remaining elements within this array subobject.</span></div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>   <span class="keywordtype">bool</span> prevHadError = hadError;</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>   CheckArrayType(Entity, IList, CurrentObjectType, DesignatedStartIndex,</div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>                  <span class="comment">/*SubobjectIsDesignatorContext=*/</span><span class="keyword">false</span>, Index,</div>
+<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>                  StructuredList, ElementIndex);</div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>   <span class="keywordflow">return</span> hadError && !prevHadError;</div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span> }</div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span> </div>
+<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span> <span class="comment">// Get the structured initializer list for a subobject of type</span></div>
+<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span> <span class="comment">// @p CurrentObjectType.</span></div>
+<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span> <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *</div>
+<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span> InitListChecker::getStructuredSubobjectInit(<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *IList, <span class="keywordtype">unsigned</span> Index,</div>
+<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>                                             <a class="code" href="classclang_1_1QualType.html">QualType</a> CurrentObjectType,</div>
+<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>                                             <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>                                             <span class="keywordtype">unsigned</span> StructuredIndex,</div>
+<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>                                             <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> InitRange) {</div>
+<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>   <span class="keywordflow">if</span> (VerifyOnly)</div>
+<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>     <span class="keywordflow">return</span> 0; <span class="comment">// No structured list in verification-only mode.</span></div>
+<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *ExistingInit = 0;</div>
+<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>   <span class="keywordflow">if</span> (!StructuredList)</div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>     ExistingInit = SyntacticToSemantic.lookup(IList);</div>
+<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (StructuredIndex < StructuredList->getNumInits())</div>
+<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>     ExistingInit = StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(StructuredIndex);</div>
+<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span> </div>
+<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *Result = dyn_cast_or_null<InitListExpr>(ExistingInit))</div>
+<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>     <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span> </div>
+<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>   <span class="keywordflow">if</span> (ExistingInit) {</div>
+<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>     <span class="comment">// We are creating an initializer list that initializes the</span></div>
+<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>     <span class="comment">// subobjects of the current object, but there was already an</span></div>
+<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>     <span class="comment">// initialization that completely initialized the current</span></div>
+<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>     <span class="comment">// subobject, e.g., by a compound literal:</span></div>
+<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>     <span class="comment">// struct X { int a, b; };</span></div>
+<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>     <span class="comment">// struct X xs[] = { [0] = (struct X) { 1, 2 }, [0].b = 3 };</span></div>
+<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>     <span class="comment">// Here, xs[0].a == 0 and xs[0].b == 3, since the second,</span></div>
+<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>     <span class="comment">// designated initializer re-initializes the whole</span></div>
+<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>     <span class="comment">// subobject [0], overwriting previous initializers.</span></div>
+<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>     <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(InitRange.<a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>(),</div>
+<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>                  diag::warn_subobject_initializer_overrides)</div>
+<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>       << InitRange;</div>
+<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>     <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ExistingInit-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>                   diag::note_previous_initializer)</div>
+<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>       << <span class="comment">/*FIXME:has side effects=*/</span>0</div>
+<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>       << ExistingInit-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</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>   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *Result</div>
+<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>     = <span class="keyword">new</span> (<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>,</div>
+<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>                                          InitRange.<a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>(), None,</div>
+<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>                                          InitRange.<a class="code" href="classclang_1_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0">getEnd</a>());</div>
+<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span> </div>
+<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ResultType = CurrentObjectType;</div>
+<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>   <span class="keywordflow">if</span> (!ResultType-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>())</div>
+<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>     ResultType = ResultType.<a class="code" href="classclang_1_1QualType.html#a89e3ea65c009b7a0ea76edc56076107c" title="Determine the type of a (typically non-lvalue) expression with the specified result type...">getNonLValueExprType</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>);</div>
+<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>   Result-><a class="code" href="classclang_1_1Expr.html#a3b6971eecc3301041ba0d18a91fa1ceb">setType</a>(ResultType);</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">// Pre-allocate storage for the structured initializer list.</span></div>
+<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>   <span class="keywordtype">unsigned</span> NumElements = 0;</div>
+<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>   <span class="keywordtype">unsigned</span> NumInits = 0;</div>
+<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>   <span class="keywordtype">bool</span> GotNumInits = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>   <span class="keywordflow">if</span> (!StructuredList) {</div>
+<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>     NumInits = IList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>();</div>
+<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>     GotNumInits = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Index < IList->getNumInits()) {</div>
+<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *SubList = dyn_cast<InitListExpr>(IList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(Index))) {</div>
+<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>       NumInits = SubList->getNumInits();</div>
+<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>       GotNumInits = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>     }</div>
+<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>   }</div>
+<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span> </div>
+<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *AType</div>
+<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>       = <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(CurrentObjectType)) {</div>
+<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *CAType = dyn_cast<ConstantArrayType>(AType)) {</div>
+<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>       NumElements = CAType->getSize().getZExtValue();</div>
+<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>       <span class="comment">// Simple heuristic so that we don't allocate a very large</span></div>
+<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>       <span class="comment">// initializer with many empty entries at the end.</span></div>
+<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>       <span class="keywordflow">if</span> (GotNumInits && NumElements > NumInits)</div>
+<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>         NumElements = 0;</div>
+<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>     }</div>
+<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1VectorType.html">VectorType</a> *VType = CurrentObjectType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1VectorType.html">VectorType</a>>())</div>
+<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>     NumElements = VType->getNumElements();</div>
+<div class="line"><a name="l02289"></a><span class="lineno"> 2289</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> *RType = CurrentObjectType-><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="l02290"></a><span class="lineno"> 2290</span>     <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RDecl = RType->getDecl();</div>
+<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>     <span class="keywordflow">if</span> (RDecl-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>())</div>
+<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>       NumElements = 1;</div>
+<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>       NumElements = std::distance(RDecl-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>                                   RDecl-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>());</div>
+<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>   }</div>
+<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span> </div>
+<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>   Result-><a class="code" href="classclang_1_1InitListExpr.html#afe2e0226dfe11b843b3ee311dfefeaa1" title="Reserve space for some number of initializers.">reserveInits</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, NumElements);</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>   <span class="comment">// Link this new initializer list into the structured initializer</span></div>
+<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>   <span class="comment">// lists.</span></div>
+<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>   <span class="keywordflow">if</span> (StructuredList)</div>
+<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>     StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#a8736c08fc15eded5b30c34b997fd2d8f" title="Updates the initializer at index Init with the new expression expr, and returns the old expression at...">updateInit</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, StructuredIndex, Result);</div>
+<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>   <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>     Result-><a class="code" href="classclang_1_1InitListExpr.html#a1bb0c775f7d3b946209de4b47f82532c">setSyntacticForm</a>(IList);</div>
+<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>     SyntacticToSemantic[IList] = Result;</div>
+<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>   }</div>
+<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span> </div>
+<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span> }</div>
+<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span> <span class="comment"></span></div>
+<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span> <span class="comment">/// Update the initializer at index @p StructuredIndex within the</span></div>
+<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span> <span class="comment">/// structured initializer list to the value @p expr.</span></div>
+<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span> <span class="comment"></span><span class="keywordtype">void</span> InitListChecker::UpdateStructuredListElement(<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *StructuredList,</div>
+<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>                                                   <span class="keywordtype">unsigned</span> &StructuredIndex,</div>
+<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>                                                   <a class="code" href="classclang_1_1Expr.html">Expr</a> *expr) {</div>
+<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>   <span class="comment">// No structured initializer list to update</span></div>
+<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>   <span class="keywordflow">if</span> (!StructuredList)</div>
+<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span> </div>
+<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Expr.html">Expr</a> *PrevInit = StructuredList-><a class="code" href="classclang_1_1InitListExpr.html#a8736c08fc15eded5b30c34b997fd2d8f" title="Updates the initializer at index Init with the new expression expr, and returns the old expression at...">updateInit</a>(<a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>,</div>
+<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>                                                   StructuredIndex, expr)) {</div>
+<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>     <span class="comment">// This initializer overwrites a previous initializer. Warn.</span></div>
+<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>     <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(expr-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>                   diag::warn_initializer_overrides)</div>
+<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>       << expr-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>     <a class="code" href="SemaOverload_8cpp.html#a2143ac7d927afc9feb28c9270c7ed86d">SemaRef</a>.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevInit->getLocStart(),</div>
+<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>                   diag::note_previous_initializer)</div>
+<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>       << <span class="comment">/*FIXME:has side effects=*/</span>0</div>
+<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>       << PrevInit->getSourceRange();</div>
+<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>   }</div>
+<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span> </div>
+<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>   ++StructuredIndex;</div>
+<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span> }</div>
+<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span> <span class="comment"></span></div>
+<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span> <span class="comment">/// Check that the given Index expression is a valid array designator</span></div>
+<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span> <span class="comment">/// value. This is essentially just a wrapper around</span></div>
+<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span> <span class="comment">/// VerifyIntegerConstantExpression that also checks for negative values</span></div>
+<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span> <span class="comment">/// and produces a reasonable diagnostic if there is a</span></div>
+<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span> <span class="comment">/// failure. Returns the index expression, possibly with an implicit cast</span></div>
+<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span> <span class="comment">/// added, on success.  If everything went okay, Value will receive the</span></div>
+<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span> <span class="comment">/// value of the constant expression.</span></div>
+<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a></div>
+<div class="line"><a name="l02344"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a77b2f05249a9ff3333632c72bfcaee74"> 2344</a></span> <a class="code" href="SemaInit_8cpp.html#a77b2f05249a9ff3333632c72bfcaee74">CheckArrayDesignatorExpr</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S, <a class="code" href="classclang_1_1Expr.html">Expr</a> *Index, llvm::APSInt &<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>) {</div>
+<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc = Index-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span> </div>
+<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>   <span class="comment">// Make sure this is an integer constant expression.</span></div>
+<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>   <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> Result = S.<a class="code" href="classclang_1_1Sema.html#ae83ec41f8cad609393d3115b742cffb5">VerifyIntegerConstantExpression</a>(Index, &Value);</div>
+<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>   <span class="keywordflow">if</span> (Result.<a class="code" href="classclang_1_1ActionResult.html#ac9ac9ca2df07fbb1931300e2a926351a">isInvalid</a>())</div>
+<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>     <span class="keywordflow">return</span> Result;</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="keywordflow">if</span> (Value.isSigned() && Value.isNegative())</div>
+<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>     <span class="keywordflow">return</span> S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Loc, diag::err_array_designator_negative)</div>
+<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>       << Value.toString(10) << Index-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</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>   Value.setIsUnsigned(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>   <span class="keywordflow">return</span> Result;</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> </div>
+<div class="line"><a name="l02360"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#ad8ae5e0a8942a6ae33e58cdbe164b135"> 2360</a></span> <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> Sema::ActOnDesignatedInitializer(<a class="code" href="classclang_1_1Designation.html">Designation</a> &Desig,</div>
+<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>                                             <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc,</div>
+<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>                                             <span class="keywordtype">bool</span> GNUSyntax,</div>
+<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>                                             <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> Init) {</div>
+<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>   <span class="keyword">typedef</span> <a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html" title="Represents a single C99 designator.">DesignatedInitExpr::Designator</a> ASTDesignator;</div>
+<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span> </div>
+<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>   <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<ASTDesignator, 32></a> Designators;</div>
+<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Expr *, 32></a> InitExpressions;</div>
+<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span> </div>
+<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>   <span class="comment">// Build designators and check array designator expressions.</span></div>
+<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> Idx = 0; Idx < Desig.<a class="code" href="classclang_1_1Designation.html#acf89ee181bd8e7b143bf965c70dffc8b">getNumDesignators</a>(); ++Idx) {</div>
+<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1Designator.html">Designator</a> &D = Desig.<a class="code" href="classclang_1_1Designation.html#ae5a811cac6257fc7c308bde12af3805c">getDesignator</a>(Idx);</div>
+<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>     <span class="keywordflow">switch</span> (D.<a class="code" href="classclang_1_1Designator.html#a3a13a23fa845cad2add1b275b70d8680">getKind</a>()) {</div>
+<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Designator.html#a9fb2d2d4b7fd65de879811d6daac8976a9997a752c88724a08a3f4545ef97fcc9">Designator::FieldDesignator</a>:</div>
+<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>       Designators.push_back(ASTDesignator(D.<a class="code" href="classclang_1_1Designator.html#a919e1c646feaaf53b7cbe9d095357e32">getField</a>(), D.<a class="code" href="classclang_1_1Designator.html#aaffd49575fa6eb173c1b550a5e5ec534">getDotLoc</a>(),</div>
+<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>                                           D.<a class="code" href="classclang_1_1Designator.html#a85d0358ae7234fbd72afe95a271b2295">getFieldLoc</a>()));</div>
+<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span> </div>
+<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Designator.html#a9fb2d2d4b7fd65de879811d6daac8976a4bb007ef4b861bc4fd56a8c6dd434cea">Designator::ArrayDesignator</a>: {</div>
+<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>       <a class="code" href="classclang_1_1Expr.html">Expr</a> *Index = <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a> *<span class="keyword">></span>(D.<a class="code" href="classclang_1_1Designator.html#a6a65c5d4a6739f72ffb8ec361c9325d3">getArrayIndex</a>());</div>
+<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>       llvm::APSInt IndexValue;</div>
+<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>       <span class="keywordflow">if</span> (!Index-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>() && !Index-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>())</div>
+<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>         Index = <a class="code" href="SemaInit_8cpp.html#a77b2f05249a9ff3333632c72bfcaee74">CheckArrayDesignatorExpr</a>(*<span class="keyword">this</span>, Index, IndexValue).<a class="code" href="classclang_1_1ActionResult.html#a938165c101b60e87ee1956ed4950fd9a">take</a>();</div>
+<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>       <span class="keywordflow">if</span> (!Index)</div>
+<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>         Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>       <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>         Designators.push_back(ASTDesignator(InitExpressions.size(),</div>
+<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>                                             D.<a class="code" href="classclang_1_1Designator.html#a3a5bdfad6b3b879fc36002231fa96984">getLBracketLoc</a>(),</div>
+<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>                                             D.<a class="code" href="classclang_1_1Designator.html#aaa8d090a9864d3db7bc991464405b305">getRBracketLoc</a>()));</div>
+<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>         InitExpressions.push_back(Index);</div>
+<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>       }</div>
+<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>       <span class="keywordflow">break</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> </div>
+<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Designator.html#a9fb2d2d4b7fd65de879811d6daac8976ab2f8f7e98079657eb016126751a5e1b3">Designator::ArrayRangeDesignator</a>: {</div>
+<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>       <a class="code" href="classclang_1_1Expr.html">Expr</a> *StartIndex = <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a> *<span class="keyword">></span>(D.<a class="code" href="classclang_1_1Designator.html#a319da3a735e332b98402e40ddfd0f284">getArrayRangeStart</a>());</div>
+<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>       <a class="code" href="classclang_1_1Expr.html">Expr</a> *EndIndex = <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a> *<span class="keyword">></span>(D.<a class="code" href="classclang_1_1Designator.html#a5b9e4e6ae94aeeed9af402b6dbe20756">getArrayRangeEnd</a>());</div>
+<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>       llvm::APSInt StartValue;</div>
+<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>       llvm::APSInt EndValue;</div>
+<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>       <span class="keywordtype">bool</span> StartDependent = StartIndex-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>() ||</div>
+<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>                             StartIndex-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>();</div>
+<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>       <span class="keywordtype">bool</span> EndDependent = EndIndex-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>() ||</div>
+<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>                           EndIndex-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>();</div>
+<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>       <span class="keywordflow">if</span> (!StartDependent)</div>
+<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>         StartIndex =</div>
+<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>             <a class="code" href="SemaInit_8cpp.html#a77b2f05249a9ff3333632c72bfcaee74">CheckArrayDesignatorExpr</a>(*<span class="keyword">this</span>, StartIndex, StartValue).<a class="code" href="classclang_1_1ActionResult.html#a938165c101b60e87ee1956ed4950fd9a">take</a>();</div>
+<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>       <span class="keywordflow">if</span> (!EndDependent)</div>
+<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>         EndIndex = <a class="code" href="SemaInit_8cpp.html#a77b2f05249a9ff3333632c72bfcaee74">CheckArrayDesignatorExpr</a>(*<span class="keyword">this</span>, EndIndex, EndValue).<a class="code" href="classclang_1_1ActionResult.html#a938165c101b60e87ee1956ed4950fd9a">take</a>();</div>
+<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span> </div>
+<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>       <span class="keywordflow">if</span> (!StartIndex || !EndIndex)</div>
+<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>         Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>       <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>         <span class="comment">// Make sure we're comparing values with the same bit width.</span></div>
+<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>         <span class="keywordflow">if</span> (StartDependent || EndDependent) {</div>
+<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>           <span class="comment">// Nothing to compute.</span></div>
+<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (StartValue.getBitWidth() > EndValue.getBitWidth())</div>
+<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>           EndValue = EndValue.extend(StartValue.getBitWidth());</div>
+<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (StartValue.getBitWidth() < EndValue.getBitWidth())</div>
+<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>           StartValue = StartValue.extend(EndValue.getBitWidth());</div>
+<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span> </div>
+<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>         <span class="keywordflow">if</span> (!StartDependent && !EndDependent && EndValue < StartValue) {</div>
+<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(D.<a class="code" href="classclang_1_1Designator.html#aa4a303fa94b3fb596a0507c73dea6799">getEllipsisLoc</a>(), diag::err_array_designator_empty_range)</div>
+<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>             << StartValue.toString(10) << EndValue.toString(10)</div>
+<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>             << StartIndex-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>() << EndIndex-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>           Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>           Designators.push_back(ASTDesignator(InitExpressions.size(),</div>
+<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>                                               D.<a class="code" href="classclang_1_1Designator.html#a3a5bdfad6b3b879fc36002231fa96984">getLBracketLoc</a>(),</div>
+<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>                                               D.<a class="code" href="classclang_1_1Designator.html#aa4a303fa94b3fb596a0507c73dea6799">getEllipsisLoc</a>(),</div>
+<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>                                               D.<a class="code" href="classclang_1_1Designator.html#aaa8d090a9864d3db7bc991464405b305">getRBracketLoc</a>()));</div>
+<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>           InitExpressions.push_back(StartIndex);</div>
+<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>           InitExpressions.push_back(EndIndex);</div>
+<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>         }</div>
+<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>       }</div>
+<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>       <span class="keywordflow">break</span>;</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>     }</div>
+<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>   }</div>
+<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span> </div>
+<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>   <span class="keywordflow">if</span> (Invalid || Init.<a class="code" href="classclang_1_1ActionResult.html#ac9ac9ca2df07fbb1931300e2a926351a">isInvalid</a>())</div>
+<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a9ae224fb900de5598d2c22f31c0ccea7">ExprError</a>();</div>
+<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span> </div>
+<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>   <span class="comment">// Clear out the expressions within the designation.</span></div>
+<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>   Desig.<a class="code" href="classclang_1_1Designation.html#a1bf667c985c5bdc4c16fa285ecc92939">ClearExprs</a>(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span> </div>
+<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>   <a class="code" href="classclang_1_1DesignatedInitExpr.html" title="Represents a C99 designated initializer expression.">DesignatedInitExpr</a> *DIE</div>
+<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>     = <a class="code" href="classclang_1_1DesignatedInitExpr.html#a355d79d6911a5a5a5d63ad6b4f5cd644">DesignatedInitExpr::Create</a>(Context,</div>
+<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>                                  Designators.data(), Designators.size(),</div>
+<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>                                  InitExpressions, Loc, GNUSyntax,</div>
+<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>                                  Init.<a class="code" href="classclang_1_1ActionResult.html#a144bc2f6c8a8090ba894cda5a5613361">takeAs</a><<a class="code" href="classclang_1_1Expr.html">Expr</a>>());</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">if</span> (!<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().<a class="code" href="namespaceclang_1_1frontend.html#a09dfa01c4e997a3794d80922c5e853bba26ba8b0762e63747844e84a45f42ba6e">C99</a>)</div>
+<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(DIE-><a class="code" href="classclang_1_1DesignatedInitExpr.html#a332941d24b91d0d78b05063e47cfc0be">getLocStart</a>(), diag::ext_designated_init)</div>
+<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>       << DIE-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span> </div>
+<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#ae88e27735e88a2d4ef2d863eab8865ba">Owned</a>(DIE);</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="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span> <span class="comment">// Initialization entity</span></div>
+<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span> </div>
+<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span> InitializedEntity::InitializedEntity(<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> &Context, <span class="keywordtype">unsigned</span> Index,</div>
+<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Parent)</div>
+<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>   : Parent(&Parent), Index(Index)</div>
+<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span> {</div>
+<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *AT = Context.<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(Parent.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>())) {</div>
+<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>     Kind = EK_ArrayElement;</div>
+<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>     <a class="code" href="classclang_1_1Type.html">Type</a> = AT-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>();</div>
+<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1VectorType.html">VectorType</a> *VT = Parent.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1VectorType.html">VectorType</a>>()) {</div>
+<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>     Kind = EK_VectorElement;</div>
+<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>     <a class="code" href="classclang_1_1Type.html">Type</a> = VT-><a class="code" href="classclang_1_1VectorType.html#aa82693de604f63a6366f39372252ab42">getElementType</a>();</div>
+<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ComplexType.html">ComplexType</a> *CT = Parent.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>()-><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="l02475"></a><span class="lineno"> 2475</span>     assert(CT && <span class="stringliteral">"Unexpected type"</span>);</div>
+<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>     Kind = EK_ComplexElement;</div>
+<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>     <a class="code" href="classclang_1_1Type.html">Type</a> = CT-><a class="code" href="classclang_1_1ComplexType.html#a003ef818ba80a0004dd20256766803a6">getElementType</a>();</div>
+<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>   }</div>
+<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span> }</div>
+<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span> </div>
+<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a></div>
+<div class="line"><a name="l02482"></a><span class="lineno"><a class="code" href="classclang_1_1InitializedEntity.html#ad78677b06fa34feb3e50a1f081116c7b"> 2482</a></span> <a class="code" href="classclang_1_1InitializedEntity.html#ad78677b06fa34feb3e50a1f081116c7b" title="Create the initialization entity for a base class subobject.">InitializedEntity::InitializeBase</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> &Context,</div>
+<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> *<a class="code" href="classclang_1_1Base.html">Base</a>,</div>
+<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>                                   <span class="keywordtype">bool</span> IsInheritedVirtualBase) {</div>
+<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>   <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> Result;</div>
+<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>   Result.Kind = <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a6cba27054e99332c312fda265a3ef4b5" title="The entity being initialized is a base member subobject.">EK_Base</a>;</div>
+<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>   Result.Parent = 0;</div>
+<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>   Result.<a class="code" href="classclang_1_1InitializedEntity.html#ad1fd1c8fff996d909ef96fdf78a9b58d" title="When Kind == EK_Base, the base specifier that provides the base class. The lower bit specifies whethe...">Base</a> = <span class="keyword">reinterpret_cast<</span>uintptr_t<span class="keyword">></span>(<a class="code" href="classclang_1_1InitializedEntity.html#ad1fd1c8fff996d909ef96fdf78a9b58d" title="When Kind == EK_Base, the base specifier that provides the base class. The lower bit specifies whethe...">Base</a>);</div>
+<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>   <span class="keywordflow">if</span> (IsInheritedVirtualBase)</div>
+<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>     Result.<a class="code" href="classclang_1_1InitializedEntity.html#ad1fd1c8fff996d909ef96fdf78a9b58d" title="When Kind == EK_Base, the base specifier that provides the base class. The lower bit specifies whethe...">Base</a> |= 0x01;</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>   Result.Type = Base-><a class="code" href="classclang_1_1CXXBaseSpecifier.html#a4e9241e65b4b20b372902d0873a9d838" title="Retrieves the type of the base class.">getType</a>();</div>
+<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span> }</div>
+<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span> </div>
+<div class="line"><a name="l02496"></a><span class="lineno"><a class="code" href="classclang_1_1InitializedEntity.html#a6ff0d9b28ddbebf299dc98af04a644a3"> 2496</a></span> <a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a> <a class="code" href="classclang_1_1InitializedEntity.html#a6ff0d9b28ddbebf299dc98af04a644a3" title="Retrieve the name of the entity being initialized.">InitializedEntity::getName</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1InitializedEntity.html#a22f327e1c51a6322f89ceaef6be71908" title="Determine the kind of initialization.">getKind</a>()) {</div>
+<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ad360dc534dbde54151282f2ec463e437" title="The entity being initialized is a function parameter.">EK_Parameter</a>:</div>
+<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a42d228120494b3cb2ce0421f7638491f" title="The entity being initialized is a function parameter; function is member of group of audited CF APIs...">EK_Parameter_CF_Audited</a>: {</div>
+<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>     <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *D = <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a>*<span class="keyword">></span>(<a class="code" href="classclang_1_1InitializedEntity.html#a03ed35b0372a33bcf8b43a67ab5b536d" title="When Kind == EK_Parameter, the ParmVarDecl, with the low bit indicating whether the parameter is "con...">Parameter</a> & ~0x1);</div>
+<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>     <span class="keywordflow">return</span> (D ? D-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() : <a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a>());</div>
+<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>   }</div>
+<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span> </div>
+<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a05418ed636011900bc217f76ac79541e" title="The entity being initialized is a variable.">EK_Variable</a>:</div>
+<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a52120d28f63466d99b8752a2af9e7518" title="The entity being initialized is a non-static data member subobject.">EK_Member</a>:</div>
+<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1InitializedEntity.html#a7c355826156db38fee7ea89b30eadd44" title="When Kind == EK_Variable, or EK_Member, the VarDecl or FieldDecl, respectively.">VariableOrMember</a>-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span> </div>
+<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54aec902c7104d21f6ddc9bf44f67e4e02d" title="The entity being initialized is the field that captures a variable in a lambda.">EK_LambdaCapture</a>:</div>
+<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a>(<a class="code" href="classclang_1_1InitializedEntity.html#a3dab50215fbecf1b84c9c82544a8003c">Capture</a>.VarID);</div>
+<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>       </div>
+<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a6f2be4544543917c1137af65688538d4" title="The entity being initialized is the result of a function call.">EK_Result</a>:</div>
+<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54aeda0889414ec18780d68cd1acd7697c1" title="The entity being initialized is an exception object that is being thrown.">EK_Exception</a>:</div>
+<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ab266239bb5435109228d42e7006b61d6" title="The entity being initialized is an object (or array of objects) allocated via new.">EK_New</a>:</div>
+<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a074c57b0bb1fef4388625e60246a2d0e" title="The entity being initialized is a temporary object.">EK_Temporary</a>:</div>
+<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a6cba27054e99332c312fda265a3ef4b5" title="The entity being initialized is a base member subobject.">EK_Base</a>:</div>
+<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54adbc2d5f1e9744d1e02b76e2644dd2ef8" title="The initialization is being done by a delegating constructor.">EK_Delegating</a>:</div>
+<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ae93df264642b0877b845dce85ae4f0cf" title="The entity being initialized is an element of an array.">EK_ArrayElement</a>:</div>
+<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a9eb5e8ee681640b1fc04be0ab9ee4569" title="The entity being initialized is an element of a vector. or vector.">EK_VectorElement</a>:</div>
+<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ae03b769f3a227909d6ee887b909631d6" title="The entity being initialized is the real or imaginary part of a complex number.">EK_ComplexElement</a>:</div>
+<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a18df1df21b14395f06b201b654f57191" title="The entity being initialized is a field of block descriptor for the copied-in c++ object...">EK_BlockElement</a>:</div>
+<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54acf0ad1ce890f86d62db958c689369c76" title="The entity being initialized is the initializer for a compound literal.">EK_CompoundLiteralInit</a>:</div>
+<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54af9fae1e9b6d6ff1fed5a973f32bff298" title="The entity being implicitly initialized back to the formal result type.">EK_RelatedResult</a>:</div>
+<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a>();</div>
+<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>   }</div>
+<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span> </div>
+<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>   llvm_unreachable(<span class="stringliteral">"Invalid EntityKind!"</span>);</div>
+<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span> }</div>
+<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span> </div>
+<div class="line"><a name="l02529"></a><span class="lineno"><a class="code" href="classclang_1_1InitializedEntity.html#a612d72ea3c50c222159473b73a994e12"> 2529</a></span> <a class="code" href="classclang_1_1DeclaratorDecl.html" title="Represents a ValueDecl that came out of a declarator. Contains type source information through TypeSo...">DeclaratorDecl</a> *<a class="code" href="classclang_1_1InitializedEntity.html#a612d72ea3c50c222159473b73a994e12" title="Retrieve the variable, parameter, or field being initialized.">InitializedEntity::getDecl</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1InitializedEntity.html#a22f327e1c51a6322f89ceaef6be71908" title="Determine the kind of initialization.">getKind</a>()) {</div>
+<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a05418ed636011900bc217f76ac79541e" title="The entity being initialized is a variable.">EK_Variable</a>:</div>
+<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a52120d28f63466d99b8752a2af9e7518" title="The entity being initialized is a non-static data member subobject.">EK_Member</a>:</div>
+<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1InitializedEntity.html#a7c355826156db38fee7ea89b30eadd44" title="When Kind == EK_Variable, or EK_Member, the VarDecl or FieldDecl, respectively.">VariableOrMember</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="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ad360dc534dbde54151282f2ec463e437" title="The entity being initialized is a function parameter.">EK_Parameter</a>:</div>
+<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a42d228120494b3cb2ce0421f7638491f" title="The entity being initialized is a function parameter; function is member of group of audited CF APIs...">EK_Parameter_CF_Audited</a>:</div>
+<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>     <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a>*<span class="keyword">></span>(<a class="code" href="classclang_1_1InitializedEntity.html#a03ed35b0372a33bcf8b43a67ab5b536d" title="When Kind == EK_Parameter, the ParmVarDecl, with the low bit indicating whether the parameter is "con...">Parameter</a> & ~0x1);</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>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a6f2be4544543917c1137af65688538d4" title="The entity being initialized is the result of a function call.">EK_Result</a>:</div>
+<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54aeda0889414ec18780d68cd1acd7697c1" title="The entity being initialized is an exception object that is being thrown.">EK_Exception</a>:</div>
+<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ab266239bb5435109228d42e7006b61d6" title="The entity being initialized is an object (or array of objects) allocated via new.">EK_New</a>:</div>
+<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a074c57b0bb1fef4388625e60246a2d0e" title="The entity being initialized is a temporary object.">EK_Temporary</a>:</div>
+<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a6cba27054e99332c312fda265a3ef4b5" title="The entity being initialized is a base member subobject.">EK_Base</a>:</div>
+<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54adbc2d5f1e9744d1e02b76e2644dd2ef8" title="The initialization is being done by a delegating constructor.">EK_Delegating</a>:</div>
+<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ae93df264642b0877b845dce85ae4f0cf" title="The entity being initialized is an element of an array.">EK_ArrayElement</a>:</div>
+<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a9eb5e8ee681640b1fc04be0ab9ee4569" title="The entity being initialized is an element of a vector. or vector.">EK_VectorElement</a>:</div>
+<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ae03b769f3a227909d6ee887b909631d6" title="The entity being initialized is the real or imaginary part of a complex number.">EK_ComplexElement</a>:</div>
+<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a18df1df21b14395f06b201b654f57191" title="The entity being initialized is a field of block descriptor for the copied-in c++ object...">EK_BlockElement</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_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54aec902c7104d21f6ddc9bf44f67e4e02d" title="The entity being initialized is the field that captures a variable in a lambda.">EK_LambdaCapture</a>:</div>
+<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54acf0ad1ce890f86d62db958c689369c76" title="The entity being initialized is the initializer for a compound literal.">EK_CompoundLiteralInit</a>:</div>
+<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54af9fae1e9b6d6ff1fed5a973f32bff298" title="The entity being implicitly initialized back to the formal result type.">EK_RelatedResult</a>:</div>
+<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>   }</div>
+<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span> </div>
+<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>   llvm_unreachable(<span class="stringliteral">"Invalid EntityKind!"</span>);</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> </div>
+<div class="line"><a name="l02558"></a><span class="lineno"><a class="code" href="classclang_1_1InitializedEntity.html#a5fcc3f9bc4fa95623a0aa04585f7df16"> 2558</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1InitializedEntity.html#a5fcc3f9bc4fa95623a0aa04585f7df16" title="Determine whether this initialization allows the named return value optimization, which also applies ...">InitializedEntity::allowsNRVO</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1InitializedEntity.html#a22f327e1c51a6322f89ceaef6be71908" title="Determine the kind of initialization.">getKind</a>()) {</div>
+<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a6f2be4544543917c1137af65688538d4" title="The entity being initialized is the result of a function call.">EK_Result</a>:</div>
+<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54aeda0889414ec18780d68cd1acd7697c1" title="The entity being initialized is an exception object that is being thrown.">EK_Exception</a>:</div>
+<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1InitializedEntity.html#ad2114923a8ed9a084f3f1a7e77354e05">LocAndNRVO</a>.NRVO;</div>
+<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span> </div>
+<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a05418ed636011900bc217f76ac79541e" title="The entity being initialized is a variable.">EK_Variable</a>:</div>
+<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ad360dc534dbde54151282f2ec463e437" title="The entity being initialized is a function parameter.">EK_Parameter</a>:</div>
+<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a42d228120494b3cb2ce0421f7638491f" title="The entity being initialized is a function parameter; function is member of group of audited CF APIs...">EK_Parameter_CF_Audited</a>:</div>
+<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a52120d28f63466d99b8752a2af9e7518" title="The entity being initialized is a non-static data member subobject.">EK_Member</a>:</div>
+<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ab266239bb5435109228d42e7006b61d6" title="The entity being initialized is an object (or array of objects) allocated via new.">EK_New</a>:</div>
+<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a074c57b0bb1fef4388625e60246a2d0e" title="The entity being initialized is a temporary object.">EK_Temporary</a>:</div>
+<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54acf0ad1ce890f86d62db958c689369c76" title="The entity being initialized is the initializer for a compound literal.">EK_CompoundLiteralInit</a>:</div>
+<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a6cba27054e99332c312fda265a3ef4b5" title="The entity being initialized is a base member subobject.">EK_Base</a>:</div>
+<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54adbc2d5f1e9744d1e02b76e2644dd2ef8" title="The initialization is being done by a delegating constructor.">EK_Delegating</a>:</div>
+<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ae93df264642b0877b845dce85ae4f0cf" title="The entity being initialized is an element of an array.">EK_ArrayElement</a>:</div>
+<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a9eb5e8ee681640b1fc04be0ab9ee4569" title="The entity being initialized is an element of a vector. or vector.">EK_VectorElement</a>:</div>
+<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ae03b769f3a227909d6ee887b909631d6" title="The entity being initialized is the real or imaginary part of a complex number.">EK_ComplexElement</a>:</div>
+<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a18df1df21b14395f06b201b654f57191" title="The entity being initialized is a field of block descriptor for the copied-in c++ object...">EK_BlockElement</a>:</div>
+<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54aec902c7104d21f6ddc9bf44f67e4e02d" title="The entity being initialized is the field that captures a variable in a lambda.">EK_LambdaCapture</a>:</div>
+<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54af9fae1e9b6d6ff1fed5a973f32bff298" title="The entity being implicitly initialized back to the formal result type.">EK_RelatedResult</a>:</div>
+<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>   }</div>
+<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span> </div>
+<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span> }</div>
+<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span> </div>
+<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span> <span class="keywordtype">unsigned</span> InitializedEntity::dumpImpl(raw_ostream &OS)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>   assert(<a class="code" href="classclang_1_1InitializedEntity.html#a703cd29e7145795c8564c212b4885196" title="Retrieve the parent of the entity being initialized, when the initialization itself is occurring with...">getParent</a>() != <span class="keyword">this</span>);</div>
+<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>   <span class="keywordtype">unsigned</span> <a class="code" href="ASTMatchFinder_8cpp.html#a770e10d3d091ec85cafce08832ae2e87">Depth</a> = <a class="code" href="classclang_1_1InitializedEntity.html#a703cd29e7145795c8564c212b4885196" title="Retrieve the parent of the entity being initialized, when the initialization itself is occurring with...">getParent</a>() ? <a class="code" href="classclang_1_1InitializedEntity.html#a703cd29e7145795c8564c212b4885196" title="Retrieve the parent of the entity being initialized, when the initialization itself is occurring with...">getParent</a>()->dumpImpl(OS) : 0;</div>
+<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0; I != <a class="code" href="ASTMatchFinder_8cpp.html#a770e10d3d091ec85cafce08832ae2e87">Depth</a>; ++I)</div>
+<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>     OS << <span class="stringliteral">"`-"</span>;</div>
+<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span> </div>
+<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1InitializedEntity.html#a22f327e1c51a6322f89ceaef6be71908" title="Determine the kind of initialization.">getKind</a>()) {</div>
+<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a05418ed636011900bc217f76ac79541e" title="The entity being initialized is a variable.">EK_Variable</a>: OS << <span class="stringliteral">"Variable"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ad360dc534dbde54151282f2ec463e437" title="The entity being initialized is a function parameter.">EK_Parameter</a>: OS << <span class="stringliteral">"Parameter"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a42d228120494b3cb2ce0421f7638491f" title="The entity being initialized is a function parameter; function is member of group of audited CF APIs...">EK_Parameter_CF_Audited</a>: OS << <span class="stringliteral">"CF audited function Parameter"</span>;</div>
+<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a6f2be4544543917c1137af65688538d4" title="The entity being initialized is the result of a function call.">EK_Result</a>: OS << <span class="stringliteral">"Result"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54aeda0889414ec18780d68cd1acd7697c1" title="The entity being initialized is an exception object that is being thrown.">EK_Exception</a>: OS << <span class="stringliteral">"Exception"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a52120d28f63466d99b8752a2af9e7518" title="The entity being initialized is a non-static data member subobject.">EK_Member</a>: OS << <span class="stringliteral">"Member"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ab266239bb5435109228d42e7006b61d6" title="The entity being initialized is an object (or array of objects) allocated via new.">EK_New</a>: OS << <span class="stringliteral">"New"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a074c57b0bb1fef4388625e60246a2d0e" title="The entity being initialized is a temporary object.">EK_Temporary</a>: OS << <span class="stringliteral">"Temporary"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54acf0ad1ce890f86d62db958c689369c76" title="The entity being initialized is the initializer for a compound literal.">EK_CompoundLiteralInit</a>: OS << <span class="stringliteral">"CompoundLiteral"</span>;<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54af9fae1e9b6d6ff1fed5a973f32bff298" title="The entity being implicitly initialized back to the formal result type.">EK_RelatedResult</a>: OS << <span class="stringliteral">"RelatedResult"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a6cba27054e99332c312fda265a3ef4b5" title="The entity being initialized is a base member subobject.">EK_Base</a>: OS << <span class="stringliteral">"Base"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54adbc2d5f1e9744d1e02b76e2644dd2ef8" title="The initialization is being done by a delegating constructor.">EK_Delegating</a>: OS << <span class="stringliteral">"Delegating"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ae93df264642b0877b845dce85ae4f0cf" title="The entity being initialized is an element of an array.">EK_ArrayElement</a>: OS << <span class="stringliteral">"ArrayElement "</span> << <a class="code" href="classclang_1_1InitializedEntity.html#aced2a90974d92eb4173146a37406079e" title="When Kind == EK_ArrayElement, EK_VectorElement, or EK_ComplexElement, the index of the array or vecto...">Index</a>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a9eb5e8ee681640b1fc04be0ab9ee4569" title="The entity being initialized is an element of a vector. or vector.">EK_VectorElement</a>: OS << <span class="stringliteral">"VectorElement "</span> << <a class="code" href="classclang_1_1InitializedEntity.html#aced2a90974d92eb4173146a37406079e" title="When Kind == EK_ArrayElement, EK_VectorElement, or EK_ComplexElement, the index of the array or vecto...">Index</a>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54ae03b769f3a227909d6ee887b909631d6" title="The entity being initialized is the real or imaginary part of a complex number.">EK_ComplexElement</a>: OS << <span class="stringliteral">"ComplexElement "</span> << <a class="code" href="classclang_1_1InitializedEntity.html#aced2a90974d92eb4173146a37406079e" title="When Kind == EK_ArrayElement, EK_VectorElement, or EK_ComplexElement, the index of the array or vecto...">Index</a>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a18df1df21b14395f06b201b654f57191" title="The entity being initialized is a field of block descriptor for the copied-in c++ object...">EK_BlockElement</a>: OS << <span class="stringliteral">"Block"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54aec902c7104d21f6ddc9bf44f67e4e02d" title="The entity being initialized is the field that captures a variable in a lambda.">EK_LambdaCapture</a>:</div>
+<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>     OS << <span class="stringliteral">"LambdaCapture "</span>;</div>
+<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>     OS << <a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a>(<a class="code" href="classclang_1_1InitializedEntity.html#a3dab50215fbecf1b84c9c82544a8003c">Capture</a>.VarID);</div>
+<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>     <span class="keywordflow">break</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>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Decl.html">Decl</a> *D = <a class="code" href="classclang_1_1InitializedEntity.html#a612d72ea3c50c222159473b73a994e12" title="Retrieve the variable, parameter, or field being initialized.">getDecl</a>()) {</div>
+<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>     OS << <span class="stringliteral">" "</span>;</div>
+<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>     cast<NamedDecl>(D)->printQualifiedName(OS);</div>
+<div class="line"><a name="l02618"></a><span class="lineno"> 2618</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"> 2620</span>   OS << <span class="stringliteral">" '"</span> << <a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>().<a class="code" href="classclang_1_1QualType.html#af755c58826e02f164c9b1d442762457d">getAsString</a>() << <span class="stringliteral">"'\n"</span>;</div>
+<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span> </div>
+<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>   <span class="keywordflow">return</span> Depth + 1;</div>
+<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span> }</div>
+<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span> </div>
+<div class="line"><a name="l02625"></a><span class="lineno"><a class="code" href="classclang_1_1InitializedEntity.html#a9fc77fd7be3e5d4a8845fed816375909"> 2625</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializedEntity.html#a9fc77fd7be3e5d4a8845fed816375909">InitializedEntity::dump</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>   dumpImpl(llvm::errs());</div>
+<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span> }</div>
+<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span> </div>
+<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span> <span class="comment">// Initialization sequence</span></div>
+<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span> </div>
+<div class="line"><a name="l02633"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a585ec32eabcc333ee43d869f7dc8f652"> 2633</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a585ec32eabcc333ee43d869f7dc8f652">InitializationSequence::Step::Destroy</a>() {</div>
+<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>   <span class="keywordflow">switch</span> (Kind) {</div>
+<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43acf8a6a565c37e10e4087eb706f7193eb" title="Resolve the address of an overloaded function to a specific function declaration.">SK_ResolveAddressOfOverloadedFunction</a>:</div>
+<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a14c3b7adb872aab076143085daf591c1" title="Perform a derived-to-base cast, producing an rvalue.">SK_CastDerivedToBaseRValue</a>:</div>
+<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a67bfaa50a94804176d971aec810fffc3" title="Perform a derived-to-base cast, producing an xvalue.">SK_CastDerivedToBaseXValue</a>:</div>
+<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a2c4419e6800f5f60ebc7fdcd1b8951f5" title="Perform a derived-to-base cast, producing an lvalue.">SK_CastDerivedToBaseLValue</a>:</div>
+<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a4608fabe58bea351de531475882ebc46" title="Reference binding to an lvalue.">SK_BindReference</a>:</div>
+<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a7bb3ecdc11ac0c403ebbcf965547f978" title="Reference binding to a temporary.">SK_BindReferenceToTemporary</a>:</div>
+<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ab50f97d2870d1e79a0611bf45e7d895b" title="An optional copy of a temporary object to another temporary object, which is permitted (but not requi...">SK_ExtraneousCopyToTemporary</a>:</div>
+<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a6a5d1425e317885c91712cb8ee3b79f5" title="Perform a user-defined conversion, either via a conversion function or via a constructor.">SK_UserConversion</a>:</div>
+<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ab97945a8a57ae462282ba7dbdf1cac57" title="Perform a qualification conversion, producing an rvalue.">SK_QualificationConversionRValue</a>:</div>
+<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a686eddc5c51bbe7b189992851035fc39" title="Perform a qualification conversion, producing an xvalue.">SK_QualificationConversionXValue</a>:</div>
+<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43aee9b9774e89b4e2eecad31d0c80a1737" title="Perform a qualification conversion, producing an lvalue.">SK_QualificationConversionLValue</a>:</div>
+<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a28c7600e39109a0b3589ae5c3165a85d" title="Perform a load from a glvalue, producing an rvalue.">SK_LValueToRValue</a>:</div>
+<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43afbbceb2b09046336525925cf78456f8c" title="Perform list-initialization without a constructor.">SK_ListInitialization</a>:</div>
+<div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a9625214a999180a866e78306b1e50b7c" title="Perform list-initialization with a constructor.">SK_ListConstructorCall</a>:</div>
+<div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ad5d41b21d1325f42d287f93396201170" title="Unwrap the single-element initializer list for a reference.">SK_UnwrapInitList</a>:</div>
+<div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ab8a347a50a443aeefcf1ea1bc7f0e244" title="Rewrap the single-element initializer list for a reference.">SK_RewrapInitList</a>:</div>
+<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a51b1af70ad447635a534354269167655" title="Perform initialization via a constructor.">SK_ConstructorInitialization</a>:</div>
+<div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a5cb822c4a72bb62a8fc5bc690cc6fa5f" title="Zero-initialize the object.">SK_ZeroInitialization</a>:</div>
+<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ac3ac60f3b30ca69662dac4b5f23b70e1" title="C assignment.">SK_CAssignment</a>:</div>
+<div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a5c2d119979539cca66f6fdc728617254" title="Initialization by string.">SK_StringInit</a>:</div>
+<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a1b04963a8d3e61d50731d23c533d669b" title="An initialization that "converts" an Objective-C object (not a point to an object) to another Objecti...">SK_ObjCObjectConversion</a>:</div>
+<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a9511a902d14f558f6532260296f5b5f7" title="Array initialization (from an array rvalue). This is a GNU C extension.">SK_ArrayInit</a>:</div>
+<div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a92733093282fd1689577266f010ff34c" title="Array initialization from a parenthesized initializer list. This is a GNU C++ extension.">SK_ParenthesizedArrayInit</a>:</div>
+<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ac64b60a0997b29c2c71ebde495ea6e00" title="Pass an object by indirect copy-and-restore.">SK_PassByIndirectCopyRestore</a>:</div>
+<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a8452eca76751288bd481213ce3458799" title="Pass an object by indirect restore.">SK_PassByIndirectRestore</a>:</div>
+<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a315c438090b725bf7f90a84941a4376d" title="Produce an Objective-C object pointer.">SK_ProduceObjCObject</a>:</div>
+<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43af2d84d7fa41e080322131cb9f2e3ec0e" title="Construct a std::initializer_list from an initializer list.">SK_StdInitializerList</a>:</div>
+<div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a5670688410d5c0233312414f8304fceb" title="Initialize an OpenCL sampler from an integer.">SK_OCLSamplerInit</a>:</div>
+<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a7114f82bb5fcf153112786e91e2c8355" title="Passing zero to a function where OpenCL event_t is expected.">SK_OCLZeroEvent</a>:</div>
+<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span> </div>
+<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43af82ad5a315f5355b0ab719eae60128ee" title="Perform an implicit conversion sequence.">SK_ConversionSequence</a>:</div>
+<div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ab809b86bc0840030cf254c43735676e2" title="Perform an implicit conversion sequence without narrowing.">SK_ConversionSequenceNoNarrowing</a>:</div>
+<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>     <span class="keyword">delete</span> <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#aaed09b1e250226ef7245bff44bdd4c17" title="When Kind = SK_ConversionSequence, the implicit conversion sequence.">ICS</a>;</div>
+<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>   }</div>
+<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span> }</div>
+<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span> </div>
+<div class="line"><a name="l02672"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#ae7bc2164e2daa721a884ebd212ce88ce"> 2672</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1InitializationSequence.html#ae7bc2164e2daa721a884ebd212ce88ce" title="Determine whether this initialization is a direct reference binding (C++ [dcl.init.ref]).">InitializationSequence::isDirectReferenceBinding</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>   <span class="keywordflow">return</span> !Steps.empty() && Steps.back().Kind == <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a4608fabe58bea351de531475882ebc46" title="Reference binding to an lvalue.">SK_BindReference</a>;</div>
+<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span> }</div>
+<div class="line"><a name="l02675"></a><span class="lineno"> 2675</span> </div>
+<div class="line"><a name="l02676"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a4e6ea4de0f3c9a00c427685118e2bdd4"> 2676</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1InitializationSequence.html#a4e6ea4de0f3c9a00c427685118e2bdd4" title="Determine whether this initialization failed due to an ambiguity.">InitializationSequence::isAmbiguous</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1InitializationSequence.html#abdd4ababa9a1b98b42a454620a0ce5b7" title="Determine whether the initialization sequence is invalid.">Failed</a>())</div>
+<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span> </div>
+<div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1InitializationSequence.html#ade861af6c9adaa6e07c9f2090c225af6" title="Determine why initialization failed.">getFailureKind</a>()) {</div>
+<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a8fa06212d264bc5e1f0e3ac74feb6e66" title="Too many initializers provided for a reference.">FK_TooManyInitsForReference</a>:</div>
+<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a4551723d208bc8205023f3265812c778" title="Array must be initialized with an initializer list.">FK_ArrayNeedsInitList</a>:</div>
+<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a66e3ed32c7a6621e0ddceb0cd6cdfc1a" title="Array must be initialized with an initializer list or a string literal.">FK_ArrayNeedsInitListOrStringLiteral</a>:</div>
+<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6ac7758d50dafc3faccbaca1e59bbb675d" title="Array must be initialized with an initializer list or a wide string literal.">FK_ArrayNeedsInitListOrWideStringLiteral</a>:</div>
+<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a06b30edcc269ed14e9e535c704a549f2" title="Initializing a wide char array with narrow string literal.">FK_NarrowStringIntoWideCharArray</a>:</div>
+<div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6adc758e35c5dcb734d10490e1de15b71e" title="Initializing char array with wide string literal.">FK_WideStringIntoCharArray</a>:</div>
+<div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a81602afbd45edc1702ecdf0423a474f0" title="Initializing wide char array with incompatible wide string literal.">FK_IncompatWideStringIntoWideChar</a>:</div>
+<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6abd3e911b4107171dc42985fcc42e2ce6" title="Cannot resolve the address of an overloaded function.">FK_AddressOfOverloadFailed</a>: <span class="comment">// FIXME: Could do better</span></div>
+<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a513434cb34ebc69703ac014f54a275e5" title="Non-const lvalue reference binding to a temporary.">FK_NonConstLValueReferenceBindingToTemporary</a>:</div>
+<div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a2f215d340ab73f0ca29012d047329b7c" title="Non-const lvalue reference binding to an lvalue of unrelated type.">FK_NonConstLValueReferenceBindingToUnrelated</a>:</div>
+<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6acc109390374f1f80c57a8be17685bae0" title="Rvalue reference binding to an lvalue.">FK_RValueReferenceBindingToLValue</a>:</div>
+<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a2520a0bcb6e7e37efcc3a775f2d90333" title="Reference binding drops qualifiers.">FK_ReferenceInitDropsQualifiers</a>:</div>
+<div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a3fdefaaea204fbe3f54a97ca3379064a" title="Reference binding failed.">FK_ReferenceInitFailed</a>:</div>
+<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a5ed977655b2d261db9eb3d27070e8779" title="Implicit conversion failed.">FK_ConversionFailed</a>:</div>
+<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a2b6c61fb7f1fb17091dda6ab6a2ed9a0" title="Implicit conversion failed.">FK_ConversionFromPropertyFailed</a>:</div>
+<div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6aa422504604ec6464d3c526e9687581bf" title="Too many initializers for scalar.">FK_TooManyInitsForScalar</a>:</div>
+<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6adfbe7cd1a5334af1f8c35f3fee59cdd7" title="Reference initialization from an initializer list.">FK_ReferenceBindingToInitList</a>:</div>
+<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a287349e5730c325969e607f43412f1aa" title="Initialization of some unused destination type with an initializer list.">FK_InitListBadDestinationType</a>:</div>
+<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6ae073a34c92c2143cd0bf32ae1f2b34d9" title="Default-initialization of a 'const' object.">FK_DefaultInitOfConst</a>:</div>
+<div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6ad44c7e3f898a06afa4595b1c70c823c9" title="Initialization of an incomplete type.">FK_Incomplete</a>:</div>
+<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a0e26a8fae02f65c4b3e3bf531ac02fed" title="Array type mismatch.">FK_ArrayTypeMismatch</a>:</div>
+<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a50be973acca5b881e0ac25810e75cd7b" title="Non-constant array initializer.">FK_NonConstantArrayInit</a>:</div>
+<div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6aa0e985dee812ab1af9abb4fa071a1898" title="List initialization failed at some point.">FK_ListInitializationFailed</a>:</div>
+<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6abd51068b1f9f76cba867820f18314bbc" title="Variable-length array must not have an initializer.">FK_VariableLengthArrayHasInitializer</a>:</div>
+<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a80bf82c088636de48ea8659d9200c628" title="Initializer has a placeholder type which cannot be resolved by initialization.">FK_PlaceholderType</a>:</div>
+<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6add899f9dbbadb86316f6d33122114cfb" title="List-copy-initialization chose an explicit constructor.">FK_ExplicitConstructor</a>:</div>
+<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span> </div>
+<div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6addb6796b16c6dc8f0b6f3c6ab7ac3894" title="Overloading due to reference initialization failed.">FK_ReferenceInitOverloadFailed</a>:</div>
+<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a0485a83cf104826f130bb326d67467b0" title="Overloading for a user-defined conversion failed.">FK_UserConversionOverloadFailed</a>:</div>
+<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6ade7f63d7e6cf8c9a984c22fc9561fe49" title="Overloading for initialization by constructor failed.">FK_ConstructorOverloadFailed</a>:</div>
+<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a39ea9313c4a17184df03ef6b981f44f5" title="Overloading for list-initialization by constructor failed.">FK_ListConstructorOverloadFailed</a>:</div>
+<div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>     <span class="keywordflow">return</span> FailedOverloadResult == <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2adc45c9f7d9f53e4224a57a3a5006be58" title="Ambiguous candidates found.">OR_Ambiguous</a>;</div>
+<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>   }</div>
+<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span> </div>
+<div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>   llvm_unreachable(<span class="stringliteral">"Invalid EntityKind!"</span>);</div>
+<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span> }</div>
+<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span> </div>
+<div class="line"><a name="l02719"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a44186fd49dce98ff28ffd90ac2a5c112"> 2719</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1InitializationSequence.html#a44186fd49dce98ff28ffd90ac2a5c112" title="Determine whether this initialization is direct call to a constructor.">InitializationSequence::isConstructorInitialization</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>   <span class="keywordflow">return</span> !Steps.empty() && Steps.back().Kind == <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a51b1af70ad447635a534354269167655" title="Perform initialization via a constructor.">SK_ConstructorInitialization</a>;</div>
+<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span> }</div>
+<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span> </div>
+<div class="line"><a name="l02723"></a><span class="lineno"> 2723</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span> <a class="code" href="classclang_1_1InitializationSequence.html#af45d87a4928c65151d2b733f2bb128cc" title="Add a new step in the initialization that resolves the address of an overloaded function to a specifi...">InitializationSequence</a></div>
+<div class="line"><a name="l02725"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#af45d87a4928c65151d2b733f2bb128cc"> 2725</a></span> <a class="code" href="classclang_1_1InitializationSequence.html#af45d87a4928c65151d2b733f2bb128cc" title="Add a new step in the initialization that resolves the address of an overloaded function to a specifi...">::AddAddressOverloadResolutionStep</a>(<a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *Function,</div>
+<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>                                    <a class="code" href="classclang_1_1DeclAccessPair.html">DeclAccessPair</a> Found,</div>
+<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>                                    <span class="keywordtype">bool</span> HadMultipleCandidates) {</div>
+<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43acf8a6a565c37e10e4087eb706f7193eb" title="Resolve the address of an overloaded function to a specific function declaration.">SK_ResolveAddressOfOverloadedFunction</a>;</div>
+<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = Function-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#ac28900ef284e714026b08c605d7954a8" title="When Kind == SK_ResolvedOverloadedFunction or Kind == SK_UserConversion, the function that the expres...">Function</a>.<a class="code" href="structclang_1_1InitializationSequence_1_1Step_1_1F.html#a3634d47924be6f2e0471e0fdbd8dce1b">HadMultipleCandidates</a> = HadMultipleCandidates;</div>
+<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#ac28900ef284e714026b08c605d7954a8" title="When Kind == SK_ResolvedOverloadedFunction or Kind == SK_UserConversion, the function that the expres...">Function</a>.<a class="code" href="structclang_1_1InitializationSequence_1_1Step_1_1F.html#a1753434c7acb15e31bd327f1b11dc70d">Function</a> = Function;</div>
+<div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#ac28900ef284e714026b08c605d7954a8" title="When Kind == SK_ResolvedOverloadedFunction or Kind == SK_UserConversion, the function that the expres...">Function</a>.<a class="code" href="structclang_1_1InitializationSequence_1_1Step_1_1F.html#a58afa6e35ca6aff2c46401b373411d28">FoundDecl</a> = Found;</div>
+<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02735"></a><span class="lineno"> 2735</span> }</div>
+<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span> </div>
+<div class="line"><a name="l02737"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a60a8de5b80d7d4fd7c9f2a219d88a8e5"> 2737</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#a60a8de5b80d7d4fd7c9f2a219d88a8e5" title="Add a new step in the initialization that performs a derived-to- base cast.">InitializationSequence::AddDerivedToBaseCastStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> BaseType,</div>
+<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>                                                       <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK) {</div>
+<div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>   <span class="keywordflow">switch</span> (VK) {</div>
+<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>: S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a14c3b7adb872aab076143085daf591c1" title="Perform a derived-to-base cast, producing an rvalue.">SK_CastDerivedToBaseRValue</a>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a63fc11bfcee4743c02b72657c1adcf27" title="An x-value expression is a reference to an object with independent storage but which can be "moved"...">VK_XValue</a>: S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a67bfaa50a94804176d971aec810fffc3" title="Perform a derived-to-base cast, producing an xvalue.">SK_CastDerivedToBaseXValue</a>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a>: S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a2c4419e6800f5f60ebc7fdcd1b8951f5" title="Perform a derived-to-base cast, producing an lvalue.">SK_CastDerivedToBaseLValue</a>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>   }</div>
+<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = BaseType;</div>
+<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span> }</div>
+<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span> </div>
+<div class="line"><a name="l02749"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#aeb7e3ad0c8fe0b594c63a4fc4fd54b72"> 2749</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#aeb7e3ad0c8fe0b594c63a4fc4fd54b72" title="Add a new step binding a reference to an object.">InitializationSequence::AddReferenceBindingStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>                                                      <span class="keywordtype">bool</span> BindingTemporary) {</div>
+<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = BindingTemporary? <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a7bb3ecdc11ac0c403ebbcf965547f978" title="Reference binding to a temporary.">SK_BindReferenceToTemporary</a> : <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a4608fabe58bea351de531475882ebc46" title="Reference binding to an lvalue.">SK_BindReference</a>;</div>
+<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02755"></a><span class="lineno"> 2755</span> }</div>
+<div class="line"><a name="l02756"></a><span class="lineno"> 2756</span> </div>
+<div class="line"><a name="l02757"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a95d4024d55560d1d7c8c278623d0e1b9"> 2757</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#a95d4024d55560d1d7c8c278623d0e1b9" title="Add a new step that makes an extraneous copy of the input to a temporary of the same class type...">InitializationSequence::AddExtraneousCopyToTemporary</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ab50f97d2870d1e79a0611bf45e7d895b" title="An optional copy of a temporary object to another temporary object, which is permitted (but not requi...">SK_ExtraneousCopyToTemporary</a>;</div>
+<div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02762"></a><span class="lineno"> 2762</span> }</div>
+<div class="line"><a name="l02763"></a><span class="lineno"> 2763</span> </div>
+<div class="line"><a name="l02764"></a><span class="lineno"> 2764</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l02765"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a3667a1b611fd2acfc6d8b772f91fa506"> 2765</a></span> <a class="code" href="classclang_1_1InitializationSequence.html#a3667a1b611fd2acfc6d8b772f91fa506" title="Add a new step invoking a conversion function, which is either a constructor or a conversion function...">InitializationSequence::AddUserConversionStep</a>(<a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *Function,</div>
+<div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>                                               <a class="code" href="classclang_1_1DeclAccessPair.html">DeclAccessPair</a> FoundDecl,</div>
+<div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>                                               <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>                                               <span class="keywordtype">bool</span> HadMultipleCandidates) {</div>
+<div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a6a5d1425e317885c91712cb8ee3b79f5" title="Perform a user-defined conversion, either via a conversion function or via a constructor.">SK_UserConversion</a>;</div>
+<div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#ac28900ef284e714026b08c605d7954a8" title="When Kind == SK_ResolvedOverloadedFunction or Kind == SK_UserConversion, the function that the expres...">Function</a>.<a class="code" href="structclang_1_1InitializationSequence_1_1Step_1_1F.html#a3634d47924be6f2e0471e0fdbd8dce1b">HadMultipleCandidates</a> = HadMultipleCandidates;</div>
+<div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#ac28900ef284e714026b08c605d7954a8" title="When Kind == SK_ResolvedOverloadedFunction or Kind == SK_UserConversion, the function that the expres...">Function</a>.<a class="code" href="structclang_1_1InitializationSequence_1_1Step_1_1F.html#a1753434c7acb15e31bd327f1b11dc70d">Function</a> = Function;</div>
+<div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#ac28900ef284e714026b08c605d7954a8" title="When Kind == SK_ResolvedOverloadedFunction or Kind == SK_UserConversion, the function that the expres...">Function</a>.<a class="code" href="structclang_1_1InitializationSequence_1_1Step_1_1F.html#a58afa6e35ca6aff2c46401b373411d28">FoundDecl</a> = FoundDecl;</div>
+<div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02776"></a><span class="lineno"> 2776</span> }</div>
+<div class="line"><a name="l02777"></a><span class="lineno"> 2777</span> </div>
+<div class="line"><a name="l02778"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a5a1460329798da6afbb4773556cdbf2c"> 2778</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#a5a1460329798da6afbb4773556cdbf2c" title="Add a new step that performs a qualification conversion to the given type.">InitializationSequence::AddQualificationConversionStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> Ty,</div>
+<div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>                                                             <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK) {</div>
+<div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ab97945a8a57ae462282ba7dbdf1cac57" title="Perform a qualification conversion, producing an rvalue.">SK_QualificationConversionRValue</a>; <span class="comment">// work around a gcc warning</span></div>
+<div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>   <span class="keywordflow">switch</span> (VK) {</div>
+<div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>:</div>
+<div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>     S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ab97945a8a57ae462282ba7dbdf1cac57" title="Perform a qualification conversion, producing an rvalue.">SK_QualificationConversionRValue</a>;</div>
+<div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a63fc11bfcee4743c02b72657c1adcf27" title="An x-value expression is a reference to an object with independent storage but which can be "moved"...">VK_XValue</a>:</div>
+<div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>     S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a686eddc5c51bbe7b189992851035fc39" title="Perform a qualification conversion, producing an xvalue.">SK_QualificationConversionXValue</a>;</div>
+<div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a>:</div>
+<div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>     S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43aee9b9774e89b4e2eecad31d0c80a1737" title="Perform a qualification conversion, producing an lvalue.">SK_QualificationConversionLValue</a>;</div>
+<div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>   }</div>
+<div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = Ty;</div>
+<div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02795"></a><span class="lineno"> 2795</span> }</div>
+<div class="line"><a name="l02796"></a><span class="lineno"> 2796</span> </div>
+<div class="line"><a name="l02797"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#ad279d75c0c041e5d730f63f806086054"> 2797</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#ad279d75c0c041e5d730f63f806086054" title="Add a new step that performs a load of the given type.">InitializationSequence::AddLValueToRValueStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> Ty) {</div>
+<div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>   assert(!Ty.<a class="code" href="classclang_1_1QualType.html#ac6e66316dff8ddb3bf1b995a3dbcd0a7" title="Determine whether this type has any qualifiers.">hasQualifiers</a>() && <span class="stringliteral">"rvalues may not have qualifiers"</span>);</div>
+<div class="line"><a name="l02799"></a><span class="lineno"> 2799</span> </div>
+<div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>   S.Kind = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a28c7600e39109a0b3589ae5c3165a85d" title="Perform a load from a glvalue, producing an rvalue.">SK_LValueToRValue</a>;</div>
+<div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>   S.Type = Ty;</div>
+<div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02804"></a><span class="lineno"> 2804</span> }</div>
+<div class="line"><a name="l02805"></a><span class="lineno"> 2805</span> </div>
+<div class="line"><a name="l02806"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#ad2bdc93c890e75998e73fcbf5e538035"> 2806</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#ad2bdc93c890e75998e73fcbf5e538035" title="Add a new step that applies an implicit conversion sequence.">InitializationSequence::AddConversionSequenceStep</a>(</div>
+<div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ImplicitConversionSequence.html">ImplicitConversionSequence</a> &ICS, <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>     <span class="keywordtype">bool</span> TopLevelOfInitList) {</div>
+<div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = TopLevelOfInitList ? <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ab809b86bc0840030cf254c43735676e2" title="Perform an implicit conversion sequence without narrowing.">SK_ConversionSequenceNoNarrowing</a></div>
+<div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>                               : <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43af82ad5a315f5355b0ab719eae60128ee" title="Perform an implicit conversion sequence.">SK_ConversionSequence</a>;</div>
+<div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#aaed09b1e250226ef7245bff44bdd4c17" title="When Kind = SK_ConversionSequence, the implicit conversion sequence.">ICS</a> = <span class="keyword">new</span> <a class="code" href="classclang_1_1ImplicitConversionSequence.html">ImplicitConversionSequence</a>(ICS);</div>
+<div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02815"></a><span class="lineno"> 2815</span> }</div>
+<div class="line"><a name="l02816"></a><span class="lineno"> 2816</span> </div>
+<div class="line"><a name="l02817"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a0428033dada48f13688be438f570fecd"> 2817</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#a0428033dada48f13688be438f570fecd" title="Add a list-initialization step.">InitializationSequence::AddListInitializationStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43afbbceb2b09046336525925cf78456f8c" title="Perform list-initialization without a constructor.">SK_ListInitialization</a>;</div>
+<div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02822"></a><span class="lineno"> 2822</span> }</div>
+<div class="line"><a name="l02823"></a><span class="lineno"> 2823</span> </div>
+<div class="line"><a name="l02824"></a><span class="lineno"> 2824</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l02825"></a><span class="lineno"> 2825</span> <a class="code" href="classclang_1_1InitializationSequence.html#abf104165ab376ec031f8833219b769cb" title="Add a constructor-initialization step.">InitializationSequence</a></div>
+<div class="line"><a name="l02826"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#abf104165ab376ec031f8833219b769cb"> 2826</a></span> <a class="code" href="classclang_1_1InitializationSequence.html#abf104165ab376ec031f8833219b769cb" title="Add a constructor-initialization step.">::AddConstructorInitializationStep</a>(<a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *Constructor,</div>
+<div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>                                    <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988f" title="A C++ access specifier (public, private, protected), plus the special value "none" which means differ...">AccessSpecifier</a> Access,</div>
+<div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>                                    <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>                                    <span class="keywordtype">bool</span> HadMultipleCandidates,</div>
+<div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>                                    <span class="keywordtype">bool</span> FromInitList, <span class="keywordtype">bool</span> AsInitList) {</div>
+<div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = FromInitList && !AsInitList ? <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a9625214a999180a866e78306b1e50b7c" title="Perform list-initialization with a constructor.">SK_ListConstructorCall</a></div>
+<div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>                                        : <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a51b1af70ad447635a534354269167655" title="Perform initialization via a constructor.">SK_ConstructorInitialization</a>;</div>
+<div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#ac28900ef284e714026b08c605d7954a8" title="When Kind == SK_ResolvedOverloadedFunction or Kind == SK_UserConversion, the function that the expres...">Function</a>.<a class="code" href="structclang_1_1InitializationSequence_1_1Step_1_1F.html#a3634d47924be6f2e0471e0fdbd8dce1b">HadMultipleCandidates</a> = HadMultipleCandidates;</div>
+<div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#ac28900ef284e714026b08c605d7954a8" title="When Kind == SK_ResolvedOverloadedFunction or Kind == SK_UserConversion, the function that the expres...">Function</a>.<a class="code" href="structclang_1_1InitializationSequence_1_1Step_1_1F.html#a1753434c7acb15e31bd327f1b11dc70d">Function</a> = Constructor;</div>
+<div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#ac28900ef284e714026b08c605d7954a8" title="When Kind == SK_ResolvedOverloadedFunction or Kind == SK_UserConversion, the function that the expres...">Function</a>.<a class="code" href="structclang_1_1InitializationSequence_1_1Step_1_1F.html#a58afa6e35ca6aff2c46401b373411d28">FoundDecl</a> = <a class="code" href="classclang_1_1DeclAccessPair.html#a40bf16940069615f789f599664048241">DeclAccessPair::make</a>(Constructor, Access);</div>
+<div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02839"></a><span class="lineno"> 2839</span> }</div>
+<div class="line"><a name="l02840"></a><span class="lineno"> 2840</span> </div>
+<div class="line"><a name="l02841"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#ad44e8b37a3221729dae6c0ce6189d708"> 2841</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#ad44e8b37a3221729dae6c0ce6189d708" title="Add a zero-initialization step.">InitializationSequence::AddZeroInitializationStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a5cb822c4a72bb62a8fc5bc690cc6fa5f" title="Zero-initialize the object.">SK_ZeroInitialization</a>;</div>
+<div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02846"></a><span class="lineno"> 2846</span> }</div>
+<div class="line"><a name="l02847"></a><span class="lineno"> 2847</span> </div>
+<div class="line"><a name="l02848"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#abe3fded7e83730400bff8c6286c469fa"> 2848</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#abe3fded7e83730400bff8c6286c469fa" title="Add a C assignment step.">InitializationSequence::AddCAssignmentStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ac3ac60f3b30ca69662dac4b5f23b70e1" title="C assignment.">SK_CAssignment</a>;</div>
+<div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02853"></a><span class="lineno"> 2853</span> }</div>
+<div class="line"><a name="l02854"></a><span class="lineno"> 2854</span> </div>
+<div class="line"><a name="l02855"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a0572dfef1b361d0b086ac334a1212d45"> 2855</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#a0572dfef1b361d0b086ac334a1212d45" title="Add a string init step.">InitializationSequence::AddStringInitStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a5c2d119979539cca66f6fdc728617254" title="Initialization by string.">SK_StringInit</a>;</div>
+<div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02860"></a><span class="lineno"> 2860</span> }</div>
+<div class="line"><a name="l02861"></a><span class="lineno"> 2861</span> </div>
+<div class="line"><a name="l02862"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a89b1e16440d138dfb6c471da35fdbe71"> 2862</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#a89b1e16440d138dfb6c471da35fdbe71" title="Add an Objective-C object conversion step, which is always a no-op.">InitializationSequence::AddObjCObjectConversionStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a1b04963a8d3e61d50731d23c533d669b" title="An initialization that "converts" an Objective-C object (not a point to an object) to another Objecti...">SK_ObjCObjectConversion</a>;</div>
+<div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02867"></a><span class="lineno"> 2867</span> }</div>
+<div class="line"><a name="l02868"></a><span class="lineno"> 2868</span> </div>
+<div class="line"><a name="l02869"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#afbef80e01ef3a7dd2938c706661e8e2d"> 2869</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#afbef80e01ef3a7dd2938c706661e8e2d" title="Add an array initialization step.">InitializationSequence::AddArrayInitStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a9511a902d14f558f6532260296f5b5f7" title="Array initialization (from an array rvalue). This is a GNU C extension.">SK_ArrayInit</a>;</div>
+<div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02874"></a><span class="lineno"> 2874</span> }</div>
+<div class="line"><a name="l02875"></a><span class="lineno"> 2875</span> </div>
+<div class="line"><a name="l02876"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a912875b8a7ab145dfb5aca0e959d33eb"> 2876</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#a912875b8a7ab145dfb5aca0e959d33eb" title="Add a parenthesized array initialization step.">InitializationSequence::AddParenthesizedArrayInitStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a92733093282fd1689577266f010ff34c" title="Array initialization from a parenthesized initializer list. This is a GNU C++ extension.">SK_ParenthesizedArrayInit</a>;</div>
+<div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02881"></a><span class="lineno"> 2881</span> }</div>
+<div class="line"><a name="l02882"></a><span class="lineno"> 2882</span> </div>
+<div class="line"><a name="l02883"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#ac25be918259a7178bc33e812f49f67b3"> 2883</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#ac25be918259a7178bc33e812f49f67b3" title="Add a step to pass an object by indirect copy-restore.">InitializationSequence::AddPassByIndirectCopyRestoreStep</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="l02884"></a><span class="lineno"> 2884</span>                                                               <span class="keywordtype">bool</span> shouldCopy) {</div>
+<div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> s;</div>
+<div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>   s.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = (shouldCopy ? <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ac64b60a0997b29c2c71ebde495ea6e00" title="Pass an object by indirect copy-and-restore.">SK_PassByIndirectCopyRestore</a></div>
+<div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>                        : <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a8452eca76751288bd481213ce3458799" title="Pass an object by indirect restore.">SK_PassByIndirectRestore</a>);</div>
+<div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>   s.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</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="l02889"></a><span class="lineno"> 2889</span>   Steps.push_back(s);</div>
+<div class="line"><a name="l02890"></a><span class="lineno"> 2890</span> }</div>
+<div class="line"><a name="l02891"></a><span class="lineno"> 2891</span> </div>
+<div class="line"><a name="l02892"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#ad49c645c28ab04c3f9992a9bc8502d35"> 2892</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#ad49c645c28ab04c3f9992a9bc8502d35" title="Add a step to "produce" an Objective-C object (by retaining it).">InitializationSequence::AddProduceObjCObjectStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a315c438090b725bf7f90a84941a4376d" title="Produce an Objective-C object pointer.">SK_ProduceObjCObject</a>;</div>
+<div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02897"></a><span class="lineno"> 2897</span> }</div>
+<div class="line"><a name="l02898"></a><span class="lineno"> 2898</span> </div>
+<div class="line"><a name="l02899"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a230dfb1164a8aad0a4d2170dafc78cd4"> 2899</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#a230dfb1164a8aad0a4d2170dafc78cd4" title="Add a step to construct a std::initializer_list object from an initializer list.">InitializationSequence::AddStdInitializerListConstructionStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43af2d84d7fa41e080322131cb9f2e3ec0e" title="Construct a std::initializer_list from an initializer list.">SK_StdInitializerList</a>;</div>
+<div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02904"></a><span class="lineno"> 2904</span> }</div>
+<div class="line"><a name="l02905"></a><span class="lineno"> 2905</span> </div>
+<div class="line"><a name="l02906"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#abaa1beae5de31403c510b994de8e24d0"> 2906</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#abaa1beae5de31403c510b994de8e24d0" title="Add a step to initialize an OpenCL sampler from an integer constant.">InitializationSequence::AddOCLSamplerInitStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a5670688410d5c0233312414f8304fceb" title="Initialize an OpenCL sampler from an integer.">SK_OCLSamplerInit</a>;</div>
+<div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02911"></a><span class="lineno"> 2911</span> }</div>
+<div class="line"><a name="l02912"></a><span class="lineno"> 2912</span> </div>
+<div class="line"><a name="l02913"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#afbafed4c7668638676e384499ad9db72"> 2913</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#afbafed4c7668638676e384499ad9db72" title="Add a step to initialize an OpenCL event_t from a NULL constant.">InitializationSequence::AddOCLZeroEventStep</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a1553ed030eed8049dd5878a6882caede" title="The kind of conversion or initialization step we are taking.">Kind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43a7114f82bb5fcf153112786e91e2c8355" title="Passing zero to a function where OpenCL event_t is expected.">SK_OCLZeroEvent</a>;</div>
+<div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>   S.<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#afcc93481a06853862962fe2020ff6f6b">Type</a> = T;</div>
+<div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02918"></a><span class="lineno"> 2918</span> }</div>
+<div class="line"><a name="l02919"></a><span class="lineno"> 2919</span> </div>
+<div class="line"><a name="l02920"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#ac33f4326828166d2fcc0ff8c97f53d6a"> 2920</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#ac33f4326828166d2fcc0ff8c97f53d6a" title="Add steps to unwrap a initializer list for a reference around a single element and rewrap it at the e...">InitializationSequence::RewrapReferenceInitList</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>                                                      <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *Syntactic) {</div>
+<div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>   assert(Syntactic-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() == 1 &&</div>
+<div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>          <span class="stringliteral">"Can only rewrap trivial init lists."</span>);</div>
+<div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>   <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>   S.Kind = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ad5d41b21d1325f42d287f93396201170" title="Unwrap the single-element initializer list for a reference.">SK_UnwrapInitList</a>;</div>
+<div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>   S.Type = Syntactic-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(0)-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>   Steps.insert(Steps.begin(), <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>);</div>
+<div class="line"><a name="l02928"></a><span class="lineno"> 2928</span> </div>
+<div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>   S.Kind = <a class="code" href="classclang_1_1InitializationSequence.html#a2b616a44866d14510e819d4a331b2d43ab8a347a50a443aeefcf1ea1bc7f0e244" title="Rewrap the single-element initializer list for a reference.">SK_RewrapInitList</a>;</div>
+<div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>   S.Type = T;</div>
+<div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>   S.WrappingSyntacticList = Syntactic;</div>
+<div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>   Steps.push_back(S);</div>
+<div class="line"><a name="l02933"></a><span class="lineno"> 2933</span> }</div>
+<div class="line"><a name="l02934"></a><span class="lineno"> 2934</span> </div>
+<div class="line"><a name="l02935"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a8da1a2bd14c2827cc95fd6f3d2eed7d4"> 2935</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#a8da1a2bd14c2827cc95fd6f3d2eed7d4" title="Note that this initialization sequence failed due to failed overload resolution.">InitializationSequence::SetOverloadFailure</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6" title="Describes why initialization failed.">FailureKind</a> Failure,</div>
+<div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>                                                 <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2">OverloadingResult</a> Result) {</div>
+<div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>   <a class="code" href="classclang_1_1InitializationSequence.html#a83e7318b3821e122fca8f98e25b231b6" title="Set the kind of sequence computed.">setSequenceKind</a>(<a class="code" href="classclang_1_1InitializationSequence.html#ae4165aad3884059f494b2823e4353fcca3cf5b85304abb163f5d2dc0025a2b3de" title="A failed initialization sequence. The failure kind tells what happened.">FailedSequence</a>);</div>
+<div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>   this->Failure = Failure;</div>
+<div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>   this->FailedOverloadResult = Result;</div>
+<div class="line"><a name="l02940"></a><span class="lineno"> 2940</span> }</div>
+<div class="line"><a name="l02941"></a><span class="lineno"> 2941</span> </div>
+<div class="line"><a name="l02942"></a><span class="lineno"> 2942</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l02943"></a><span class="lineno"> 2943</span> <span class="comment">// Attempt initialization</span></div>
+<div class="line"><a name="l02944"></a><span class="lineno"> 2944</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l02945"></a><span class="lineno"> 2945</span> </div>
+<div class="line"><a name="l02946"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#ad98ec1ab8fb430b15e4f18d2ecbbd238"> 2946</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#ad98ec1ab8fb430b15e4f18d2ecbbd238">MaybeProduceObjCObject</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>                                    <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence,</div>
+<div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity) {</div>
+<div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>   <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02950"></a><span class="lineno"> 2950</span> <span class="comment"></span></div>
+<div class="line"><a name="l02951"></a><span class="lineno"> 2951</span> <span class="comment">  /// When initializing a parameter, produce the value if it's marked</span></div>
+<div class="line"><a name="l02952"></a><span class="lineno"> 2952</span> <span class="comment">  /// __attribute__((ns_consumed)).</span></div>
+<div class="line"><a name="l02953"></a><span class="lineno"> 2953</span> <span class="comment"></span>  <span class="keywordflow">if</span> (Entity.<a class="code" href="classclang_1_1InitializedEntity.html#ac1e0e819f13113f2cbdc7cc6270054c2">isParameterKind</a>()) {</div>
+<div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>     <span class="keywordflow">if</span> (!Entity.<a class="code" href="classclang_1_1InitializedEntity.html#aae57c1a1e15536433467a17042418e4f" title="Determine whether this initialization consumes the parameter.">isParameterConsumed</a>())</div>
+<div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02956"></a><span class="lineno"> 2956</span> </div>
+<div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>     assert(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>()-><a class="code" href="classclang_1_1Type.html#aefead70d5348015b03c14f274621789c">isObjCRetainableType</a>() &&</div>
+<div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>            <span class="stringliteral">"consuming an object of unretainable type?"</span>);</div>
+<div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ad49c645c28ab04c3f9992a9bc8502d35" title="Add a step to "produce" an Objective-C object (by retaining it).">AddProduceObjCObjectStep</a>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>());</div>
+<div class="line"><a name="l02960"></a><span class="lineno"> 2960</span> <span class="comment"></span></div>
+<div class="line"><a name="l02961"></a><span class="lineno"> 2961</span> <span class="comment">  /// When initializing a return value, if the return type is a</span></div>
+<div class="line"><a name="l02962"></a><span class="lineno"> 2962</span> <span class="comment">  /// retainable type, then returns need to immediately retain the</span></div>
+<div class="line"><a name="l02963"></a><span class="lineno"> 2963</span> <span class="comment">  /// object.  If an autorelease is required, it will be done at the</span></div>
+<div class="line"><a name="l02964"></a><span class="lineno"> 2964</span> <span class="comment">  /// last instant.</span></div>
+<div class="line"><a name="l02965"></a><span class="lineno"> 2965</span> <span class="comment"></span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a22f327e1c51a6322f89ceaef6be71908" title="Determine the kind of initialization.">getKind</a>() == <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a6f2be4544543917c1137af65688538d4" title="The entity being initialized is the result of a function call.">InitializedEntity::EK_Result</a>) {</div>
+<div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>     <span class="keywordflow">if</span> (!Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>()-><a class="code" href="classclang_1_1Type.html#aefead70d5348015b03c14f274621789c">isObjCRetainableType</a>())</div>
+<div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02968"></a><span class="lineno"> 2968</span> </div>
+<div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ad49c645c28ab04c3f9992a9bc8502d35" title="Add a step to "produce" an Objective-C object (by retaining it).">AddProduceObjCObjectStep</a>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>());</div>
+<div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>   }</div>
+<div class="line"><a name="l02971"></a><span class="lineno"> 2971</span> }</div>
+<div class="line"><a name="l02972"></a><span class="lineno"> 2972</span> </div>
+<div class="line"><a name="l02973"></a><span class="lineno"> 2973</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a73764aae33e1010dba9dd488317406d2" title="Attempt list initialization (C++0x [dcl.init.list])">TryListInitialization</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>                                   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *InitList,</div>
+<div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>                                   <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence);</div>
+<div class="line"><a name="l02978"></a><span class="lineno"> 2978</span> <span class="comment"></span></div>
+<div class="line"><a name="l02979"></a><span class="lineno"> 2979</span> <span class="comment">/// \brief When initializing from init list via constructor, handle</span></div>
+<div class="line"><a name="l02980"></a><span class="lineno"> 2980</span> <span class="comment">/// initialization of an object of type std::initializer_list<T>.</span></div>
+<div class="line"><a name="l02981"></a><span class="lineno"> 2981</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02982"></a><span class="lineno"> 2982</span> <span class="comment">/// \return true if we have handled initialization of an object of type</span></div>
+<div class="line"><a name="l02983"></a><span class="lineno"> 2983</span> <span class="comment">/// std::initializer_list<T>, false otherwise.</span></div>
+<div class="line"><a name="l02984"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a2ebc6dce62db06c4b2a4363e1b89d6ee"> 2984</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaInit_8cpp.html#a2ebc6dce62db06c4b2a4363e1b89d6ee" title="When initializing from init list via constructor, handle initialization of an object of type std::ini...">TryInitializerListConstruction</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>                                            <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *List,</div>
+<div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>                                            <a class="code" href="classclang_1_1QualType.html">QualType</a> DestType,</div>
+<div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>                                            <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence) {</div>
+<div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> E;</div>
+<div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>   <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#ab386e5d12f278fb049a600fda792cf95" title="Tests whether Ty is an instance of std::initializer_list and, if it is and Element is not NULL...">isStdInitializerList</a>(DestType, &E))</div>
+<div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02991"></a><span class="lineno"> 2991</span> </div>
+<div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(List-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>(), E, 0)) {</div>
+<div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#aa90890c3ab0bd025b5de5837195ffb5e" title="Note that this initialization sequence failed due to an incomplete type.">setIncompleteTypeFailure</a>(E);</div>
+<div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>   }</div>
+<div class="line"><a name="l02996"></a><span class="lineno"> 2996</span> </div>
+<div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>   <span class="comment">// Try initializing a temporary array from the init list.</span></div>
+<div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a1dfd9aba04afad486b0dbbfc17de130b" title="Return the unique reference to the type for a constant array of the specified element type...">getConstantArrayType</a>(</div>
+<div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>       E.<a class="code" href="classclang_1_1QualType.html#af67a97892c8d03335815654b4b1b27db">withConst</a>(), llvm::APInt(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ae3093bf57c46337c9a3f2f42ad8764ee" title="Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.">getSizeType</a>()),</div>
+<div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>                                  List-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>()),</div>
+<div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>       <a class="code" href="classclang_1_1ArrayType.html#a044cc135a180b91387c89659ab7cabb4a4c2f47d08e59b0457e60184462599c17">clang::ArrayType::Normal</a>, 0);</div>
+<div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>   <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> HiddenArray =</div>
+<div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>       <a class="code" href="classclang_1_1InitializedEntity.html#a4898b194ad60ddb5d0293dd57e730d3f" title="Create the initialization entity for a temporary.">InitializedEntity::InitializeTemporary</a>(ArrayType);</div>
+<div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>   <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> Kind =</div>
+<div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>       <a class="code" href="classclang_1_1InitializationKind.html#ababb0f1fa3e83ec76b5924cd6e300573">InitializationKind::CreateDirectList</a>(List-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>());</div>
+<div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>   <a class="code" href="SemaInit_8cpp.html#a73764aae33e1010dba9dd488317406d2" title="Attempt list initialization (C++0x [dcl.init.list])">TryListInitialization</a>(S, HiddenArray, Kind, List, Sequence);</div>
+<div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>   <span class="keywordflow">if</span> (Sequence)</div>
+<div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a230dfb1164a8aad0a4d2170dafc78cd4" title="Add a step to construct a std::initializer_list object from an initializer list.">AddStdInitializerListConstructionStep</a>(DestType);</div>
+<div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l03010"></a><span class="lineno"> 3010</span> }</div>
+<div class="line"><a name="l03011"></a><span class="lineno"> 3011</span> </div>
+<div class="line"><a name="l03012"></a><span class="lineno"> 3012</span> <span class="keyword">static</span> <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2">OverloadingResult</a></div>
+<div class="line"><a name="l03013"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#ac75b3e9d73151d58b77991080ee84200"> 3013</a></span> <a class="code" href="SemaInit_8cpp.html#ac75b3e9d73151d58b77991080ee84200">ResolveConstructorOverload</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S, <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> DeclLoc,</div>
+<div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>                            <a class="code" href="namespaceclang.html#a2cab300377c9fa787240e2d1d0f70e17">MultiExprArg</a> <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>                            <a class="code" href="classclang_1_1OverloadCandidateSet.html">OverloadCandidateSet</a> &<a class="code" href="SemaOverload_8cpp.html#abc89d2b7943972f58bc9ca9737021197">CandidateSet</a>,</div>
+<div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>                            <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<NamedDecl *></a> Ctors,</div>
+<div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>                            <a class="code" href="classclang_1_1OverloadCandidateSet.html#abe5a94cc940d49a8f336131a22c41600">OverloadCandidateSet::iterator</a> &Best,</div>
+<div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>                            <span class="keywordtype">bool</span> CopyInitializing, <span class="keywordtype">bool</span> AllowExplicit,</div>
+<div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>                            <span class="keywordtype">bool</span> OnlyListConstructors, <span class="keywordtype">bool</span> InitListSyntax) {</div>
+<div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>   CandidateSet.<a class="code" href="classclang_1_1OverloadCandidateSet.html#a6f6c5929d473ed909051676ff098f71c" title="Clear out all of the candidates.">clear</a>();</div>
+<div class="line"><a name="l03021"></a><span class="lineno"> 3021</span> </div>
+<div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<NamedDecl *>::iterator</a></div>
+<div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>          Con = Ctors.begin(), ConEnd = Ctors.end(); Con != ConEnd; ++Con) {</div>
+<div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>     <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *D = *Con;</div>
+<div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>     <a class="code" href="classclang_1_1DeclAccessPair.html">DeclAccessPair</a> FoundDecl = <a class="code" href="classclang_1_1DeclAccessPair.html#a40bf16940069615f789f599664048241">DeclAccessPair::make</a>(D, D-><a class="code" href="classclang_1_1Decl.html#a81e82461f69e9a50e129ef4bfac42987">getAccess</a>());</div>
+<div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>     <span class="keywordtype">bool</span> SuppressUserConversions = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03027"></a><span class="lineno"> 3027</span> </div>
+<div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>     <span class="comment">// Find the constructor (which may be a template).</span></div>
+<div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>     <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *Constructor = 0;</div>
+<div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>     <a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *ConstructorTmpl = dyn_cast<<a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a>>(D);</div>
+<div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>     <span class="keywordflow">if</span> (ConstructorTmpl)</div>
+<div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>       Constructor = cast<CXXConstructorDecl>(</div>
+<div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>                                            ConstructorTmpl-><a class="code" href="classclang_1_1FunctionTemplateDecl.html#ad81ffc46ec5f0ff58641b23a787c55e5" title="Get the underlying function declaration of the template.">getTemplatedDecl</a>());</div>
+<div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>     <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>       Constructor = cast<CXXConstructorDecl>(D);</div>
+<div class="line"><a name="l03036"></a><span class="lineno"> 3036</span> </div>
+<div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>       <span class="comment">// C++11 [over.best.ics]p4:</span></div>
+<div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>       <span class="comment">//   However, when considering the argument of a constructor or</span></div>
+<div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>       <span class="comment">//   user-defined conversion function that is a candidate:</span></div>
+<div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>       <span class="comment">//    -- by 13.3.1.3 when invoked for the copying/moving of a temporary</span></div>
+<div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>       <span class="comment">//       in the second step of a class copy-initialization,</span></div>
+<div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>       <span class="comment">//    -- by 13.3.1.7 when passing the initializer list as a single</span></div>
+<div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>       <span class="comment">//       argument or when the initializer list has exactly one elementand</span></div>
+<div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>       <span class="comment">//       a conversion to some class X or reference to (possibly</span></div>
+<div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>       <span class="comment">//       cv-qualified) X is considered for the first parameter of a</span></div>
+<div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>       <span class="comment">//       constructor of X, or</span></div>
+<div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>       <span class="comment">//    -- by 13.3.1.4, 13.3.1.5, or 13.3.1.6 in all cases,</span></div>
+<div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>       <span class="comment">//   only standard conversion sequences and ellipsis conversion sequences</span></div>
+<div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>       <span class="comment">//   are considered.</span></div>
+<div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>       <span class="keywordflow">if</span> ((CopyInitializing || (InitListSyntax && Args.size() == 1)) &&</div>
+<div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>           Constructor-><a class="code" href="classclang_1_1CXXConstructorDecl.html#aef52dbe6cecded9b37af3ba3c33e1951" title="Determine whether this is a copy or move constructor.">isCopyOrMoveConstructor</a>())</div>
+<div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>         SuppressUserConversions = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>     }</div>
+<div class="line"><a name="l03054"></a><span class="lineno"> 3054</span> </div>
+<div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>     <span class="keywordflow">if</span> (!Constructor-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>() &&</div>
+<div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>         (AllowExplicit || !Constructor-><a class="code" href="classclang_1_1CXXConstructorDecl.html#a953d7d78b3eb58de1938396c52989806" title="Determine whether this constructor was marked "explicit" or not.">isExplicit</a>()) &&</div>
+<div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>         (!OnlyListConstructors || S.<a class="code" href="classclang_1_1Sema.html#a0ebf594d1ae7963c7303017830d56acf" title="Determine whether Ctor is an initializer-list constructor, as defined in [dcl.init.list]p2.">isInitListConstructor</a>(Constructor))) {</div>
+<div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>       <span class="keywordflow">if</span> (ConstructorTmpl)</div>
+<div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>         S.<a class="code" href="classclang_1_1Sema.html#a6ffe5bc5b099f86017db0ce416fb64dd" title="Add a C++ function template specialization as a candidate in the candidate set, using template argume...">AddTemplateOverloadCandidate</a>(ConstructorTmpl, FoundDecl,</div>
+<div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>                                        <span class="comment">/*ExplicitArgs*/</span> 0, Args,</div>
+<div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>                                        CandidateSet, SuppressUserConversions);</div>
+<div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>       <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>         <span class="comment">// C++ [over.match.copy]p1:</span></div>
+<div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>         <span class="comment">//   - When initializing a temporary to be bound to the first parameter </span></div>
+<div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>         <span class="comment">//     of a constructor that takes a reference to possibly cv-qualified </span></div>
+<div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>         <span class="comment">//     T as its first argument, called with a single argument in the </span></div>
+<div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>         <span class="comment">//     context of direct-initialization, explicit conversion functions</span></div>
+<div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>         <span class="comment">//     are also considered.</span></div>
+<div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>         <span class="keywordtype">bool</span> AllowExplicitConv = AllowExplicit && !CopyInitializing && </div>
+<div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>                                  Args.size() == 1 &&</div>
+<div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>                                  Constructor-><a class="code" href="classclang_1_1CXXConstructorDecl.html#aef52dbe6cecded9b37af3ba3c33e1951" title="Determine whether this is a copy or move constructor.">isCopyOrMoveConstructor</a>();</div>
+<div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>         S.<a class="code" href="classclang_1_1Sema.html#a2a561b311be40457703ba2c78768c0ee">AddOverloadCandidate</a>(Constructor, FoundDecl, Args, CandidateSet,</div>
+<div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>                                SuppressUserConversions,</div>
+<div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>                                <span class="comment">/*PartialOverloading=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>                                <span class="comment">/*AllowExplicit=*/</span>AllowExplicitConv);</div>
+<div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>       }</div>
+<div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>     }</div>
+<div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>   }</div>
+<div class="line"><a name="l03079"></a><span class="lineno"> 3079</span> </div>
+<div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>   <span class="comment">// Perform overload resolution and return the result.</span></div>
+<div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>   <span class="keywordflow">return</span> CandidateSet.<a class="code" href="classclang_1_1OverloadCandidateSet.html#a163568829049a9d0a0ed4596049b8360" title="Find the best viable function on this overload set, if it exists.">BestViableFunction</a>(S, DeclLoc, Best);</div>
+<div class="line"><a name="l03082"></a><span class="lineno"> 3082</span> }</div>
+<div class="line"><a name="l03083"></a><span class="lineno"> 3083</span> <span class="comment"></span></div>
+<div class="line"><a name="l03084"></a><span class="lineno"> 3084</span> <span class="comment">/// \brief Attempt initialization by constructor (C++ [dcl.init]), which</span></div>
+<div class="line"><a name="l03085"></a><span class="lineno"> 3085</span> <span class="comment">/// enumerates the constructors of the initialized entity and performs overload</span></div>
+<div class="line"><a name="l03086"></a><span class="lineno"> 3086</span> <span class="comment">/// resolution to select the best.</span></div>
+<div class="line"><a name="l03087"></a><span class="lineno"> 3087</span> <span class="comment">/// If InitListSyntax is true, this is list-initialization of a non-aggregate</span></div>
+<div class="line"><a name="l03088"></a><span class="lineno"> 3088</span> <span class="comment">/// class type.</span></div>
+<div class="line"><a name="l03089"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a5cf6000aab624ed20401360c4e03fbe8"> 3089</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a5cf6000aab624ed20401360c4e03fbe8" title="Attempt initialization by constructor (C++ [dcl.init]), which enumerates the constructors of the init...">TryConstructorInitialization</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>                                          <a class="code" href="namespaceclang.html#a2cab300377c9fa787240e2d1d0f70e17">MultiExprArg</a> <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>, <a class="code" href="classclang_1_1QualType.html">QualType</a> DestType,</div>
+<div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>                                          <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence,</div>
+<div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>                                          <span class="keywordtype">bool</span> InitListSyntax = <span class="keyword">false</span>) {</div>
+<div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>   assert((!InitListSyntax || (Args.size() == 1 && isa<InitListExpr>(Args[0]))) &&</div>
+<div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>          <span class="stringliteral">"InitListSyntax must come with a single initializer list argument."</span>);</div>
+<div class="line"><a name="l03097"></a><span class="lineno"> 3097</span> </div>
+<div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>   <span class="comment">// The type we're constructing needs to be complete.</span></div>
+<div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(Kind.<a class="code" href="classclang_1_1InitializationKind.html#a7a69dd5cd1cd248bb049b57244e7a20d" title="Retrieve the location at which initialization is occurring.">getLocation</a>(), DestType, 0)) {</div>
+<div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#aa90890c3ab0bd025b5de5837195ffb5e" title="Note that this initialization sequence failed due to an incomplete type.">setIncompleteTypeFailure</a>(DestType);</div>
+<div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>   }</div>
+<div class="line"><a name="l03103"></a><span class="lineno"> 3103</span> </div>
+<div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *DestRecordType = DestType-><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="l03105"></a><span class="lineno"> 3105</span>   assert(DestRecordType && <span class="stringliteral">"Constructor initialization requires record type"</span>);</div>
+<div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>   <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *DestRecordDecl</div>
+<div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>     = cast<CXXRecordDecl>(DestRecordType-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>());</div>
+<div class="line"><a name="l03108"></a><span class="lineno"> 3108</span> </div>
+<div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>   <span class="comment">// Build the candidate set directly in the initialization sequence</span></div>
+<div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>   <span class="comment">// structure, so that it will persist if we fail.</span></div>
+<div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>   <a class="code" href="classclang_1_1OverloadCandidateSet.html">OverloadCandidateSet</a> &<a class="code" href="SemaOverload_8cpp.html#abc89d2b7943972f58bc9ca9737021197">CandidateSet</a> = Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#abb61b1c5e1208b7df98012b7c97280ff" title="Retrieve a reference to the candidate set when overload resolution fails.">getFailedCandidateSet</a>();</div>
+<div class="line"><a name="l03112"></a><span class="lineno"> 3112</span> </div>
+<div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>   <span class="comment">// Determine whether we are allowed to call explicit constructors or</span></div>
+<div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>   <span class="comment">// explicit conversion operators.</span></div>
+<div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>   <span class="keywordtype">bool</span> AllowExplicit = Kind.<a class="code" href="classclang_1_1InitializationKind.html#ab23e149dd729c4dbfe373ef308bd795e" title="Retrieve whether this initialization allows the use of explicit constructors.">AllowExplicit</a>() || InitListSyntax;</div>
+<div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>   <span class="keywordtype">bool</span> CopyInitialization = Kind.<a class="code" href="classclang_1_1InitializationKind.html#ac427022260d4ab6f2ef3b5f57a083076" title="Determine the initialization kind.">getKind</a>() == <a class="code" href="classclang_1_1InitializationKind.html#a15911670bbe7baf3eac6056ed6b66ac8adcd5738e1ca0f95ca2025f3a0d7a6917" title="Copy initialization.">InitializationKind::IK_Copy</a>;</div>
+<div class="line"><a name="l03117"></a><span class="lineno"> 3117</span> </div>
+<div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>   <span class="comment">//   - Otherwise, if T is a class type, constructors are considered. The</span></div>
+<div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>   <span class="comment">//     applicable constructors are enumerated, and the best one is chosen</span></div>
+<div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>   <span class="comment">//     through overload resolution.</span></div>
+<div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>   <a class="code" href="classclang_1_1DeclContext.html#ac25dc34eabe6c4e035c76dd3329e8530">DeclContext::lookup_result</a> R = S.<a class="code" href="classclang_1_1Sema.html#af6ed9855dadff52cd89e04be53ea94a3" title="Look up the constructors for the given class.">LookupConstructors</a>(DestRecordDecl);</div>
+<div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>   <span class="comment">// The container holding the constructors can under certain conditions</span></div>
+<div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>   <span class="comment">// be changed while iterating (e.g. because of deserialization).</span></div>
+<div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>   <span class="comment">// To be safe we copy the lookup results to a new container.</span></div>
+<div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<NamedDecl*, 16></a> Ctors(R.begin(), R.end());</div>
+<div class="line"><a name="l03126"></a><span class="lineno"> 3126</span> </div>
+<div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>   <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2">OverloadingResult</a> Result = <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2aec527dfc3dfd4f09e60bec8a2de45b14" title="No viable function found.">OR_No_Viable_Function</a>;</div>
+<div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>   <a class="code" href="classclang_1_1OverloadCandidateSet.html#abe5a94cc940d49a8f336131a22c41600">OverloadCandidateSet::iterator</a> Best;</div>
+<div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>   <span class="keywordtype">bool</span> AsInitializerList = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03130"></a><span class="lineno"> 3130</span> </div>
+<div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>   <span class="comment">// C++11 [over.match.list]p1:</span></div>
+<div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>   <span class="comment">//   When objects of non-aggregate type T are list-initialized, overload</span></div>
+<div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>   <span class="comment">//   resolution selects the constructor in two phases:</span></div>
+<div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>   <span class="comment">//   - Initially, the candidate functions are the initializer-list</span></div>
+<div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>   <span class="comment">//     constructors of the class T and the argument list consists of the</span></div>
+<div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>   <span class="comment">//     initializer list as a single argument.</span></div>
+<div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>   <span class="keywordflow">if</span> (InitListSyntax) {</div>
+<div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>     <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ILE = cast<InitListExpr>(Args[0]);</div>
+<div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>     AsInitializerList = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l03140"></a><span class="lineno"> 3140</span> </div>
+<div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>     <span class="comment">// If the initializer list has no elements and T has a default constructor,</span></div>
+<div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>     <span class="comment">// the first phase is omitted.</span></div>
+<div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>     <span class="keywordflow">if</span> (ILE-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() != 0 || !DestRecordDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a6429ecb8fd76d229dd096dcac70882c4" title="Determine whether this class has any default constructors.">hasDefaultConstructor</a>())</div>
+<div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>       Result = <a class="code" href="SemaInit_8cpp.html#ac75b3e9d73151d58b77991080ee84200">ResolveConstructorOverload</a>(S, Kind.<a class="code" href="classclang_1_1InitializationKind.html#a7a69dd5cd1cd248bb049b57244e7a20d" title="Retrieve the location at which initialization is occurring.">getLocation</a>(), <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>                                           <a class="code" href="SemaOverload_8cpp.html#abc89d2b7943972f58bc9ca9737021197">CandidateSet</a>, Ctors, Best,</div>
+<div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>                                           CopyInitialization, AllowExplicit,</div>
+<div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>                                           <span class="comment">/*OnlyListConstructor=*/</span><span class="keyword">true</span>,</div>
+<div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>                                           InitListSyntax);</div>
+<div class="line"><a name="l03149"></a><span class="lineno"> 3149</span> </div>
+<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>     <span class="comment">// Time to unwrap the init list.</span></div>
+<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>     Args = <a class="code" href="namespaceclang.html#a2cab300377c9fa787240e2d1d0f70e17">MultiExprArg</a>(ILE-><a class="code" href="classclang_1_1InitListExpr.html#a9c8e3b94a698c856190bffa2127fe46a" title="Retrieve the set of initializers.">getInits</a>(), ILE-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>());</div>
+<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>   }</div>
+<div class="line"><a name="l03153"></a><span class="lineno"> 3153</span> </div>
+<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>   <span class="comment">// C++11 [over.match.list]p1:</span></div>
+<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>   <span class="comment">//   - If no viable initializer-list constructor is found, overload resolution</span></div>
+<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>   <span class="comment">//     is performed again, where the candidate functions are all the</span></div>
+<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>   <span class="comment">//     constructors of the class T and the argument list consists of the</span></div>
+<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>   <span class="comment">//     elements of the initializer list.</span></div>
+<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>   <span class="keywordflow">if</span> (Result == <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2aec527dfc3dfd4f09e60bec8a2de45b14" title="No viable function found.">OR_No_Viable_Function</a>) {</div>
+<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>     AsInitializerList = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>     Result = <a class="code" href="SemaInit_8cpp.html#ac75b3e9d73151d58b77991080ee84200">ResolveConstructorOverload</a>(S, Kind.<a class="code" href="classclang_1_1InitializationKind.html#a7a69dd5cd1cd248bb049b57244e7a20d" title="Retrieve the location at which initialization is occurring.">getLocation</a>(), <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>                                         <a class="code" href="SemaOverload_8cpp.html#abc89d2b7943972f58bc9ca9737021197">CandidateSet</a>, Ctors, Best,</div>
+<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>                                         CopyInitialization, AllowExplicit,</div>
+<div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>                                         <span class="comment">/*OnlyListConstructors=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>                                         InitListSyntax);</div>
+<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>   }</div>
+<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>   <span class="keywordflow">if</span> (Result) {</div>
+<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a8da1a2bd14c2827cc95fd6f3d2eed7d4" title="Note that this initialization sequence failed due to failed overload resolution.">SetOverloadFailure</a>(InitListSyntax ?</div>
+<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>                       <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a39ea9313c4a17184df03ef6b981f44f5" title="Overloading for list-initialization by constructor failed.">InitializationSequence::FK_ListConstructorOverloadFailed</a> :</div>
+<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>                       <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6ade7f63d7e6cf8c9a984c22fc9561fe49" title="Overloading for initialization by constructor failed.">InitializationSequence::FK_ConstructorOverloadFailed</a>,</div>
+<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>                                 Result);</div>
+<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>   }</div>
+<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span> </div>
+<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>   <span class="comment">// C++11 [dcl.init]p6:</span></div>
+<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>   <span class="comment">//   If a program calls for the default initialization of an object</span></div>
+<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>   <span class="comment">//   of a const-qualified type T, T shall be a class type with a</span></div>
+<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>   <span class="comment">//   user-provided default constructor.</span></div>
+<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>   <span class="keywordflow">if</span> (Kind.<a class="code" href="classclang_1_1InitializationKind.html#ac427022260d4ab6f2ef3b5f57a083076" title="Determine the initialization kind.">getKind</a>() == <a class="code" href="classclang_1_1InitializationKind.html#a15911670bbe7baf3eac6056ed6b66ac8ae6c560fc0b07cc330885416b1122aa6e" title="Default initialization.">InitializationKind::IK_Default</a> &&</div>
+<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>       Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>().<a class="code" href="classclang_1_1QualType.html#afea72c89b99446db779fcfb0ea257826" title="Determine whether this type is const-qualified.">isConstQualified</a>() &&</div>
+<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>       !cast<CXXConstructorDecl>(Best->Function)->isUserProvided()) {</div>
+<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6ae073a34c92c2143cd0bf32ae1f2b34d9" title="Default-initialization of a 'const' object.">InitializationSequence::FK_DefaultInitOfConst</a>);</div>
+<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>   }</div>
+<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span> </div>
+<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>   <span class="comment">// C++11 [over.match.list]p1:</span></div>
+<div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>   <span class="comment">//   In copy-list-initialization, if an explicit constructor is chosen, the</span></div>
+<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>   <span class="comment">//   initializer is ill-formed.</span></div>
+<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>   <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *CtorDecl = cast<CXXConstructorDecl>(Best->Function);</div>
+<div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>   <span class="keywordflow">if</span> (InitListSyntax && !Kind.<a class="code" href="classclang_1_1InitializationKind.html#ab23e149dd729c4dbfe373ef308bd795e" title="Retrieve whether this initialization allows the use of explicit constructors.">AllowExplicit</a>() && CtorDecl-><a class="code" href="classclang_1_1CXXConstructorDecl.html#a953d7d78b3eb58de1938396c52989806" title="Determine whether this constructor was marked "explicit" or not.">isExplicit</a>()) {</div>
+<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6add899f9dbbadb86316f6d33122114cfb" title="List-copy-initialization chose an explicit constructor.">InitializationSequence::FK_ExplicitConstructor</a>);</div>
+<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>   }</div>
+<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span> </div>
+<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>   <span class="comment">// Add the constructor initialization step. Any cv-qualification conversion is</span></div>
+<div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>   <span class="comment">// subsumed by the initialization.</span></div>
+<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>   <span class="keywordtype">bool</span> HadMultipleCandidates = (CandidateSet.size() > 1);</div>
+<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>   Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#abf104165ab376ec031f8833219b769cb" title="Add a constructor-initialization step.">AddConstructorInitializationStep</a>(CtorDecl,</div>
+<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>                                             Best->FoundDecl.<a class="code" href="classclang_1_1Decl.html#a81e82461f69e9a50e129ef4bfac42987">getAccess</a>(),</div>
+<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>                                             DestType, HadMultipleCandidates,</div>
+<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>                                             InitListSyntax, AsInitializerList);</div>
+<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span> }</div>
+<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span> </div>
+<div class="line"><a name="l03204"></a><span class="lineno"> 3204</span> <span class="keyword">static</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l03205"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#ae57305017a6782911f34c0bbe1a6c31d"> 3205</a></span> <a class="code" href="SemaInit_8cpp.html#ae57305017a6782911f34c0bbe1a6c31d">ResolveOverloadedFunctionForReferenceBinding</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>                                              <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer,</div>
+<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>                                              <a class="code" href="classclang_1_1QualType.html">QualType</a> &SourceType,</div>
+<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>                                              <a class="code" href="classclang_1_1QualType.html">QualType</a> &UnqualifiedSourceType,</div>
+<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>                                              <a class="code" href="classclang_1_1QualType.html">QualType</a> UnqualifiedTargetType,</div>
+<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>                                              <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence) {</div>
+<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(UnqualifiedSourceType) ==</div>
+<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>         S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a9630077a927001f119e396456dc9e091">OverloadTy</a>) {</div>
+<div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>     <a class="code" href="classclang_1_1DeclAccessPair.html">DeclAccessPair</a> Found;</div>
+<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>     <span class="keywordtype">bool</span> HadMultipleCandidates = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *Fn</div>
+<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>         = S.<a class="code" href="classclang_1_1Sema.html#a44616720556005fe4b4434f314892068">ResolveAddressOfOverloadedFunction</a>(Initializer,</div>
+<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>                                                UnqualifiedTargetType,</div>
+<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>                                                <span class="keyword">false</span>, Found,</div>
+<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>                                                &HadMultipleCandidates)) {</div>
+<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#af45d87a4928c65151d2b733f2bb128cc" title="Add a new step in the initialization that resolves the address of an overloaded function to a specifi...">AddAddressOverloadResolutionStep</a>(Fn, Found,</div>
+<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>                                                 HadMultipleCandidates);</div>
+<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>       SourceType = Fn->getType();</div>
+<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>       UnqualifiedSourceType = SourceType.<a class="code" href="classclang_1_1QualType.html#a5ddbce9d32b4f8043b641584599fe7e5" title="Retrieve the unqualified variant of the given type, removing as little sugar as possible.">getUnqualifiedType</a>();</div>
+<div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!UnqualifiedTargetType-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) {</div>
+<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6abd3e911b4107171dc42985fcc42e2ce6" title="Cannot resolve the address of an overloaded function.">InitializationSequence::FK_AddressOfOverloadFailed</a>);</div>
+<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>     }</div>
+<div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>   }</div>
+<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span> }</div>
+<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span> </div>
+<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a97f41649f3e99c3db40941d9fa6848b8" title="Reference initialization without resolving overloaded functions.">TryReferenceInitializationCore</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>                                            <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer,</div>
+<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>                                            <a class="code" href="classclang_1_1QualType.html">QualType</a> cv1T1, <a class="code" href="classclang_1_1QualType.html">QualType</a> T1,</div>
+<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>                                            <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> T1Quals,</div>
+<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>                                            <a class="code" href="classclang_1_1QualType.html">QualType</a> cv2T2, <a class="code" href="classclang_1_1QualType.html">QualType</a> T2,</div>
+<div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>                                            <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> T2Quals,</div>
+<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>                                            <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence);</div>
+<div class="line"><a name="l03241"></a><span class="lineno"> 3241</span> </div>
+<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a88176a5ec2539745a7cb67420e9fa0b5" title="Attempt value initialization (C++ [dcl.init]p7).">TryValueInitialization</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>                                    <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence,</div>
+<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>                                    <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *InitList = 0);</div>
+<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span> <span class="comment"></span></div>
+<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span> <span class="comment">/// \brief Attempt list initialization of a reference.</span></div>
+<div class="line"><a name="l03249"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#aab53957f7db2f4277d04533033992ffb"> 3249</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#aab53957f7db2f4277d04533033992ffb" title="Attempt list initialization of a reference.">TryReferenceListInitialization</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>                                            <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *InitList,</div>
+<div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>                                            <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence) {</div>
+<div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>   <span class="comment">// First, catch C++03 where this isn't possible.</span></div>
+<div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>   <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus11) {</div>
+<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6adfbe7cd1a5334af1f8c35f3fee59cdd7" title="Reference initialization from an initializer list.">InitializationSequence::FK_ReferenceBindingToInitList</a>);</div>
+<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>   }</div>
+<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span> </div>
+<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DestType = Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>();</div>
+<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> cv1T1 = DestType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ReferenceType.html">ReferenceType</a>>()->getPointeeType();</div>
+<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>   <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> T1Quals;</div>
+<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T1 = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a9205b0a93f2d9840c12d2bc3a69967de" title="Return this type as a completely-unqualified array type, capturing the qualifiers in Quals...">getUnqualifiedArrayType</a>(cv1T1, T1Quals);</div>
+<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span> </div>
+<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>   <span class="comment">// Reference initialization via an initializer list works thus:</span></div>
+<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>   <span class="comment">// If the initializer list consists of a single element that is</span></div>
+<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>   <span class="comment">// reference-related to the referenced type, bind directly to that element</span></div>
+<div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>   <span class="comment">// (possibly creating temporaries).</span></div>
+<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>   <span class="comment">// Otherwise, initialize a temporary with the initializer list and</span></div>
+<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>   <span class="comment">// bind to that.</span></div>
+<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>   <span class="keywordflow">if</span> (InitList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() == 1) {</div>
+<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>     <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer = InitList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(0);</div>
+<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> cv2T2 = Initializer-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>     <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> T2Quals;</div>
+<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> T2 = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a9205b0a93f2d9840c12d2bc3a69967de" title="Return this type as a completely-unqualified array type, capturing the qualifiers in Quals...">getUnqualifiedArrayType</a>(cv2T2, T2Quals);</div>
+<div class="line"><a name="l03276"></a><span class="lineno"> 3276</span> </div>
+<div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>     <span class="comment">// If this fails, creating a temporary wouldn't work either.</span></div>
+<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>     <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#ae57305017a6782911f34c0bbe1a6c31d">ResolveOverloadedFunctionForReferenceBinding</a>(S, Initializer, cv2T2, T2,</div>
+<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>                                                      T1, Sequence))</div>
+<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span> </div>
+<div class="line"><a name="l03282"></a><span class="lineno"> 3282</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> DeclLoc = Initializer-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>     <span class="keywordtype">bool</span> dummy1, dummy2, dummy3;</div>
+<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>     <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5">Sema::ReferenceCompareResult</a> RefRelationship</div>
+<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>       = S.<a class="code" href="classclang_1_1Sema.html#afa797b20cd9aaa5b332fd7faca01a7d8">CompareReferenceRelationship</a>(DeclLoc, cv1T1, cv2T2, dummy1,</div>
+<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>                                        dummy2, dummy3);</div>
+<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>     <span class="keywordflow">if</span> (RefRelationship >= <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5a5cec00bc98686baf3a3c34b67df18653">Sema::Ref_Related</a>) {</div>
+<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>       <span class="comment">// Try to bind the reference here.</span></div>
+<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>       <a class="code" href="SemaInit_8cpp.html#a97f41649f3e99c3db40941d9fa6848b8" title="Reference initialization without resolving overloaded functions.">TryReferenceInitializationCore</a>(S, Entity, Kind, Initializer, cv1T1, T1,</div>
+<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>                                      T1Quals, cv2T2, T2, T2Quals, Sequence);</div>
+<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>       <span class="keywordflow">if</span> (Sequence)</div>
+<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>         Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ac33f4326828166d2fcc0ff8c97f53d6a" title="Add steps to unwrap a initializer list for a reference around a single element and rewrap it at the e...">RewrapReferenceInitList</a>(cv1T1, InitList);</div>
+<div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>     }</div>
+<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span> </div>
+<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>     <span class="comment">// Update the initializer if we've resolved an overloaded function.</span></div>
+<div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>     <span class="keywordflow">if</span> (Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#abbeec24e2d9b6588f83c3e0677163009">step_begin</a>() != Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ac35b2f994e9f8b64704df706fbd8f346">step_end</a>())</div>
+<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ac33f4326828166d2fcc0ff8c97f53d6a" title="Add steps to unwrap a initializer list for a reference around a single element and rewrap it at the e...">RewrapReferenceInitList</a>(cv1T1, InitList);</div>
+<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>   }</div>
+<div class="line"><a name="l03300"></a><span class="lineno"> 3300</span> </div>
+<div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>   <span class="comment">// Not reference-related. Create a temporary and bind to that.</span></div>
+<div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>   <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> TempEntity = <a class="code" href="classclang_1_1InitializedEntity.html#a4898b194ad60ddb5d0293dd57e730d3f" title="Create the initialization entity for a temporary.">InitializedEntity::InitializeTemporary</a>(cv1T1);</div>
+<div class="line"><a name="l03303"></a><span class="lineno"> 3303</span> </div>
+<div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>   <a class="code" href="SemaInit_8cpp.html#a73764aae33e1010dba9dd488317406d2" title="Attempt list initialization (C++0x [dcl.init.list])">TryListInitialization</a>(S, TempEntity, Kind, InitList, Sequence);</div>
+<div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>   <span class="keywordflow">if</span> (Sequence) {</div>
+<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>     <span class="keywordflow">if</span> (DestType-><a class="code" href="classclang_1_1Type.html#a5f92e15531a30a074167893767c51944">isRValueReferenceType</a>() ||</div>
+<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>         (T1Quals.<a class="code" href="classclang_1_1Qualifiers.html#aa4c1d746c952f79ff74dc3f3a88c21fa">hasConst</a>() && !T1Quals.<a class="code" href="classclang_1_1Qualifiers.html#acde218ec4de3ae41e2e9c9fc3b5e7c07">hasVolatile</a>()))</div>
+<div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#aeb7e3ad0c8fe0b594c63a4fc4fd54b72" title="Add a new step binding a reference to an object.">AddReferenceBindingStep</a>(cv1T1, <span class="comment">/*bindingTemporary=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(</div>
+<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>           <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a513434cb34ebc69703ac014f54a275e5" title="Non-const lvalue reference binding to a temporary.">InitializationSequence::FK_NonConstLValueReferenceBindingToTemporary</a>);</div>
+<div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>   }</div>
+<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span> }</div>
+<div class="line"><a name="l03314"></a><span class="lineno"> 3314</span> <span class="comment"></span></div>
+<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span> <span class="comment">/// \brief Attempt list initialization (C++0x [dcl.init.list])</span></div>
+<div class="line"><a name="l03316"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a73764aae33e1010dba9dd488317406d2"> 3316</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a73764aae33e1010dba9dd488317406d2" title="Attempt list initialization (C++0x [dcl.init.list])">TryListInitialization</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>                                   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *InitList,</div>
+<div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>                                   <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence) {</div>
+<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DestType = Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>();</div>
+<div class="line"><a name="l03322"></a><span class="lineno"> 3322</span> </div>
+<div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>   <span class="comment">// C++ doesn't allow scalar initialization with more than one argument.</span></div>
+<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>   <span class="comment">// But C99 complex numbers are scalars and it makes sense there.</span></div>
+<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus && DestType-><a class="code" href="classclang_1_1Type.html#a69765f6b95c14d64a9555ab8824dac61">isScalarType</a>() &&</div>
+<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>       !DestType-><a class="code" href="classclang_1_1Type.html#a292ac10726adf5426212b5c6ee14d9bb">isAnyComplexType</a>() && InitList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() > 1) {</div>
+<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6aa422504604ec6464d3c526e9687581bf" title="Too many initializers for scalar.">InitializationSequence::FK_TooManyInitsForScalar</a>);</div>
+<div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>   }</div>
+<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>   <span class="keywordflow">if</span> (DestType-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>     <a class="code" href="SemaInit_8cpp.html#aab53957f7db2f4277d04533033992ffb" title="Attempt list initialization of a reference.">TryReferenceListInitialization</a>(S, Entity, Kind, InitList, Sequence);</div>
+<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>   }</div>
+<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>   <span class="keywordflow">if</span> (DestType-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) {</div>
+<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>     <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(InitList-><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>(), DestType, 0)) {</div>
+<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#aa90890c3ab0bd025b5de5837195ffb5e" title="Note that this initialization sequence failed due to an incomplete type.">setIncompleteTypeFailure</a>(DestType);</div>
+<div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>     }</div>
+<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span> </div>
+<div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>     <span class="comment">// C++11 [dcl.init.list]p3:</span></div>
+<div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>     <span class="comment">//   - If T is an aggregate, aggregate initialization is performed.</span></div>
+<div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>     <span class="keywordflow">if</span> (!DestType-><a class="code" href="classclang_1_1Type.html#aadea9e62486670509201cda6f8bc1df4" title="Determines whether the type is a C++ aggregate type or C aggregate or union type.">isAggregateType</a>()) {</div>
+<div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>       <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus11) {</div>
+<div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>         <span class="comment">//   - Otherwise, if the initializer list has no elements and T is a</span></div>
+<div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>         <span class="comment">//     class type with a default constructor, the object is</span></div>
+<div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>         <span class="comment">//     value-initialized.</span></div>
+<div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>         <span class="keywordflow">if</span> (InitList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() == 0) {</div>
+<div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>           <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = DestType-><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="l03349"></a><span class="lineno"> 3349</span>           <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a6429ecb8fd76d229dd096dcac70882c4" title="Determine whether this class has any default constructors.">hasDefaultConstructor</a>()) {</div>
+<div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>             <a class="code" href="SemaInit_8cpp.html#a88176a5ec2539745a7cb67420e9fa0b5" title="Attempt value initialization (C++ [dcl.init]p7).">TryValueInitialization</a>(S, Entity, Kind, Sequence, InitList);</div>
+<div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>             <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>           }</div>
+<div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>         }</div>
+<div class="line"><a name="l03354"></a><span class="lineno"> 3354</span> </div>
+<div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>         <span class="comment">//   - Otherwise, if T is a specialization of std::initializer_list<E>,</span></div>
+<div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>         <span class="comment">//     an initializer_list object constructed [...]</span></div>
+<div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>         <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#a2ebc6dce62db06c4b2a4363e1b89d6ee" title="When initializing from init list via constructor, handle initialization of an object of type std::ini...">TryInitializerListConstruction</a>(S, InitList, DestType, Sequence))</div>
+<div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>           <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03359"></a><span class="lineno"> 3359</span> </div>
+<div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>         <span class="comment">//   - Otherwise, if T is a class type, constructors are considered.</span></div>
+<div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>         <a class="code" href="classclang_1_1Expr.html">Expr</a> *InitListAsExpr = InitList;</div>
+<div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>         <a class="code" href="SemaInit_8cpp.html#a5cf6000aab624ed20401360c4e03fbe8" title="Attempt initialization by constructor (C++ [dcl.init]), which enumerates the constructors of the init...">TryConstructorInitialization</a>(S, Entity, Kind, InitListAsExpr, DestType,</div>
+<div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>                                      Sequence, <span class="comment">/*InitListSyntax*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>       } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>         Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(</div>
+<div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>             <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a287349e5730c325969e607f43412f1aa" title="Initialization of some unused destination type with an initializer list.">InitializationSequence::FK_InitListBadDestinationType</a>);</div>
+<div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>     }</div>
+<div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>   }</div>
+<div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus && !DestType-><a class="code" href="classclang_1_1Type.html#aadea9e62486670509201cda6f8bc1df4" title="Determines whether the type is a C++ aggregate type or C aggregate or union type.">isAggregateType</a>() &&</div>
+<div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>       InitList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() == 1 &&</div>
+<div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>       InitList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(0)-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) {</div>
+<div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>     <span class="comment">//   - Otherwise, if the initializer list has a single element of type E</span></div>
+<div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>     <span class="comment">//     [...references are handled above...], the object or reference is</span></div>
+<div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>     <span class="comment">//     initialized from that element; if a narrowing conversion is required</span></div>
+<div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>     <span class="comment">//     to convert the element to T, the program is ill-formed.</span></div>
+<div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>     <span class="comment">// Per core-24034, this is direct-initialization if we were performing</span></div>
+<div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>     <span class="comment">// direct-list-initialization and copy-initialization otherwise.</span></div>
+<div class="line"><a name="l03380"></a><span class="lineno"> 3380</span>     <span class="comment">// We can't use InitListChecker for this, because it always performs</span></div>
+<div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>     <span class="comment">// copy-initialization. This only matters if we might use an 'explicit'</span></div>
+<div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>     <span class="comment">// conversion operator, so we only need to handle the cases where the source</span></div>
+<div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>     <span class="comment">// is of record type.</span></div>
+<div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>     <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> SubKind =</div>
+<div class="line"><a name="l03385"></a><span class="lineno"> 3385</span>         Kind.<a class="code" href="classclang_1_1InitializationKind.html#ac427022260d4ab6f2ef3b5f57a083076" title="Determine the initialization kind.">getKind</a>() == <a class="code" href="classclang_1_1InitializationKind.html#a15911670bbe7baf3eac6056ed6b66ac8a20b114ce062d310a9981d79fdbc0438a" title="Direct list-initialization.">InitializationKind::IK_DirectList</a></div>
+<div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>             ? <a class="code" href="classclang_1_1InitializationKind.html#a73fda22700f3b3b47f0d6dc72aee73d1" title="Create a direct initialization.">InitializationKind::CreateDirect</a>(Kind.<a class="code" href="classclang_1_1InitializationKind.html#a7a69dd5cd1cd248bb049b57244e7a20d" title="Retrieve the location at which initialization is occurring.">getLocation</a>(),</div>
+<div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>                                                InitList-><a class="code" href="classclang_1_1InitListExpr.html#add9c724b4aeefd087f4e01f1212cf922">getLBraceLoc</a>(),</div>
+<div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>                                                InitList-><a class="code" href="classclang_1_1InitListExpr.html#a4c8fe557e9b57b9dd9d7675a555a5513">getRBraceLoc</a>())</div>
+<div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>             : Kind;</div>
+<div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>     <a class="code" href="classclang_1_1Expr.html">Expr</a> *SubInit[1] = { InitList-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(0) };</div>
+<div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a05edc2fd85c8f9d2ba556e219b488e58">InitializeFrom</a>(S, Entity, SubKind, SubInit,</div>
+<div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>                             <span class="comment">/*TopLevelOfInitList*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>     <span class="keywordflow">if</span> (Sequence)</div>
+<div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ac33f4326828166d2fcc0ff8c97f53d6a" title="Add steps to unwrap a initializer list for a reference around a single element and rewrap it at the e...">RewrapReferenceInitList</a>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>(), InitList);</div>
+<div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>   }</div>
+<div class="line"><a name="l03397"></a><span class="lineno"> 3397</span> </div>
+<div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>   InitListChecker CheckInitList(S, Entity, InitList,</div>
+<div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>           DestType, <span class="comment">/*VerifyOnly=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>   <span class="keywordflow">if</span> (CheckInitList.HadError()) {</div>
+<div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6aa0e985dee812ab1af9abb4fa071a1898" title="List initialization failed at some point.">InitializationSequence::FK_ListInitializationFailed</a>);</div>
+<div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>   }</div>
+<div class="line"><a name="l03404"></a><span class="lineno"> 3404</span> </div>
+<div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>   <span class="comment">// Add the list initialization step with the built init list.</span></div>
+<div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>   Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a0428033dada48f13688be438f570fecd" title="Add a list-initialization step.">AddListInitializationStep</a>(DestType);</div>
+<div class="line"><a name="l03407"></a><span class="lineno"> 3407</span> }</div>
+<div class="line"><a name="l03408"></a><span class="lineno"> 3408</span> <span class="comment"></span></div>
+<div class="line"><a name="l03409"></a><span class="lineno"> 3409</span> <span class="comment">/// \brief Try a reference initialization that involves calling a conversion</span></div>
+<div class="line"><a name="l03410"></a><span class="lineno"> 3410</span> <span class="comment">/// function.</span></div>
+<div class="line"><a name="l03411"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a2fd912de27172df1a44657425bc67896"> 3411</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2">OverloadingResult</a> <a class="code" href="SemaInit_8cpp.html#a2fd912de27172df1a44657425bc67896" title="Try a reference initialization that involves calling a conversion function.">TryRefInitWithConversionFunction</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>                                              <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>                                              <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>                                              <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer,</div>
+<div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>                                              <span class="keywordtype">bool</span> AllowRValues,</div>
+<div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>                                              <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence) {</div>
+<div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DestType = Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>();</div>
+<div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> cv1T1 = DestType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ReferenceType.html">ReferenceType</a>>()->getPointeeType();</div>
+<div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T1 = cv1T1.<a class="code" href="classclang_1_1QualType.html#a5ddbce9d32b4f8043b641584599fe7e5" title="Retrieve the unqualified variant of the given type, removing as little sugar as possible.">getUnqualifiedType</a>();</div>
+<div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> cv2T2 = Initializer-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T2 = cv2T2.<a class="code" href="classclang_1_1QualType.html#a5ddbce9d32b4f8043b641584599fe7e5" title="Retrieve the unqualified variant of the given type, removing as little sugar as possible.">getUnqualifiedType</a>();</div>
+<div class="line"><a name="l03422"></a><span class="lineno"> 3422</span> </div>
+<div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>   <span class="keywordtype">bool</span> DerivedToBase;</div>
+<div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>   <span class="keywordtype">bool</span> ObjCConversion;</div>
+<div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>   <span class="keywordtype">bool</span> ObjCLifetimeConversion;</div>
+<div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>   assert(!S.<a class="code" href="classclang_1_1Sema.html#afa797b20cd9aaa5b332fd7faca01a7d8">CompareReferenceRelationship</a>(Initializer-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>                                          T1, T2, DerivedToBase,</div>
+<div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>                                          ObjCConversion,</div>
+<div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>                                          ObjCLifetimeConversion) &&</div>
+<div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>          <span class="stringliteral">"Must have incompatible references when binding via conversion"</span>);</div>
+<div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>   (void)DerivedToBase;</div>
+<div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>   (void)ObjCConversion;</div>
+<div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>   (void)ObjCLifetimeConversion;</div>
+<div class="line"><a name="l03434"></a><span class="lineno"> 3434</span>   </div>
+<div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>   <span class="comment">// Build the candidate set directly in the initialization sequence</span></div>
+<div class="line"><a name="l03436"></a><span class="lineno"> 3436</span>   <span class="comment">// structure, so that it will persist if we fail.</span></div>
+<div class="line"><a name="l03437"></a><span class="lineno"> 3437</span>   <a class="code" href="classclang_1_1OverloadCandidateSet.html">OverloadCandidateSet</a> &<a class="code" href="SemaOverload_8cpp.html#abc89d2b7943972f58bc9ca9737021197">CandidateSet</a> = Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#abb61b1c5e1208b7df98012b7c97280ff" title="Retrieve a reference to the candidate set when overload resolution fails.">getFailedCandidateSet</a>();</div>
+<div class="line"><a name="l03438"></a><span class="lineno"> 3438</span>   CandidateSet.<a class="code" href="classclang_1_1OverloadCandidateSet.html#a6f6c5929d473ed909051676ff098f71c" title="Clear out all of the candidates.">clear</a>();</div>
+<div class="line"><a name="l03439"></a><span class="lineno"> 3439</span> </div>
+<div class="line"><a name="l03440"></a><span class="lineno"> 3440</span>   <span class="comment">// Determine whether we are allowed to call explicit constructors or</span></div>
+<div class="line"><a name="l03441"></a><span class="lineno"> 3441</span>   <span class="comment">// explicit conversion operators.</span></div>
+<div class="line"><a name="l03442"></a><span class="lineno"> 3442</span>   <span class="keywordtype">bool</span> AllowExplicit = Kind.<a class="code" href="classclang_1_1InitializationKind.html#ab23e149dd729c4dbfe373ef308bd795e" title="Retrieve whether this initialization allows the use of explicit constructors.">AllowExplicit</a>();</div>
+<div class="line"><a name="l03443"></a><span class="lineno"> 3443</span>   <span class="keywordtype">bool</span> AllowExplicitConvs = Kind.<a class="code" href="classclang_1_1InitializationKind.html#a2d8999640314b9eba5442180fee26ff6" title="Retrieve whether this initialization allows the use of explicit conversion functions when binding a r...">allowExplicitConversionFunctionsInRefBinding</a>();</div>
+<div class="line"><a name="l03444"></a><span class="lineno"> 3444</span> </div>
+<div class="line"><a name="l03445"></a><span class="lineno"> 3445</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *T1RecordType = 0;</div>
+<div class="line"><a name="l03446"></a><span class="lineno"> 3446</span>   <span class="keywordflow">if</span> (AllowRValues && (T1RecordType = T1-><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="l03447"></a><span class="lineno"> 3447</span>       !S.<a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(Kind.<a class="code" href="classclang_1_1InitializationKind.html#a7a69dd5cd1cd248bb049b57244e7a20d" title="Retrieve the location at which initialization is occurring.">getLocation</a>(), T1, 0)) {</div>
+<div class="line"><a name="l03448"></a><span class="lineno"> 3448</span>     <span class="comment">// The type we're converting to is a class type. Enumerate its constructors</span></div>
+<div class="line"><a name="l03449"></a><span class="lineno"> 3449</span>     <span class="comment">// to see if there is a suitable conversion.</span></div>
+<div class="line"><a name="l03450"></a><span class="lineno"> 3450</span>     <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *T1RecordDecl = cast<CXXRecordDecl>(T1RecordType-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>());</div>
+<div class="line"><a name="l03451"></a><span class="lineno"> 3451</span> </div>
+<div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>     <a class="code" href="classclang_1_1DeclContext.html#ac25dc34eabe6c4e035c76dd3329e8530">DeclContext::lookup_result</a> R = S.<a class="code" href="classclang_1_1Sema.html#af6ed9855dadff52cd89e04be53ea94a3" title="Look up the constructors for the given class.">LookupConstructors</a>(T1RecordDecl);</div>
+<div class="line"><a name="l03453"></a><span class="lineno"> 3453</span>     <span class="comment">// The container holding the constructors can under certain conditions</span></div>
+<div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>     <span class="comment">// be changed while iterating (e.g. because of deserialization).</span></div>
+<div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>     <span class="comment">// To be safe we copy the lookup results to a new container.</span></div>
+<div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<NamedDecl*, 16></a> Ctors(R.begin(), R.end());</div>
+<div class="line"><a name="l03457"></a><span class="lineno"> 3457</span>     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<NamedDecl *>::iterator</a></div>
+<div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>            CI = Ctors.begin(), CE = Ctors.end(); CI != CE; ++CI) {</div>
+<div class="line"><a name="l03459"></a><span class="lineno"> 3459</span>       <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *D = *CI;</div>
+<div class="line"><a name="l03460"></a><span class="lineno"> 3460</span>       <a class="code" href="classclang_1_1DeclAccessPair.html">DeclAccessPair</a> FoundDecl = <a class="code" href="classclang_1_1DeclAccessPair.html#a40bf16940069615f789f599664048241">DeclAccessPair::make</a>(D, D-><a class="code" href="classclang_1_1Decl.html#a81e82461f69e9a50e129ef4bfac42987">getAccess</a>());</div>
+<div class="line"><a name="l03461"></a><span class="lineno"> 3461</span> </div>
+<div class="line"><a name="l03462"></a><span class="lineno"> 3462</span>       <span class="comment">// Find the constructor (which may be a template).</span></div>
+<div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>       <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *Constructor = 0;</div>
+<div class="line"><a name="l03464"></a><span class="lineno"> 3464</span>       <a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *ConstructorTmpl = dyn_cast<<a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a>>(D);</div>
+<div class="line"><a name="l03465"></a><span class="lineno"> 3465</span>       <span class="keywordflow">if</span> (ConstructorTmpl)</div>
+<div class="line"><a name="l03466"></a><span class="lineno"> 3466</span>         Constructor = cast<CXXConstructorDecl>(</div>
+<div class="line"><a name="l03467"></a><span class="lineno"> 3467</span>                                          ConstructorTmpl-><a class="code" href="classclang_1_1FunctionTemplateDecl.html#ad81ffc46ec5f0ff58641b23a787c55e5" title="Get the underlying function declaration of the template.">getTemplatedDecl</a>());</div>
+<div class="line"><a name="l03468"></a><span class="lineno"> 3468</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03469"></a><span class="lineno"> 3469</span>         Constructor = cast<CXXConstructorDecl>(D);</div>
+<div class="line"><a name="l03470"></a><span class="lineno"> 3470</span> </div>
+<div class="line"><a name="l03471"></a><span class="lineno"> 3471</span>       <span class="keywordflow">if</span> (!Constructor->isInvalidDecl() &&</div>
+<div class="line"><a name="l03472"></a><span class="lineno"> 3472</span>           Constructor->isConvertingConstructor(AllowExplicit)) {</div>
+<div class="line"><a name="l03473"></a><span class="lineno"> 3473</span>         <span class="keywordflow">if</span> (ConstructorTmpl)</div>
+<div class="line"><a name="l03474"></a><span class="lineno"> 3474</span>           S.<a class="code" href="classclang_1_1Sema.html#a6ffe5bc5b099f86017db0ce416fb64dd" title="Add a C++ function template specialization as a candidate in the candidate set, using template argume...">AddTemplateOverloadCandidate</a>(ConstructorTmpl, FoundDecl,</div>
+<div class="line"><a name="l03475"></a><span class="lineno"> 3475</span>                                          <span class="comment">/*ExplicitArgs*/</span> 0,</div>
+<div class="line"><a name="l03476"></a><span class="lineno"> 3476</span>                                          Initializer, CandidateSet,</div>
+<div class="line"><a name="l03477"></a><span class="lineno"> 3477</span>                                          <span class="comment">/*SuppressUserConversions=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l03478"></a><span class="lineno"> 3478</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03479"></a><span class="lineno"> 3479</span>           S.<a class="code" href="classclang_1_1Sema.html#a2a561b311be40457703ba2c78768c0ee">AddOverloadCandidate</a>(Constructor, FoundDecl,</div>
+<div class="line"><a name="l03480"></a><span class="lineno"> 3480</span>                                  Initializer, CandidateSet,</div>
+<div class="line"><a name="l03481"></a><span class="lineno"> 3481</span>                                  <span class="comment">/*SuppressUserConversions=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l03482"></a><span class="lineno"> 3482</span>       }</div>
+<div class="line"><a name="l03483"></a><span class="lineno"> 3483</span>     }</div>
+<div class="line"><a name="l03484"></a><span class="lineno"> 3484</span>   }</div>
+<div class="line"><a name="l03485"></a><span class="lineno"> 3485</span>   <span class="keywordflow">if</span> (T1RecordType && T1RecordType-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>()-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>())</div>
+<div class="line"><a name="l03486"></a><span class="lineno"> 3486</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2aec527dfc3dfd4f09e60bec8a2de45b14" title="No viable function found.">OR_No_Viable_Function</a>;</div>
+<div class="line"><a name="l03487"></a><span class="lineno"> 3487</span> </div>
+<div class="line"><a name="l03488"></a><span class="lineno"> 3488</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *T2RecordType = 0;</div>
+<div class="line"><a name="l03489"></a><span class="lineno"> 3489</span>   <span class="keywordflow">if</span> ((T2RecordType = T2-><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="l03490"></a><span class="lineno"> 3490</span>       !S.<a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(Kind.<a class="code" href="classclang_1_1InitializationKind.html#a7a69dd5cd1cd248bb049b57244e7a20d" title="Retrieve the location at which initialization is occurring.">getLocation</a>(), T2, 0)) {</div>
+<div class="line"><a name="l03491"></a><span class="lineno"> 3491</span>     <span class="comment">// The type we're converting from is a class type, enumerate its conversion</span></div>
+<div class="line"><a name="l03492"></a><span class="lineno"> 3492</span>     <span class="comment">// functions.</span></div>
+<div class="line"><a name="l03493"></a><span class="lineno"> 3493</span>     <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *T2RecordDecl = cast<CXXRecordDecl>(T2RecordType-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>());</div>
+<div class="line"><a name="l03494"></a><span class="lineno"> 3494</span> </div>
+<div class="line"><a name="l03495"></a><span class="lineno"> 3495</span>     std::pair<<a class="code" href="classclang_1_1CXXRecordDecl.html#a17223594351434d1c96fbacfb8907b08">CXXRecordDecl::conversion_iterator</a>,</div>
+<div class="line"><a name="l03496"></a><span class="lineno"> 3496</span>               CXXRecordDecl::conversion_iterator></div>
+<div class="line"><a name="l03497"></a><span class="lineno"> 3497</span>       Conversions = T2RecordDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#ac27f1f70a41c93a5b10a28a9989cc2ab" title="Get all conversion functions visible in current class, including conversion function templates...">getVisibleConversionFunctions</a>();</div>
+<div class="line"><a name="l03498"></a><span class="lineno"> 3498</span>     <span class="keywordflow">for</span> (CXXRecordDecl::conversion_iterator</div>
+<div class="line"><a name="l03499"></a><span class="lineno"> 3499</span>            I = Conversions.first, E = Conversions.second; I != E; ++I) {</div>
+<div class="line"><a name="l03500"></a><span class="lineno"> 3500</span>       <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *D = *I;</div>
+<div class="line"><a name="l03501"></a><span class="lineno"> 3501</span>       <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ActingDC = cast<CXXRecordDecl>(D-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>());</div>
+<div class="line"><a name="l03502"></a><span class="lineno"> 3502</span>       <span class="keywordflow">if</span> (isa<UsingShadowDecl>(D))</div>
+<div class="line"><a name="l03503"></a><span class="lineno"> 3503</span>         D = cast<UsingShadowDecl>(D)->getTargetDecl();</div>
+<div class="line"><a name="l03504"></a><span class="lineno"> 3504</span> </div>
+<div class="line"><a name="l03505"></a><span class="lineno"> 3505</span>       <a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *ConvTemplate = dyn_cast<<a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a>>(D);</div>
+<div class="line"><a name="l03506"></a><span class="lineno"> 3506</span>       <a class="code" href="classclang_1_1CXXConversionDecl.html" title="Represents a C++ conversion function within a class.">CXXConversionDecl</a> *Conv;</div>
+<div class="line"><a name="l03507"></a><span class="lineno"> 3507</span>       <span class="keywordflow">if</span> (ConvTemplate)</div>
+<div class="line"><a name="l03508"></a><span class="lineno"> 3508</span>         Conv = cast<CXXConversionDecl>(ConvTemplate-><a class="code" href="classclang_1_1FunctionTemplateDecl.html#ad81ffc46ec5f0ff58641b23a787c55e5" title="Get the underlying function declaration of the template.">getTemplatedDecl</a>());</div>
+<div class="line"><a name="l03509"></a><span class="lineno"> 3509</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03510"></a><span class="lineno"> 3510</span>         Conv = cast<CXXConversionDecl>(D);</div>
+<div class="line"><a name="l03511"></a><span class="lineno"> 3511</span> </div>
+<div class="line"><a name="l03512"></a><span class="lineno"> 3512</span>       <span class="comment">// If the conversion function doesn't return a reference type,</span></div>
+<div class="line"><a name="l03513"></a><span class="lineno"> 3513</span>       <span class="comment">// it can't be considered for this conversion unless we're allowed to</span></div>
+<div class="line"><a name="l03514"></a><span class="lineno"> 3514</span>       <span class="comment">// consider rvalues.</span></div>
+<div class="line"><a name="l03515"></a><span class="lineno"> 3515</span>       <span class="comment">// FIXME: Do we need to make sure that we only consider conversion</span></div>
+<div class="line"><a name="l03516"></a><span class="lineno"> 3516</span>       <span class="comment">// candidates with reference-compatible results? That might be needed to</span></div>
+<div class="line"><a name="l03517"></a><span class="lineno"> 3517</span>       <span class="comment">// break recursion.</span></div>
+<div class="line"><a name="l03518"></a><span class="lineno"> 3518</span>       <span class="keywordflow">if</span> ((AllowExplicitConvs || !Conv->isExplicit()) &&</div>
+<div class="line"><a name="l03519"></a><span class="lineno"> 3519</span>           (AllowRValues || Conv->getConversionType()->isLValueReferenceType())){</div>
+<div class="line"><a name="l03520"></a><span class="lineno"> 3520</span>         <span class="keywordflow">if</span> (ConvTemplate)</div>
+<div class="line"><a name="l03521"></a><span class="lineno"> 3521</span>           S.<a class="code" href="classclang_1_1Sema.html#a7bb42b4f84b13f1df6027cb663408399" title="Adds a conversion function template specialization candidate to the overload set, using template argu...">AddTemplateConversionCandidate</a>(ConvTemplate, I.getPair(),</div>
+<div class="line"><a name="l03522"></a><span class="lineno"> 3522</span>                                            ActingDC, Initializer,</div>
+<div class="line"><a name="l03523"></a><span class="lineno"> 3523</span>                                            DestType, <a class="code" href="SemaOverload_8cpp.html#abc89d2b7943972f58bc9ca9737021197">CandidateSet</a>);</div>
+<div class="line"><a name="l03524"></a><span class="lineno"> 3524</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03525"></a><span class="lineno"> 3525</span>           S.<a class="code" href="classclang_1_1Sema.html#af01d37f7cefc109ccbc083eaa797e927">AddConversionCandidate</a>(Conv, I.getPair(), ActingDC,</div>
+<div class="line"><a name="l03526"></a><span class="lineno"> 3526</span>                                    Initializer, DestType, <a class="code" href="SemaOverload_8cpp.html#abc89d2b7943972f58bc9ca9737021197">CandidateSet</a>);</div>
+<div class="line"><a name="l03527"></a><span class="lineno"> 3527</span>       }</div>
+<div class="line"><a name="l03528"></a><span class="lineno"> 3528</span>     }</div>
+<div class="line"><a name="l03529"></a><span class="lineno"> 3529</span>   }</div>
+<div class="line"><a name="l03530"></a><span class="lineno"> 3530</span>   <span class="keywordflow">if</span> (T2RecordType && T2RecordType-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>()-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>())</div>
+<div class="line"><a name="l03531"></a><span class="lineno"> 3531</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2aec527dfc3dfd4f09e60bec8a2de45b14" title="No viable function found.">OR_No_Viable_Function</a>;</div>
+<div class="line"><a name="l03532"></a><span class="lineno"> 3532</span> </div>
+<div class="line"><a name="l03533"></a><span class="lineno"> 3533</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> DeclLoc = Initializer-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l03534"></a><span class="lineno"> 3534</span> </div>
+<div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>   <span class="comment">// Perform overload resolution. If it fails, return the failed result.</span></div>
+<div class="line"><a name="l03536"></a><span class="lineno"> 3536</span>   <a class="code" href="classclang_1_1OverloadCandidateSet.html#abe5a94cc940d49a8f336131a22c41600">OverloadCandidateSet::iterator</a> Best;</div>
+<div class="line"><a name="l03537"></a><span class="lineno"> 3537</span>   <span class="keywordflow">if</span> (<a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2">OverloadingResult</a> Result</div>
+<div class="line"><a name="l03538"></a><span class="lineno"> 3538</span>         = CandidateSet.<a class="code" href="classclang_1_1OverloadCandidateSet.html#a163568829049a9d0a0ed4596049b8360" title="Find the best viable function on this overload set, if it exists.">BestViableFunction</a>(S, DeclLoc, Best, <span class="keyword">true</span>))</div>
+<div class="line"><a name="l03539"></a><span class="lineno"> 3539</span>     <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l03540"></a><span class="lineno"> 3540</span> </div>
+<div class="line"><a name="l03541"></a><span class="lineno"> 3541</span>   <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *Function = Best->Function;</div>
+<div class="line"><a name="l03542"></a><span class="lineno"> 3542</span>   <span class="comment">// This is the overload that will be used for this initialization step if we</span></div>
+<div class="line"><a name="l03543"></a><span class="lineno"> 3543</span>   <span class="comment">// use this initialization. Mark it as referenced.</span></div>
+<div class="line"><a name="l03544"></a><span class="lineno"> 3544</span>   Function-><a class="code" href="classclang_1_1Decl.html#aa8edfe1810cd86e605a11febe018f5dd">setReferenced</a>();</div>
+<div class="line"><a name="l03545"></a><span class="lineno"> 3545</span> </div>
+<div class="line"><a name="l03546"></a><span class="lineno"> 3546</span>   <span class="comment">// Compute the returned type of the conversion.</span></div>
+<div class="line"><a name="l03547"></a><span class="lineno"> 3547</span>   <span class="keywordflow">if</span> (isa<CXXConversionDecl>(Function))</div>
+<div class="line"><a name="l03548"></a><span class="lineno"> 3548</span>     T2 = Function-><a class="code" href="classclang_1_1FunctionDecl.html#a2a4fd00240b9b7552c4d2fbc90c71528">getResultType</a>();</div>
+<div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03550"></a><span class="lineno"> 3550</span>     T2 = cv1T1;</div>
+<div class="line"><a name="l03551"></a><span class="lineno"> 3551</span> </div>
+<div class="line"><a name="l03552"></a><span class="lineno"> 3552</span>   <span class="comment">// Add the user-defined conversion step.</span></div>
+<div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>   <span class="keywordtype">bool</span> HadMultipleCandidates = (CandidateSet.<a class="code" href="classclang_1_1OverloadCandidateSet.html#a5e58a204135f45d54ee0361b7d8b47da">size</a>() > 1);</div>
+<div class="line"><a name="l03554"></a><span class="lineno"> 3554</span>   Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a3667a1b611fd2acfc6d8b772f91fa506" title="Add a new step invoking a conversion function, which is either a constructor or a conversion function...">AddUserConversionStep</a>(Function, Best->FoundDecl,</div>
+<div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>                                  T2.getNonLValueExprType(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>),</div>
+<div class="line"><a name="l03556"></a><span class="lineno"> 3556</span>                                  HadMultipleCandidates);</div>
+<div class="line"><a name="l03557"></a><span class="lineno"> 3557</span> </div>
+<div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>   <span class="comment">// Determine whether we need to perform derived-to-base or</span></div>
+<div class="line"><a name="l03559"></a><span class="lineno"> 3559</span>   <span class="comment">// cv-qualification adjustments.</span></div>
+<div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>   <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK = <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>;</div>
+<div class="line"><a name="l03561"></a><span class="lineno"> 3561</span>   <span class="keywordflow">if</span> (T2->isLValueReferenceType())</div>
+<div class="line"><a name="l03562"></a><span class="lineno"> 3562</span>     VK = <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a>;</div>
+<div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RValueReferenceType.html">RValueReferenceType</a> *RRef = T2-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RValueReferenceType.html">RValueReferenceType</a>>())</div>
+<div class="line"><a name="l03564"></a><span class="lineno"> 3564</span>     VK = RRef->getPointeeType()->isFunctionType() ? <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a> : <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a63fc11bfcee4743c02b72657c1adcf27" title="An x-value expression is a reference to an object with independent storage but which can be "moved"...">VK_XValue</a>;</div>
+<div class="line"><a name="l03565"></a><span class="lineno"> 3565</span> </div>
+<div class="line"><a name="l03566"></a><span class="lineno"> 3566</span>   <span class="keywordtype">bool</span> NewDerivedToBase = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03567"></a><span class="lineno"> 3567</span>   <span class="keywordtype">bool</span> NewObjCConversion = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03568"></a><span class="lineno"> 3568</span>   <span class="keywordtype">bool</span> NewObjCLifetimeConversion = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03569"></a><span class="lineno"> 3569</span>   <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5">Sema::ReferenceCompareResult</a> NewRefRelationship</div>
+<div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>     = S.<a class="code" href="classclang_1_1Sema.html#afa797b20cd9aaa5b332fd7faca01a7d8">CompareReferenceRelationship</a>(DeclLoc, T1,</div>
+<div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>                                      T2.<a class="code" href="classclang_1_1QualType.html#a89e3ea65c009b7a0ea76edc56076107c" title="Determine the type of a (typically non-lvalue) expression with the specified result type...">getNonLValueExprType</a>(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>),</div>
+<div class="line"><a name="l03572"></a><span class="lineno"> 3572</span>                                      NewDerivedToBase, NewObjCConversion,</div>
+<div class="line"><a name="l03573"></a><span class="lineno"> 3573</span>                                      NewObjCLifetimeConversion);</div>
+<div class="line"><a name="l03574"></a><span class="lineno"> 3574</span>   <span class="keywordflow">if</span> (NewRefRelationship == <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5a2edcdce31c979ee2b02e6598a7d1a83e">Sema::Ref_Incompatible</a>) {</div>
+<div class="line"><a name="l03575"></a><span class="lineno"> 3575</span>     <span class="comment">// If the type we've converted to is not reference-related to the</span></div>
+<div class="line"><a name="l03576"></a><span class="lineno"> 3576</span>     <span class="comment">// type we're looking for, then there is another conversion step</span></div>
+<div class="line"><a name="l03577"></a><span class="lineno"> 3577</span>     <span class="comment">// we need to perform to produce a temporary of the right type</span></div>
+<div class="line"><a name="l03578"></a><span class="lineno"> 3578</span>     <span class="comment">// that we'll be binding to.</span></div>
+<div class="line"><a name="l03579"></a><span class="lineno"> 3579</span>     <a class="code" href="classclang_1_1ImplicitConversionSequence.html">ImplicitConversionSequence</a> ICS;</div>
+<div class="line"><a name="l03580"></a><span class="lineno"> 3580</span>     ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4daa2a30752a19f36dfafe64d0794f03">setStandard</a>();</div>
+<div class="line"><a name="l03581"></a><span class="lineno"> 3581</span>     ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a> = Best->FinalConversion;</div>
+<div class="line"><a name="l03582"></a><span class="lineno"> 3582</span>     T2 = ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#a0b69a829ad61e8b5e5cc79f3bac07870">getToType</a>(2);</div>
+<div class="line"><a name="l03583"></a><span class="lineno"> 3583</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ad2bdc93c890e75998e73fcbf5e538035" title="Add a new step that applies an implicit conversion sequence.">AddConversionSequenceStep</a>(ICS, T2);</div>
+<div class="line"><a name="l03584"></a><span class="lineno"> 3584</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (NewDerivedToBase)</div>
+<div class="line"><a name="l03585"></a><span class="lineno"> 3585</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a60a8de5b80d7d4fd7c9f2a219d88a8e5" title="Add a new step in the initialization that performs a derived-to- base cast.">AddDerivedToBaseCastStep</a>(</div>
+<div class="line"><a name="l03586"></a><span class="lineno"> 3586</span>                                 S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a1995e62dee79876059ef940d76a38983" title="Un-split a SplitQualType.">getQualifiedType</a>(T1,</div>
+<div class="line"><a name="l03587"></a><span class="lineno"> 3587</span>                                   T2.<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>().<a class="code" href="classclang_1_1QualType.html#a4a3d75cf019a2e769498ef8d6878888b" title="Retrieve the set of qualifiers applied to this type.">getQualifiers</a>()),</div>
+<div class="line"><a name="l03588"></a><span class="lineno"> 3588</span>                                       VK);</div>
+<div class="line"><a name="l03589"></a><span class="lineno"> 3589</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (NewObjCConversion)</div>
+<div class="line"><a name="l03590"></a><span class="lineno"> 3590</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a89b1e16440d138dfb6c471da35fdbe71" title="Add an Objective-C object conversion step, which is always a no-op.">AddObjCObjectConversionStep</a>(</div>
+<div class="line"><a name="l03591"></a><span class="lineno"> 3591</span>                                 S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a1995e62dee79876059ef940d76a38983" title="Un-split a SplitQualType.">getQualifiedType</a>(T1,</div>
+<div class="line"><a name="l03592"></a><span class="lineno"> 3592</span>                                   T2.<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>().<a class="code" href="classclang_1_1QualType.html#a4a3d75cf019a2e769498ef8d6878888b" title="Retrieve the set of qualifiers applied to this type.">getQualifiers</a>()));</div>
+<div class="line"><a name="l03593"></a><span class="lineno"> 3593</span> </div>
+<div class="line"><a name="l03594"></a><span class="lineno"> 3594</span>   <span class="keywordflow">if</span> (cv1T1.<a class="code" href="classclang_1_1QualType.html#a4a3d75cf019a2e769498ef8d6878888b" title="Retrieve the set of qualifiers applied to this type.">getQualifiers</a>() != T2.getNonReferenceType().getQualifiers())</div>
+<div class="line"><a name="l03595"></a><span class="lineno"> 3595</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a5a1460329798da6afbb4773556cdbf2c" title="Add a new step that performs a qualification conversion to the given type.">AddQualificationConversionStep</a>(cv1T1, VK);</div>
+<div class="line"><a name="l03596"></a><span class="lineno"> 3596</span> </div>
+<div class="line"><a name="l03597"></a><span class="lineno"> 3597</span>   Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#aeb7e3ad0c8fe0b594c63a4fc4fd54b72" title="Add a new step binding a reference to an object.">AddReferenceBindingStep</a>(cv1T1, !T2-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>());</div>
+<div class="line"><a name="l03598"></a><span class="lineno"> 3598</span>   <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2aa70d45cfee2580edd6c2364b4e8d3d0d" title="Overload resolution succeeded.">OR_Success</a>;</div>
+<div class="line"><a name="l03599"></a><span class="lineno"> 3599</span> }</div>
+<div class="line"><a name="l03600"></a><span class="lineno"> 3600</span> </div>
+<div class="line"><a name="l03601"></a><span class="lineno"> 3601</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a4836ec4a6fc48413ab9ca51b0fb709d0" title="Check whether elidable copy construction for binding a reference to a temporary would have succeeded ...">CheckCXX98CompatAccessibleCopy</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l03603"></a><span class="lineno"> 3603</span>                                            <a class="code" href="classclang_1_1Expr.html">Expr</a> *CurInitExpr);</div>
+<div class="line"><a name="l03604"></a><span class="lineno"> 3604</span> <span class="comment"></span></div>
+<div class="line"><a name="l03605"></a><span class="lineno"> 3605</span> <span class="comment">/// \brief Attempt reference initialization (C++0x [dcl.init.ref])</span></div>
+<div class="line"><a name="l03606"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a39a122b74d97da23908a25798ab46114"> 3606</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a39a122b74d97da23908a25798ab46114" title="Attempt reference initialization (C++0x [dcl.init.ref])">TryReferenceInitialization</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03607"></a><span class="lineno"> 3607</span>                                        <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l03608"></a><span class="lineno"> 3608</span>                                        <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l03609"></a><span class="lineno"> 3609</span>                                        <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer,</div>
+<div class="line"><a name="l03610"></a><span class="lineno"> 3610</span>                                        <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence) {</div>
+<div class="line"><a name="l03611"></a><span class="lineno"> 3611</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DestType = Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>();</div>
+<div class="line"><a name="l03612"></a><span class="lineno"> 3612</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> cv1T1 = DestType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ReferenceType.html">ReferenceType</a>>()->getPointeeType();</div>
+<div class="line"><a name="l03613"></a><span class="lineno"> 3613</span>   <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> T1Quals;</div>
+<div class="line"><a name="l03614"></a><span class="lineno"> 3614</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T1 = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a9205b0a93f2d9840c12d2bc3a69967de" title="Return this type as a completely-unqualified array type, capturing the qualifiers in Quals...">getUnqualifiedArrayType</a>(cv1T1, T1Quals);</div>
+<div class="line"><a name="l03615"></a><span class="lineno"> 3615</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> cv2T2 = Initializer-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l03616"></a><span class="lineno"> 3616</span>   <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> T2Quals;</div>
+<div class="line"><a name="l03617"></a><span class="lineno"> 3617</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T2 = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a9205b0a93f2d9840c12d2bc3a69967de" title="Return this type as a completely-unqualified array type, capturing the qualifiers in Quals...">getUnqualifiedArrayType</a>(cv2T2, T2Quals);</div>
+<div class="line"><a name="l03618"></a><span class="lineno"> 3618</span> </div>
+<div class="line"><a name="l03619"></a><span class="lineno"> 3619</span>   <span class="comment">// If the initializer is the address of an overloaded function, try</span></div>
+<div class="line"><a name="l03620"></a><span class="lineno"> 3620</span>   <span class="comment">// to resolve the overloaded function. If all goes well, T2 is the</span></div>
+<div class="line"><a name="l03621"></a><span class="lineno"> 3621</span>   <span class="comment">// type of the resulting function.</span></div>
+<div class="line"><a name="l03622"></a><span class="lineno"> 3622</span>   <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#ae57305017a6782911f34c0bbe1a6c31d">ResolveOverloadedFunctionForReferenceBinding</a>(S, Initializer, cv2T2, T2,</div>
+<div class="line"><a name="l03623"></a><span class="lineno"> 3623</span>                                                    T1, Sequence))</div>
+<div class="line"><a name="l03624"></a><span class="lineno"> 3624</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03625"></a><span class="lineno"> 3625</span> </div>
+<div class="line"><a name="l03626"></a><span class="lineno"> 3626</span>   <span class="comment">// Delegate everything else to a subfunction.</span></div>
+<div class="line"><a name="l03627"></a><span class="lineno"> 3627</span>   <a class="code" href="SemaInit_8cpp.html#a97f41649f3e99c3db40941d9fa6848b8" title="Reference initialization without resolving overloaded functions.">TryReferenceInitializationCore</a>(S, Entity, Kind, Initializer, cv1T1, T1,</div>
+<div class="line"><a name="l03628"></a><span class="lineno"> 3628</span>                                  T1Quals, cv2T2, T2, T2Quals, Sequence);</div>
+<div class="line"><a name="l03629"></a><span class="lineno"> 3629</span> }</div>
+<div class="line"><a name="l03630"></a><span class="lineno"> 3630</span> <span class="comment"></span></div>
+<div class="line"><a name="l03631"></a><span class="lineno"> 3631</span> <span class="comment">/// Converts the target of reference initialization so that it has the</span></div>
+<div class="line"><a name="l03632"></a><span class="lineno"> 3632</span> <span class="comment">/// appropriate qualifiers and value kind.</span></div>
+<div class="line"><a name="l03633"></a><span class="lineno"> 3633</span> <span class="comment">///</span></div>
+<div class="line"><a name="l03634"></a><span class="lineno"> 3634</span> <span class="comment">/// In this case, 'x' is an 'int' lvalue, but it needs to be 'const int'.</span></div>
+<div class="line"><a name="l03635"></a><span class="lineno"> 3635</span> <span class="comment">/// \code</span></div>
+<div class="line"><a name="l03636"></a><span class="lineno"> 3636</span> <span class="comment">///   int x;</span></div>
+<div class="line"><a name="l03637"></a><span class="lineno"> 3637</span> <span class="comment">///   const int &r = x;</span></div>
+<div class="line"><a name="l03638"></a><span class="lineno"> 3638</span> <span class="comment">/// \endcode</span></div>
+<div class="line"><a name="l03639"></a><span class="lineno"> 3639</span> <span class="comment">///</span></div>
+<div class="line"><a name="l03640"></a><span class="lineno"> 3640</span> <span class="comment">/// In this case the reference is binding to a bitfield lvalue, which isn't</span></div>
+<div class="line"><a name="l03641"></a><span class="lineno"> 3641</span> <span class="comment">/// valid. Perform a load to create a lifetime-extended temporary instead.</span></div>
+<div class="line"><a name="l03642"></a><span class="lineno"> 3642</span> <span class="comment">/// \code</span></div>
+<div class="line"><a name="l03643"></a><span class="lineno"> 3643</span> <span class="comment">///   const int &r = someStruct.bitfield;</span></div>
+<div class="line"><a name="l03644"></a><span class="lineno"> 3644</span> <span class="comment">/// \endcode</span></div>
+<div class="line"><a name="l03645"></a><span class="lineno"> 3645</span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a></div>
+<div class="line"><a name="l03646"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a04539caec9ecbf255cb8811ff57aecd3"> 3646</a></span> <a class="code" href="SemaInit_8cpp.html#a04539caec9ecbf255cb8811ff57aecd3">convertQualifiersAndValueKindIfNecessary</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03647"></a><span class="lineno"> 3647</span>                                          <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence,</div>
+<div class="line"><a name="l03648"></a><span class="lineno"> 3648</span>                                          <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer,</div>
+<div class="line"><a name="l03649"></a><span class="lineno"> 3649</span>                                          <a class="code" href="classclang_1_1QualType.html">QualType</a> cv1T1,</div>
+<div class="line"><a name="l03650"></a><span class="lineno"> 3650</span>                                          <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> T1Quals,</div>
+<div class="line"><a name="l03651"></a><span class="lineno"> 3651</span>                                          <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> T2Quals,</div>
+<div class="line"><a name="l03652"></a><span class="lineno"> 3652</span>                                          <span class="keywordtype">bool</span> IsLValueRef) {</div>
+<div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>   <span class="keywordtype">bool</span> IsNonAddressableType = Initializer-><a class="code" href="classclang_1_1Expr.html#a59de31b13a5f2e4f345a970035656b44" title="Returns true if this expression is a gl-value that potentially refers to a bit-field.">refersToBitField</a>() ||</div>
+<div class="line"><a name="l03654"></a><span class="lineno"> 3654</span>                               Initializer-><a class="code" href="classclang_1_1Expr.html#a5a7264c21e63624f6438ee1a377abb4f" title="Returns whether this expression refers to a vector element.">refersToVectorElement</a>();</div>
+<div class="line"><a name="l03655"></a><span class="lineno"> 3655</span> </div>
+<div class="line"><a name="l03656"></a><span class="lineno"> 3656</span>   <span class="keywordflow">if</span> (IsNonAddressableType) {</div>
+<div class="line"><a name="l03657"></a><span class="lineno"> 3657</span>     <span class="comment">// C++11 [dcl.init.ref]p5: [...] Otherwise, the reference shall be an</span></div>
+<div class="line"><a name="l03658"></a><span class="lineno"> 3658</span>     <span class="comment">// lvalue reference to a non-volatile const type, or the reference shall be</span></div>
+<div class="line"><a name="l03659"></a><span class="lineno"> 3659</span>     <span class="comment">// an rvalue reference.</span></div>
+<div class="line"><a name="l03660"></a><span class="lineno"> 3660</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l03661"></a><span class="lineno"> 3661</span>     <span class="comment">// If not, we can't make a temporary and bind to that. Give up and allow the</span></div>
+<div class="line"><a name="l03662"></a><span class="lineno"> 3662</span>     <span class="comment">// error to be diagnosed later.</span></div>
+<div class="line"><a name="l03663"></a><span class="lineno"> 3663</span>     <span class="keywordflow">if</span> (IsLValueRef && (!T1Quals.<a class="code" href="classclang_1_1Qualifiers.html#aa4c1d746c952f79ff74dc3f3a88c21fa">hasConst</a>() || T1Quals.<a class="code" href="classclang_1_1Qualifiers.html#acde218ec4de3ae41e2e9c9fc3b5e7c07">hasVolatile</a>())) {</div>
+<div class="line"><a name="l03664"></a><span class="lineno"> 3664</span>       assert(Initializer-><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>());</div>
+<div class="line"><a name="l03665"></a><span class="lineno"> 3665</span>       <span class="keywordflow">return</span> Initializer-><a class="code" href="classclang_1_1Expr.html#aacbe243ee99ac093e4eba5e40d6a9edb" title="getValueKind - The value kind that this expression produces.">getValueKind</a>();</div>
+<div class="line"><a name="l03666"></a><span class="lineno"> 3666</span>     }</div>
+<div class="line"><a name="l03667"></a><span class="lineno"> 3667</span> </div>
+<div class="line"><a name="l03668"></a><span class="lineno"> 3668</span>     <span class="comment">// Force a load so we can materialize a temporary.</span></div>
+<div class="line"><a name="l03669"></a><span class="lineno"> 3669</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ad279d75c0c041e5d730f63f806086054" title="Add a new step that performs a load of the given type.">AddLValueToRValueStep</a>(cv1T1.<a class="code" href="classclang_1_1QualType.html#a5ddbce9d32b4f8043b641584599fe7e5" title="Retrieve the unqualified variant of the given type, removing as little sugar as possible.">getUnqualifiedType</a>());</div>
+<div class="line"><a name="l03670"></a><span class="lineno"> 3670</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>;</div>
+<div class="line"><a name="l03671"></a><span class="lineno"> 3671</span>   }</div>
+<div class="line"><a name="l03672"></a><span class="lineno"> 3672</span> </div>
+<div class="line"><a name="l03673"></a><span class="lineno"> 3673</span>   <span class="keywordflow">if</span> (T1Quals != T2Quals) {</div>
+<div class="line"><a name="l03674"></a><span class="lineno"> 3674</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a5a1460329798da6afbb4773556cdbf2c" title="Add a new step that performs a qualification conversion to the given type.">AddQualificationConversionStep</a>(cv1T1,</div>
+<div class="line"><a name="l03675"></a><span class="lineno"> 3675</span>                                             Initializer-><a class="code" href="classclang_1_1Expr.html#aacbe243ee99ac093e4eba5e40d6a9edb" title="getValueKind - The value kind that this expression produces.">getValueKind</a>());</div>
+<div class="line"><a name="l03676"></a><span class="lineno"> 3676</span>   }</div>
+<div class="line"><a name="l03677"></a><span class="lineno"> 3677</span> </div>
+<div class="line"><a name="l03678"></a><span class="lineno"> 3678</span>   <span class="keywordflow">return</span> Initializer-><a class="code" href="classclang_1_1Expr.html#aacbe243ee99ac093e4eba5e40d6a9edb" title="getValueKind - The value kind that this expression produces.">getValueKind</a>();</div>
+<div class="line"><a name="l03679"></a><span class="lineno"> 3679</span> }</div>
+<div class="line"><a name="l03680"></a><span class="lineno"> 3680</span> </div>
+<div class="line"><a name="l03681"></a><span class="lineno"> 3681</span> <span class="comment"></span></div>
+<div class="line"><a name="l03682"></a><span class="lineno"> 3682</span> <span class="comment">/// \brief Reference initialization without resolving overloaded functions.</span></div>
+<div class="line"><a name="l03683"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a97f41649f3e99c3db40941d9fa6848b8"> 3683</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a97f41649f3e99c3db40941d9fa6848b8" title="Reference initialization without resolving overloaded functions.">TryReferenceInitializationCore</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03684"></a><span class="lineno"> 3684</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l03685"></a><span class="lineno"> 3685</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l03686"></a><span class="lineno"> 3686</span>                                            <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer,</div>
+<div class="line"><a name="l03687"></a><span class="lineno"> 3687</span>                                            <a class="code" href="classclang_1_1QualType.html">QualType</a> cv1T1, <a class="code" href="classclang_1_1QualType.html">QualType</a> T1,</div>
+<div class="line"><a name="l03688"></a><span class="lineno"> 3688</span>                                            <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> T1Quals,</div>
+<div class="line"><a name="l03689"></a><span class="lineno"> 3689</span>                                            <a class="code" href="classclang_1_1QualType.html">QualType</a> cv2T2, <a class="code" href="classclang_1_1QualType.html">QualType</a> T2,</div>
+<div class="line"><a name="l03690"></a><span class="lineno"> 3690</span>                                            <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> T2Quals,</div>
+<div class="line"><a name="l03691"></a><span class="lineno"> 3691</span>                                            <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence) {</div>
+<div class="line"><a name="l03692"></a><span class="lineno"> 3692</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DestType = Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>();</div>
+<div class="line"><a name="l03693"></a><span class="lineno"> 3693</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> DeclLoc = Initializer-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l03694"></a><span class="lineno"> 3694</span>   <span class="comment">// Compute some basic properties of the types and the initializer.</span></div>
+<div class="line"><a name="l03695"></a><span class="lineno"> 3695</span>   <span class="keywordtype">bool</span> isLValueRef = DestType-><a class="code" href="classclang_1_1Type.html#a4986b78356f1d0fa9d0f3c2244a9f9c9">isLValueReferenceType</a>();</div>
+<div class="line"><a name="l03696"></a><span class="lineno"> 3696</span>   <span class="keywordtype">bool</span> isRValueRef = !isLValueRef;</div>
+<div class="line"><a name="l03697"></a><span class="lineno"> 3697</span>   <span class="keywordtype">bool</span> DerivedToBase = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03698"></a><span class="lineno"> 3698</span>   <span class="keywordtype">bool</span> ObjCConversion = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03699"></a><span class="lineno"> 3699</span>   <span class="keywordtype">bool</span> ObjCLifetimeConversion = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03700"></a><span class="lineno"> 3700</span>   <a class="code" href="classclang_1_1Expr_1_1Classification.html" title="The return type of classify(). Represents the C++11 expression taxonomy.">Expr::Classification</a> InitCategory = Initializer-><a class="code" href="classclang_1_1Expr.html#a69226c1509feed27879120d7da683eff" title="Classify - Classify this expression according to the C++11 expression taxonomy.">Classify</a>(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>);</div>
+<div class="line"><a name="l03701"></a><span class="lineno"> 3701</span>   <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5">Sema::ReferenceCompareResult</a> RefRelationship</div>
+<div class="line"><a name="l03702"></a><span class="lineno"> 3702</span>     = S.<a class="code" href="classclang_1_1Sema.html#afa797b20cd9aaa5b332fd7faca01a7d8">CompareReferenceRelationship</a>(DeclLoc, cv1T1, cv2T2, DerivedToBase,</div>
+<div class="line"><a name="l03703"></a><span class="lineno"> 3703</span>                                      ObjCConversion, ObjCLifetimeConversion);</div>
+<div class="line"><a name="l03704"></a><span class="lineno"> 3704</span> </div>
+<div class="line"><a name="l03705"></a><span class="lineno"> 3705</span>   <span class="comment">// C++0x [dcl.init.ref]p5:</span></div>
+<div class="line"><a name="l03706"></a><span class="lineno"> 3706</span>   <span class="comment">//   A reference to type "cv1 T1" is initialized by an expression of type</span></div>
+<div class="line"><a name="l03707"></a><span class="lineno"> 3707</span>   <span class="comment">//   "cv2 T2" as follows:</span></div>
+<div class="line"><a name="l03708"></a><span class="lineno"> 3708</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l03709"></a><span class="lineno"> 3709</span>   <span class="comment">//     - If the reference is an lvalue reference and the initializer</span></div>
+<div class="line"><a name="l03710"></a><span class="lineno"> 3710</span>   <span class="comment">//       expression</span></div>
+<div class="line"><a name="l03711"></a><span class="lineno"> 3711</span>   <span class="comment">// Note the analogous bullet points for rvalue refs to functions. Because</span></div>
+<div class="line"><a name="l03712"></a><span class="lineno"> 3712</span>   <span class="comment">// there are no function rvalues in C++, rvalue refs to functions are treated</span></div>
+<div class="line"><a name="l03713"></a><span class="lineno"> 3713</span>   <span class="comment">// like lvalue refs.</span></div>
+<div class="line"><a name="l03714"></a><span class="lineno"> 3714</span>   <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2">OverloadingResult</a> ConvOvlResult = <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2aa70d45cfee2580edd6c2364b4e8d3d0d" title="Overload resolution succeeded.">OR_Success</a>;</div>
+<div class="line"><a name="l03715"></a><span class="lineno"> 3715</span>   <span class="keywordtype">bool</span> T1Function = T1-><a class="code" href="classclang_1_1Type.html#af0ae1f40cbbc07fabfefc86af91072e3">isFunctionType</a>();</div>
+<div class="line"><a name="l03716"></a><span class="lineno"> 3716</span>   <span class="keywordflow">if</span> (isLValueRef || T1Function) {</div>
+<div class="line"><a name="l03717"></a><span class="lineno"> 3717</span>     <span class="keywordflow">if</span> (InitCategory.<a class="code" href="classclang_1_1Expr_1_1Classification.html#a7b17c6581ae178cb495e686b82b631e5">isLValue</a>() &&</div>
+<div class="line"><a name="l03718"></a><span class="lineno"> 3718</span>         (RefRelationship >= <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5af157b5fe48c1400ea4bf7a866f7cd573">Sema::Ref_Compatible_With_Added_Qualification</a> ||</div>
+<div class="line"><a name="l03719"></a><span class="lineno"> 3719</span>          (Kind.<a class="code" href="classclang_1_1InitializationKind.html#ae49b85f530201e4c03925d3bc125f17b" title="Determine whether this initialization is a C-style cast.">isCStyleOrFunctionalCast</a>() &&</div>
+<div class="line"><a name="l03720"></a><span class="lineno"> 3720</span>           RefRelationship == <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5a5cec00bc98686baf3a3c34b67df18653">Sema::Ref_Related</a>))) {</div>
+<div class="line"><a name="l03721"></a><span class="lineno"> 3721</span>       <span class="comment">//   - is an lvalue (but is not a bit-field), and "cv1 T1" is</span></div>
+<div class="line"><a name="l03722"></a><span class="lineno"> 3722</span>       <span class="comment">//     reference-compatible with "cv2 T2," or</span></div>
+<div class="line"><a name="l03723"></a><span class="lineno"> 3723</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l03724"></a><span class="lineno"> 3724</span>       <span class="comment">// Per C++ [over.best.ics]p2, we don't diagnose whether the lvalue is a</span></div>
+<div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>       <span class="comment">// bit-field when we're determining whether the reference initialization</span></div>
+<div class="line"><a name="l03726"></a><span class="lineno"> 3726</span>       <span class="comment">// can occur. However, we do pay attention to whether it is a bit-field</span></div>
+<div class="line"><a name="l03727"></a><span class="lineno"> 3727</span>       <span class="comment">// to decide whether we're actually binding to a temporary created from</span></div>
+<div class="line"><a name="l03728"></a><span class="lineno"> 3728</span>       <span class="comment">// the bit-field.</span></div>
+<div class="line"><a name="l03729"></a><span class="lineno"> 3729</span>       <span class="keywordflow">if</span> (DerivedToBase)</div>
+<div class="line"><a name="l03730"></a><span class="lineno"> 3730</span>         Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a60a8de5b80d7d4fd7c9f2a219d88a8e5" title="Add a new step in the initialization that performs a derived-to- base cast.">AddDerivedToBaseCastStep</a>(</div>
+<div class="line"><a name="l03731"></a><span class="lineno"> 3731</span>                          S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a1995e62dee79876059ef940d76a38983" title="Un-split a SplitQualType.">getQualifiedType</a>(T1, T2Quals),</div>
+<div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>                          <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a>);</div>
+<div class="line"><a name="l03733"></a><span class="lineno"> 3733</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ObjCConversion)</div>
+<div class="line"><a name="l03734"></a><span class="lineno"> 3734</span>         Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a89b1e16440d138dfb6c471da35fdbe71" title="Add an Objective-C object conversion step, which is always a no-op.">AddObjCObjectConversionStep</a>(</div>
+<div class="line"><a name="l03735"></a><span class="lineno"> 3735</span>                                      S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a1995e62dee79876059ef940d76a38983" title="Un-split a SplitQualType.">getQualifiedType</a>(T1, T2Quals));</div>
+<div class="line"><a name="l03736"></a><span class="lineno"> 3736</span> </div>
+<div class="line"><a name="l03737"></a><span class="lineno"> 3737</span>       <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> ValueKind =</div>
+<div class="line"><a name="l03738"></a><span class="lineno"> 3738</span>         <a class="code" href="SemaInit_8cpp.html#a04539caec9ecbf255cb8811ff57aecd3">convertQualifiersAndValueKindIfNecessary</a>(S, Sequence, Initializer,</div>
+<div class="line"><a name="l03739"></a><span class="lineno"> 3739</span>                                                  cv1T1, T1Quals, T2Quals,</div>
+<div class="line"><a name="l03740"></a><span class="lineno"> 3740</span>                                                  isLValueRef);</div>
+<div class="line"><a name="l03741"></a><span class="lineno"> 3741</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#aeb7e3ad0c8fe0b594c63a4fc4fd54b72" title="Add a new step binding a reference to an object.">AddReferenceBindingStep</a>(cv1T1, ValueKind == <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>);</div>
+<div class="line"><a name="l03742"></a><span class="lineno"> 3742</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03743"></a><span class="lineno"> 3743</span>     }</div>
+<div class="line"><a name="l03744"></a><span class="lineno"> 3744</span> </div>
+<div class="line"><a name="l03745"></a><span class="lineno"> 3745</span>     <span class="comment">//     - has a class type (i.e., T2 is a class type), where T1 is not</span></div>
+<div class="line"><a name="l03746"></a><span class="lineno"> 3746</span>     <span class="comment">//       reference-related to T2, and can be implicitly converted to an</span></div>
+<div class="line"><a name="l03747"></a><span class="lineno"> 3747</span>     <span class="comment">//       lvalue of type "cv3 T3," where "cv1 T1" is reference-compatible</span></div>
+<div class="line"><a name="l03748"></a><span class="lineno"> 3748</span>     <span class="comment">//       with "cv3 T3" (this conversion is selected by enumerating the</span></div>
+<div class="line"><a name="l03749"></a><span class="lineno"> 3749</span>     <span class="comment">//       applicable conversion functions (13.3.1.6) and choosing the best</span></div>
+<div class="line"><a name="l03750"></a><span class="lineno"> 3750</span>     <span class="comment">//       one through overload resolution (13.3)),</span></div>
+<div class="line"><a name="l03751"></a><span class="lineno"> 3751</span>     <span class="comment">// If we have an rvalue ref to function type here, the rhs must be</span></div>
+<div class="line"><a name="l03752"></a><span class="lineno"> 3752</span>     <span class="comment">// an rvalue. DR1287 removed the "implicitly" here.</span></div>
+<div class="line"><a name="l03753"></a><span class="lineno"> 3753</span>     <span class="keywordflow">if</span> (RefRelationship == <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5a2edcdce31c979ee2b02e6598a7d1a83e">Sema::Ref_Incompatible</a> && T2-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>() &&</div>
+<div class="line"><a name="l03754"></a><span class="lineno"> 3754</span>         (isLValueRef || InitCategory.<a class="code" href="classclang_1_1Expr_1_1Classification.html#ab90abd06302d7e3495ba20239742e946">isRValue</a>())) {</div>
+<div class="line"><a name="l03755"></a><span class="lineno"> 3755</span>       ConvOvlResult = <a class="code" href="SemaInit_8cpp.html#a2fd912de27172df1a44657425bc67896" title="Try a reference initialization that involves calling a conversion function.">TryRefInitWithConversionFunction</a>(</div>
+<div class="line"><a name="l03756"></a><span class="lineno"> 3756</span>           S, Entity, Kind, Initializer, <span class="comment">/*AllowRValues*/</span>isRValueRef, Sequence);</div>
+<div class="line"><a name="l03757"></a><span class="lineno"> 3757</span>       <span class="keywordflow">if</span> (ConvOvlResult == <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2aa70d45cfee2580edd6c2364b4e8d3d0d" title="Overload resolution succeeded.">OR_Success</a>)</div>
+<div class="line"><a name="l03758"></a><span class="lineno"> 3758</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03759"></a><span class="lineno"> 3759</span>       <span class="keywordflow">if</span> (ConvOvlResult != <a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2aec527dfc3dfd4f09e60bec8a2de45b14" title="No viable function found.">OR_No_Viable_Function</a>)</div>
+<div class="line"><a name="l03760"></a><span class="lineno"> 3760</span>         Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a8da1a2bd14c2827cc95fd6f3d2eed7d4" title="Note that this initialization sequence failed due to failed overload resolution.">SetOverloadFailure</a>(</div>
+<div class="line"><a name="l03761"></a><span class="lineno"> 3761</span>             <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6addb6796b16c6dc8f0b6f3c6ab7ac3894" title="Overloading due to reference initialization failed.">InitializationSequence::FK_ReferenceInitOverloadFailed</a>,</div>
+<div class="line"><a name="l03762"></a><span class="lineno"> 3762</span>             ConvOvlResult);</div>
+<div class="line"><a name="l03763"></a><span class="lineno"> 3763</span>     }</div>
+<div class="line"><a name="l03764"></a><span class="lineno"> 3764</span>   }</div>
+<div class="line"><a name="l03765"></a><span class="lineno"> 3765</span> </div>
+<div class="line"><a name="l03766"></a><span class="lineno"> 3766</span>   <span class="comment">//     - Otherwise, the reference shall be an lvalue reference to a</span></div>
+<div class="line"><a name="l03767"></a><span class="lineno"> 3767</span>   <span class="comment">//       non-volatile const type (i.e., cv1 shall be const), or the reference</span></div>
+<div class="line"><a name="l03768"></a><span class="lineno"> 3768</span>   <span class="comment">//       shall be an rvalue reference.</span></div>
+<div class="line"><a name="l03769"></a><span class="lineno"> 3769</span>   <span class="keywordflow">if</span> (isLValueRef && !(T1Quals.<a class="code" href="classclang_1_1Qualifiers.html#aa4c1d746c952f79ff74dc3f3a88c21fa">hasConst</a>() && !T1Quals.<a class="code" href="classclang_1_1Qualifiers.html#acde218ec4de3ae41e2e9c9fc3b5e7c07">hasVolatile</a>())) {</div>
+<div class="line"><a name="l03770"></a><span class="lineno"> 3770</span>     <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(T2) == S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a9630077a927001f119e396456dc9e091">OverloadTy</a>)</div>
+<div class="line"><a name="l03771"></a><span class="lineno"> 3771</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6abd3e911b4107171dc42985fcc42e2ce6" title="Cannot resolve the address of an overloaded function.">InitializationSequence::FK_AddressOfOverloadFailed</a>);</div>
+<div class="line"><a name="l03772"></a><span class="lineno"> 3772</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ConvOvlResult && !Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#abb61b1c5e1208b7df98012b7c97280ff" title="Retrieve a reference to the candidate set when overload resolution fails.">getFailedCandidateSet</a>().<a class="code" href="classclang_1_1OverloadCandidateSet.html#af636c1e9a532f373337be4a9af88b75b">empty</a>())</div>
+<div class="line"><a name="l03773"></a><span class="lineno"> 3773</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a8da1a2bd14c2827cc95fd6f3d2eed7d4" title="Note that this initialization sequence failed due to failed overload resolution.">SetOverloadFailure</a>(</div>
+<div class="line"><a name="l03774"></a><span class="lineno"> 3774</span>                         <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6addb6796b16c6dc8f0b6f3c6ab7ac3894" title="Overloading due to reference initialization failed.">InitializationSequence::FK_ReferenceInitOverloadFailed</a>,</div>
+<div class="line"><a name="l03775"></a><span class="lineno"> 3775</span>                                   ConvOvlResult);</div>
+<div class="line"><a name="l03776"></a><span class="lineno"> 3776</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03777"></a><span class="lineno"> 3777</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(InitCategory.<a class="code" href="classclang_1_1Expr_1_1Classification.html#a7b17c6581ae178cb495e686b82b631e5">isLValue</a>()</div>
+<div class="line"><a name="l03778"></a><span class="lineno"> 3778</span>         ? (RefRelationship == <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5a5cec00bc98686baf3a3c34b67df18653">Sema::Ref_Related</a></div>
+<div class="line"><a name="l03779"></a><span class="lineno"> 3779</span>              ? <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a2520a0bcb6e7e37efcc3a775f2d90333" title="Reference binding drops qualifiers.">InitializationSequence::FK_ReferenceInitDropsQualifiers</a></div>
+<div class="line"><a name="l03780"></a><span class="lineno"> 3780</span>              : <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a2f215d340ab73f0ca29012d047329b7c" title="Non-const lvalue reference binding to an lvalue of unrelated type.">InitializationSequence::FK_NonConstLValueReferenceBindingToUnrelated</a>)</div>
+<div class="line"><a name="l03781"></a><span class="lineno"> 3781</span>         : <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a513434cb34ebc69703ac014f54a275e5" title="Non-const lvalue reference binding to a temporary.">InitializationSequence::FK_NonConstLValueReferenceBindingToTemporary</a>);</div>
+<div class="line"><a name="l03782"></a><span class="lineno"> 3782</span> </div>
+<div class="line"><a name="l03783"></a><span class="lineno"> 3783</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03784"></a><span class="lineno"> 3784</span>   }</div>
+<div class="line"><a name="l03785"></a><span class="lineno"> 3785</span> </div>
+<div class="line"><a name="l03786"></a><span class="lineno"> 3786</span>   <span class="comment">//    - If the initializer expression</span></div>
+<div class="line"><a name="l03787"></a><span class="lineno"> 3787</span>   <span class="comment">//      - is an xvalue, class prvalue, array prvalue, or function lvalue and</span></div>
+<div class="line"><a name="l03788"></a><span class="lineno"> 3788</span>   <span class="comment">//        "cv1 T1" is reference-compatible with "cv2 T2"</span></div>
+<div class="line"><a name="l03789"></a><span class="lineno"> 3789</span>   <span class="comment">// Note: functions are handled below.</span></div>
+<div class="line"><a name="l03790"></a><span class="lineno"> 3790</span>   <span class="keywordflow">if</span> (!T1Function &&</div>
+<div class="line"><a name="l03791"></a><span class="lineno"> 3791</span>       (RefRelationship >= <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5af157b5fe48c1400ea4bf7a866f7cd573">Sema::Ref_Compatible_With_Added_Qualification</a> ||</div>
+<div class="line"><a name="l03792"></a><span class="lineno"> 3792</span>        (Kind.<a class="code" href="classclang_1_1InitializationKind.html#ae49b85f530201e4c03925d3bc125f17b" title="Determine whether this initialization is a C-style cast.">isCStyleOrFunctionalCast</a>() &&</div>
+<div class="line"><a name="l03793"></a><span class="lineno"> 3793</span>         RefRelationship == <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5a5cec00bc98686baf3a3c34b67df18653">Sema::Ref_Related</a>)) &&</div>
+<div class="line"><a name="l03794"></a><span class="lineno"> 3794</span>       (InitCategory.<a class="code" href="classclang_1_1Expr_1_1Classification.html#a7a06c94787327dd87ab43c3bc5389278">isXValue</a>() ||</div>
+<div class="line"><a name="l03795"></a><span class="lineno"> 3795</span>        (InitCategory.<a class="code" href="classclang_1_1Expr_1_1Classification.html#a0f89d86e6ff79e82a097c610202dcff6">isPRValue</a>() && T2-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) ||</div>
+<div class="line"><a name="l03796"></a><span class="lineno"> 3796</span>        (InitCategory.<a class="code" href="classclang_1_1Expr_1_1Classification.html#a0f89d86e6ff79e82a097c610202dcff6">isPRValue</a>() && T2-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>()))) {</div>
+<div class="line"><a name="l03797"></a><span class="lineno"> 3797</span>     <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> ValueKind = InitCategory.<a class="code" href="classclang_1_1Expr_1_1Classification.html#a7a06c94787327dd87ab43c3bc5389278">isXValue</a>()? <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a63fc11bfcee4743c02b72657c1adcf27" title="An x-value expression is a reference to an object with independent storage but which can be "moved"...">VK_XValue</a> : <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>;</div>
+<div class="line"><a name="l03798"></a><span class="lineno"> 3798</span>     <span class="keywordflow">if</span> (InitCategory.<a class="code" href="classclang_1_1Expr_1_1Classification.html#a0f89d86e6ff79e82a097c610202dcff6">isPRValue</a>() && T2-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) {</div>
+<div class="line"><a name="l03799"></a><span class="lineno"> 3799</span>       <span class="comment">// The corresponding bullet in C++03 [dcl.init.ref]p5 gives the</span></div>
+<div class="line"><a name="l03800"></a><span class="lineno"> 3800</span>       <span class="comment">// compiler the freedom to perform a copy here or bind to the</span></div>
+<div class="line"><a name="l03801"></a><span class="lineno"> 3801</span>       <span class="comment">// object, while C++0x requires that we bind directly to the</span></div>
+<div class="line"><a name="l03802"></a><span class="lineno"> 3802</span>       <span class="comment">// object. Hence, we always bind to the object without making an</span></div>
+<div class="line"><a name="l03803"></a><span class="lineno"> 3803</span>       <span class="comment">// extra copy. However, in C++03 requires that we check for the</span></div>
+<div class="line"><a name="l03804"></a><span class="lineno"> 3804</span>       <span class="comment">// presence of a suitable copy constructor:</span></div>
+<div class="line"><a name="l03805"></a><span class="lineno"> 3805</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l03806"></a><span class="lineno"> 3806</span>       <span class="comment">//   The constructor that would be used to make the copy shall</span></div>
+<div class="line"><a name="l03807"></a><span class="lineno"> 3807</span>       <span class="comment">//   be callable whether or not the copy is actually done.</span></div>
+<div class="line"><a name="l03808"></a><span class="lineno"> 3808</span>       <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus11 && !S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().MicrosoftExt)</div>
+<div class="line"><a name="l03809"></a><span class="lineno"> 3809</span>         Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a95d4024d55560d1d7c8c278623d0e1b9" title="Add a new step that makes an extraneous copy of the input to a temporary of the same class type...">AddExtraneousCopyToTemporary</a>(cv2T2);</div>
+<div class="line"><a name="l03810"></a><span class="lineno"> 3810</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus11)</div>
+<div class="line"><a name="l03811"></a><span class="lineno"> 3811</span>         <a class="code" href="SemaInit_8cpp.html#a4836ec4a6fc48413ab9ca51b0fb709d0" title="Check whether elidable copy construction for binding a reference to a temporary would have succeeded ...">CheckCXX98CompatAccessibleCopy</a>(S, Entity, Initializer);</div>
+<div class="line"><a name="l03812"></a><span class="lineno"> 3812</span>     }</div>
+<div class="line"><a name="l03813"></a><span class="lineno"> 3813</span> </div>
+<div class="line"><a name="l03814"></a><span class="lineno"> 3814</span>     <span class="keywordflow">if</span> (DerivedToBase)</div>
+<div class="line"><a name="l03815"></a><span class="lineno"> 3815</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a60a8de5b80d7d4fd7c9f2a219d88a8e5" title="Add a new step in the initialization that performs a derived-to- base cast.">AddDerivedToBaseCastStep</a>(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a1995e62dee79876059ef940d76a38983" title="Un-split a SplitQualType.">getQualifiedType</a>(T1, T2Quals),</div>
+<div class="line"><a name="l03816"></a><span class="lineno"> 3816</span>                                         ValueKind);</div>
+<div class="line"><a name="l03817"></a><span class="lineno"> 3817</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ObjCConversion)</div>
+<div class="line"><a name="l03818"></a><span class="lineno"> 3818</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a89b1e16440d138dfb6c471da35fdbe71" title="Add an Objective-C object conversion step, which is always a no-op.">AddObjCObjectConversionStep</a>(</div>
+<div class="line"><a name="l03819"></a><span class="lineno"> 3819</span>                                        S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a1995e62dee79876059ef940d76a38983" title="Un-split a SplitQualType.">getQualifiedType</a>(T1, T2Quals));</div>
+<div class="line"><a name="l03820"></a><span class="lineno"> 3820</span> </div>
+<div class="line"><a name="l03821"></a><span class="lineno"> 3821</span>     ValueKind = <a class="code" href="SemaInit_8cpp.html#a04539caec9ecbf255cb8811ff57aecd3">convertQualifiersAndValueKindIfNecessary</a>(S, Sequence,</div>
+<div class="line"><a name="l03822"></a><span class="lineno"> 3822</span>                                                          Initializer, cv1T1,</div>
+<div class="line"><a name="l03823"></a><span class="lineno"> 3823</span>                                                          T1Quals, T2Quals,</div>
+<div class="line"><a name="l03824"></a><span class="lineno"> 3824</span>                                                          isLValueRef);</div>
+<div class="line"><a name="l03825"></a><span class="lineno"> 3825</span> </div>
+<div class="line"><a name="l03826"></a><span class="lineno"> 3826</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#aeb7e3ad0c8fe0b594c63a4fc4fd54b72" title="Add a new step binding a reference to an object.">AddReferenceBindingStep</a>(cv1T1, ValueKind == <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>);</div>
+<div class="line"><a name="l03827"></a><span class="lineno"> 3827</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03828"></a><span class="lineno"> 3828</span>   }</div>
+<div class="line"><a name="l03829"></a><span class="lineno"> 3829</span> </div>
+<div class="line"><a name="l03830"></a><span class="lineno"> 3830</span>   <span class="comment">//       - has a class type (i.e., T2 is a class type), where T1 is not</span></div>
+<div class="line"><a name="l03831"></a><span class="lineno"> 3831</span>   <span class="comment">//         reference-related to T2, and can be implicitly converted to an</span></div>
+<div class="line"><a name="l03832"></a><span class="lineno"> 3832</span>   <span class="comment">//         xvalue, class prvalue, or function lvalue of type "cv3 T3",</span></div>
+<div class="line"><a name="l03833"></a><span class="lineno"> 3833</span>   <span class="comment">//         where "cv1 T1" is reference-compatible with "cv3 T3",</span></div>
+<div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l03835"></a><span class="lineno"> 3835</span>   <span class="comment">// DR1287 removes the "implicitly" here.</span></div>
+<div class="line"><a name="l03836"></a><span class="lineno"> 3836</span>   <span class="keywordflow">if</span> (T2-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) {</div>
+<div class="line"><a name="l03837"></a><span class="lineno"> 3837</span>     <span class="keywordflow">if</span> (RefRelationship == <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5a2edcdce31c979ee2b02e6598a7d1a83e">Sema::Ref_Incompatible</a>) {</div>
+<div class="line"><a name="l03838"></a><span class="lineno"> 3838</span>       ConvOvlResult = <a class="code" href="SemaInit_8cpp.html#a2fd912de27172df1a44657425bc67896" title="Try a reference initialization that involves calling a conversion function.">TryRefInitWithConversionFunction</a>(</div>
+<div class="line"><a name="l03839"></a><span class="lineno"> 3839</span>           S, Entity, Kind, Initializer, <span class="comment">/*AllowRValues*/</span><span class="keyword">true</span>, Sequence);</div>
+<div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>       <span class="keywordflow">if</span> (ConvOvlResult)</div>
+<div class="line"><a name="l03841"></a><span class="lineno"> 3841</span>         Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a8da1a2bd14c2827cc95fd6f3d2eed7d4" title="Note that this initialization sequence failed due to failed overload resolution.">SetOverloadFailure</a>(</div>
+<div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>             <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6addb6796b16c6dc8f0b6f3c6ab7ac3894" title="Overloading due to reference initialization failed.">InitializationSequence::FK_ReferenceInitOverloadFailed</a>,</div>
+<div class="line"><a name="l03843"></a><span class="lineno"> 3843</span>             ConvOvlResult);</div>
+<div class="line"><a name="l03844"></a><span class="lineno"> 3844</span> </div>
+<div class="line"><a name="l03845"></a><span class="lineno"> 3845</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03846"></a><span class="lineno"> 3846</span>     }</div>
+<div class="line"><a name="l03847"></a><span class="lineno"> 3847</span> </div>
+<div class="line"><a name="l03848"></a><span class="lineno"> 3848</span>     <span class="keywordflow">if</span> ((RefRelationship == <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5a3bfa5c3e586df741bfa1dd8b73f85a56">Sema::Ref_Compatible</a> ||</div>
+<div class="line"><a name="l03849"></a><span class="lineno"> 3849</span>          RefRelationship == <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5af157b5fe48c1400ea4bf7a866f7cd573">Sema::Ref_Compatible_With_Added_Qualification</a>) &&</div>
+<div class="line"><a name="l03850"></a><span class="lineno"> 3850</span>         isRValueRef && InitCategory.<a class="code" href="classclang_1_1Expr_1_1Classification.html#a7b17c6581ae178cb495e686b82b631e5">isLValue</a>()) {</div>
+<div class="line"><a name="l03851"></a><span class="lineno"> 3851</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(</div>
+<div class="line"><a name="l03852"></a><span class="lineno"> 3852</span>         <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6acc109390374f1f80c57a8be17685bae0" title="Rvalue reference binding to an lvalue.">InitializationSequence::FK_RValueReferenceBindingToLValue</a>);</div>
+<div class="line"><a name="l03853"></a><span class="lineno"> 3853</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>     }</div>
+<div class="line"><a name="l03855"></a><span class="lineno"> 3855</span> </div>
+<div class="line"><a name="l03856"></a><span class="lineno"> 3856</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a2520a0bcb6e7e37efcc3a775f2d90333" title="Reference binding drops qualifiers.">InitializationSequence::FK_ReferenceInitDropsQualifiers</a>);</div>
+<div class="line"><a name="l03857"></a><span class="lineno"> 3857</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03858"></a><span class="lineno"> 3858</span>   }</div>
+<div class="line"><a name="l03859"></a><span class="lineno"> 3859</span> </div>
+<div class="line"><a name="l03860"></a><span class="lineno"> 3860</span>   <span class="comment">//      - Otherwise, a temporary of type "cv1 T1" is created and initialized</span></div>
+<div class="line"><a name="l03861"></a><span class="lineno"> 3861</span>   <span class="comment">//        from the initializer expression using the rules for a non-reference</span></div>
+<div class="line"><a name="l03862"></a><span class="lineno"> 3862</span>   <span class="comment">//        copy-initialization (8.5). The reference is then bound to the</span></div>
+<div class="line"><a name="l03863"></a><span class="lineno"> 3863</span>   <span class="comment">//        temporary. [...]</span></div>
+<div class="line"><a name="l03864"></a><span class="lineno"> 3864</span> </div>
+<div class="line"><a name="l03865"></a><span class="lineno"> 3865</span>   <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> TempEntity = <a class="code" href="classclang_1_1InitializedEntity.html#a4898b194ad60ddb5d0293dd57e730d3f" title="Create the initialization entity for a temporary.">InitializedEntity::InitializeTemporary</a>(cv1T1);</div>
+<div class="line"><a name="l03866"></a><span class="lineno"> 3866</span> </div>
+<div class="line"><a name="l03867"></a><span class="lineno"> 3867</span>   <span class="comment">// FIXME: Why do we use an implicit conversion here rather than trying</span></div>
+<div class="line"><a name="l03868"></a><span class="lineno"> 3868</span>   <span class="comment">// copy-initialization?</span></div>
+<div class="line"><a name="l03869"></a><span class="lineno"> 3869</span>   <a class="code" href="classclang_1_1ImplicitConversionSequence.html">ImplicitConversionSequence</a> ICS</div>
+<div class="line"><a name="l03870"></a><span class="lineno"> 3870</span>     = S.<a class="code" href="classclang_1_1Sema.html#a8cee6817e94e2238c74b3693d91023c3">TryImplicitConversion</a>(Initializer, TempEntity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>(),</div>
+<div class="line"><a name="l03871"></a><span class="lineno"> 3871</span>                               <span class="comment">/*SuppressUserConversions=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l03872"></a><span class="lineno"> 3872</span>                               <span class="comment">/*AllowExplicit=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l03873"></a><span class="lineno"> 3873</span>                               <span class="comment">/*FIXME:InOverloadResolution=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l03874"></a><span class="lineno"> 3874</span>                               <span class="comment">/*CStyle=*/</span>Kind.<a class="code" href="classclang_1_1InitializationKind.html#ae49b85f530201e4c03925d3bc125f17b" title="Determine whether this initialization is a C-style cast.">isCStyleOrFunctionalCast</a>(),</div>
+<div class="line"><a name="l03875"></a><span class="lineno"> 3875</span>                               <span class="comment">/*AllowObjCWritebackConversion=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l03876"></a><span class="lineno"> 3876</span>   </div>
+<div class="line"><a name="l03877"></a><span class="lineno"> 3877</span>   <span class="keywordflow">if</span> (ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a0aba148a3e1990b8ee4a7136a7564d80">isBad</a>()) {</div>
+<div class="line"><a name="l03878"></a><span class="lineno"> 3878</span>     <span class="comment">// FIXME: Use the conversion function set stored in ICS to turn</span></div>
+<div class="line"><a name="l03879"></a><span class="lineno"> 3879</span>     <span class="comment">// this into an overloading ambiguity diagnostic. However, we need</span></div>
+<div class="line"><a name="l03880"></a><span class="lineno"> 3880</span>     <span class="comment">// to keep that set as an OverloadCandidateSet rather than as some</span></div>
+<div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>     <span class="comment">// other kind of set.</span></div>
+<div class="line"><a name="l03882"></a><span class="lineno"> 3882</span>     <span class="keywordflow">if</span> (ConvOvlResult && !Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#abb61b1c5e1208b7df98012b7c97280ff" title="Retrieve a reference to the candidate set when overload resolution fails.">getFailedCandidateSet</a>().<a class="code" href="classclang_1_1OverloadCandidateSet.html#af636c1e9a532f373337be4a9af88b75b">empty</a>())</div>
+<div class="line"><a name="l03883"></a><span class="lineno"> 3883</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a8da1a2bd14c2827cc95fd6f3d2eed7d4" title="Note that this initialization sequence failed due to failed overload resolution.">SetOverloadFailure</a>(</div>
+<div class="line"><a name="l03884"></a><span class="lineno"> 3884</span>                         <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6addb6796b16c6dc8f0b6f3c6ab7ac3894" title="Overloading due to reference initialization failed.">InitializationSequence::FK_ReferenceInitOverloadFailed</a>,</div>
+<div class="line"><a name="l03885"></a><span class="lineno"> 3885</span>                                   ConvOvlResult);</div>
+<div class="line"><a name="l03886"></a><span class="lineno"> 3886</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(T2) == S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a9630077a927001f119e396456dc9e091">OverloadTy</a>)</div>
+<div class="line"><a name="l03887"></a><span class="lineno"> 3887</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6abd3e911b4107171dc42985fcc42e2ce6" title="Cannot resolve the address of an overloaded function.">InitializationSequence::FK_AddressOfOverloadFailed</a>);</div>
+<div class="line"><a name="l03888"></a><span class="lineno"> 3888</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03889"></a><span class="lineno"> 3889</span>       Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a3fdefaaea204fbe3f54a97ca3379064a" title="Reference binding failed.">InitializationSequence::FK_ReferenceInitFailed</a>);</div>
+<div class="line"><a name="l03890"></a><span class="lineno"> 3890</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03891"></a><span class="lineno"> 3891</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03892"></a><span class="lineno"> 3892</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ad2bdc93c890e75998e73fcbf5e538035" title="Add a new step that applies an implicit conversion sequence.">AddConversionSequenceStep</a>(ICS, TempEntity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>());</div>
+<div class="line"><a name="l03893"></a><span class="lineno"> 3893</span>   }</div>
+<div class="line"><a name="l03894"></a><span class="lineno"> 3894</span> </div>
+<div class="line"><a name="l03895"></a><span class="lineno"> 3895</span>   <span class="comment">//        [...] If T1 is reference-related to T2, cv1 must be the</span></div>
+<div class="line"><a name="l03896"></a><span class="lineno"> 3896</span>   <span class="comment">//        same cv-qualification as, or greater cv-qualification</span></div>
+<div class="line"><a name="l03897"></a><span class="lineno"> 3897</span>   <span class="comment">//        than, cv2; otherwise, the program is ill-formed.</span></div>
+<div class="line"><a name="l03898"></a><span class="lineno"> 3898</span>   <span class="keywordtype">unsigned</span> T1CVRQuals = T1Quals.<a class="code" href="classclang_1_1Qualifiers.html#a19c0ea3017053bd2778611dd129a9b74">getCVRQualifiers</a>();</div>
+<div class="line"><a name="l03899"></a><span class="lineno"> 3899</span>   <span class="keywordtype">unsigned</span> T2CVRQuals = T2Quals.<a class="code" href="classclang_1_1Qualifiers.html#a19c0ea3017053bd2778611dd129a9b74">getCVRQualifiers</a>();</div>
+<div class="line"><a name="l03900"></a><span class="lineno"> 3900</span>   <span class="keywordflow">if</span> (RefRelationship == <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5a5cec00bc98686baf3a3c34b67df18653">Sema::Ref_Related</a> &&</div>
+<div class="line"><a name="l03901"></a><span class="lineno"> 3901</span>       (T1CVRQuals | T2CVRQuals) != T1CVRQuals) {</div>
+<div class="line"><a name="l03902"></a><span class="lineno"> 3902</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a2520a0bcb6e7e37efcc3a775f2d90333" title="Reference binding drops qualifiers.">InitializationSequence::FK_ReferenceInitDropsQualifiers</a>);</div>
+<div class="line"><a name="l03903"></a><span class="lineno"> 3903</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03904"></a><span class="lineno"> 3904</span>   }</div>
+<div class="line"><a name="l03905"></a><span class="lineno"> 3905</span> </div>
+<div class="line"><a name="l03906"></a><span class="lineno"> 3906</span>   <span class="comment">//   [...] If T1 is reference-related to T2 and the reference is an rvalue</span></div>
+<div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>   <span class="comment">//   reference, the initializer expression shall not be an lvalue.</span></div>
+<div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>   <span class="keywordflow">if</span> (RefRelationship >= <a class="code" href="classclang_1_1Sema.html#a25e6503730ef6aee0417270c65ee3cc5a5cec00bc98686baf3a3c34b67df18653">Sema::Ref_Related</a> && !isLValueRef &&</div>
+<div class="line"><a name="l03909"></a><span class="lineno"> 3909</span>       InitCategory.<a class="code" href="classclang_1_1Expr_1_1Classification.html#a7b17c6581ae178cb495e686b82b631e5">isLValue</a>()) {</div>
+<div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(</div>
+<div class="line"><a name="l03911"></a><span class="lineno"> 3911</span>                     <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6acc109390374f1f80c57a8be17685bae0" title="Rvalue reference binding to an lvalue.">InitializationSequence::FK_RValueReferenceBindingToLValue</a>);</div>
+<div class="line"><a name="l03912"></a><span class="lineno"> 3912</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03913"></a><span class="lineno"> 3913</span>   }</div>
+<div class="line"><a name="l03914"></a><span class="lineno"> 3914</span> </div>
+<div class="line"><a name="l03915"></a><span class="lineno"> 3915</span>   Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#aeb7e3ad0c8fe0b594c63a4fc4fd54b72" title="Add a new step binding a reference to an object.">AddReferenceBindingStep</a>(cv1T1, <span class="comment">/*bindingTemporary=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l03916"></a><span class="lineno"> 3916</span>   <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03917"></a><span class="lineno"> 3917</span> }</div>
+<div class="line"><a name="l03918"></a><span class="lineno"> 3918</span> <span class="comment"></span></div>
+<div class="line"><a name="l03919"></a><span class="lineno"> 3919</span> <span class="comment">/// \brief Attempt character array initialization from a string literal</span></div>
+<div class="line"><a name="l03920"></a><span class="lineno"> 3920</span> <span class="comment">/// (C++ [dcl.init.string], C99 6.7.8).</span></div>
+<div class="line"><a name="l03921"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#aa45f6e45df46b2a12537f895fc97d66b"> 3921</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#aa45f6e45df46b2a12537f895fc97d66b" title="Attempt character array initialization from a string literal (C++ [dcl.init.string], C99 6.7.8).">TryStringLiteralInitialization</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03922"></a><span class="lineno"> 3922</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l03923"></a><span class="lineno"> 3923</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l03924"></a><span class="lineno"> 3924</span>                                            <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer,</div>
+<div class="line"><a name="l03925"></a><span class="lineno"> 3925</span>                                        <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence) {</div>
+<div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>   Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a0572dfef1b361d0b086ac334a1212d45" title="Add a string init step.">AddStringInitStep</a>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>());</div>
+<div class="line"><a name="l03927"></a><span class="lineno"> 3927</span> }</div>
+<div class="line"><a name="l03928"></a><span class="lineno"> 3928</span> <span class="comment"></span></div>
+<div class="line"><a name="l03929"></a><span class="lineno"> 3929</span> <span class="comment">/// \brief Attempt value initialization (C++ [dcl.init]p7).</span></div>
+<div class="line"><a name="l03930"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a88176a5ec2539745a7cb67420e9fa0b5"> 3930</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a88176a5ec2539745a7cb67420e9fa0b5" title="Attempt value initialization (C++ [dcl.init]p7).">TryValueInitialization</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l03932"></a><span class="lineno"> 3932</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l03933"></a><span class="lineno"> 3933</span>                                    <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence,</div>
+<div class="line"><a name="l03934"></a><span class="lineno"> 3934</span>                                    <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *InitList) {</div>
+<div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>   assert((!InitList || InitList-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() == 0) &&</div>
+<div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>          <span class="stringliteral">"Shouldn't use value-init for non-empty init lists"</span>);</div>
+<div class="line"><a name="l03937"></a><span class="lineno"> 3937</span> </div>
+<div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>   <span class="comment">// C++98 [dcl.init]p5, C++11 [dcl.init]p7:</span></div>
+<div class="line"><a name="l03939"></a><span class="lineno"> 3939</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l03940"></a><span class="lineno"> 3940</span>   <span class="comment">//   To value-initialize an object of type T means:</span></div>
+<div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T = Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>();</div>
+<div class="line"><a name="l03942"></a><span class="lineno"> 3942</span> </div>
+<div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>   <span class="comment">//     -- if T is an array type, then each element is value-initialized;</span></div>
+<div class="line"><a name="l03944"></a><span class="lineno"> 3944</span>   T = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ac70f0cc2404d89f7e086b68514f2741a" title="Return the innermost element type of an array type.">getBaseElementType</a>(T);</div>
+<div class="line"><a name="l03945"></a><span class="lineno"> 3945</span> </div>
+<div class="line"><a name="l03946"></a><span class="lineno"> 3946</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()) {</div>
+<div class="line"><a name="l03947"></a><span class="lineno"> 3947</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ClassDecl = dyn_cast<CXXRecordDecl>(RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>())) {</div>
+<div class="line"><a name="l03948"></a><span class="lineno"> 3948</span>       <span class="keywordtype">bool</span> NeedZeroInitialization = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>       <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus11) {</div>
+<div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>         <span class="comment">// C++98:</span></div>
+<div class="line"><a name="l03951"></a><span class="lineno"> 3951</span>         <span class="comment">// -- if T is a class type (clause 9) with a user-declared constructor</span></div>
+<div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>         <span class="comment">//    (12.1), then the default constructor for T is called (and the</span></div>
+<div class="line"><a name="l03953"></a><span class="lineno"> 3953</span>         <span class="comment">//    initialization is ill-formed if T has no accessible default</span></div>
+<div class="line"><a name="l03954"></a><span class="lineno"> 3954</span>         <span class="comment">//    constructor);</span></div>
+<div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>         <span class="keywordflow">if</span> (ClassDecl->hasUserDeclaredConstructor())</div>
+<div class="line"><a name="l03956"></a><span class="lineno"> 3956</span>           NeedZeroInitialization = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>         <span class="comment">// C++11:</span></div>
+<div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>         <span class="comment">// -- if T is a class type (clause 9) with either no default constructor</span></div>
+<div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>         <span class="comment">//    (12.1 [class.ctor]) or a default constructor that is user-provided</span></div>
+<div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>         <span class="comment">//    or deleted, then the object is default-initialized;</span></div>
+<div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>         <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *CD = S.<a class="code" href="classclang_1_1Sema.html#a605da90716726f38b65837d15633e526" title="Look up the default constructor for the given class.">LookupDefaultConstructor</a>(ClassDecl);</div>
+<div class="line"><a name="l03963"></a><span class="lineno"> 3963</span>         <span class="keywordflow">if</span> (!CD || !CD-><a class="code" href="classclang_1_1CXXConstructorDecl.html#ac5a8e53abb3f8240019ff297c349194b">getCanonicalDecl</a>()-><a class="code" href="classclang_1_1FunctionDecl.html#ade9df00e7c8e6d18bd681d10da7d9e13">isDefaulted</a>() || CD-><a class="code" href="classclang_1_1FunctionDecl.html#aa7c712ee63af38d248bd8c9da34695c1" title="Whether this function has been deleted.">isDeleted</a>())</div>
+<div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>           NeedZeroInitialization = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>       }</div>
+<div class="line"><a name="l03966"></a><span class="lineno"> 3966</span> </div>
+<div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>       <span class="comment">// -- if T is a (possibly cv-qualified) non-union class type without a</span></div>
+<div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>       <span class="comment">//    user-provided or deleted default constructor, then the object is</span></div>
+<div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>       <span class="comment">//    zero-initialized and, if T has a non-trivial default constructor,</span></div>
+<div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>       <span class="comment">//    default-initialized;</span></div>
+<div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>       <span class="comment">// The 'non-union' here was removed by DR1502. The 'non-trivial default</span></div>
+<div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>       <span class="comment">// constructor' part was removed by DR1507.</span></div>
+<div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>       <span class="keywordflow">if</span> (NeedZeroInitialization)</div>
+<div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>         Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ad44e8b37a3221729dae6c0ce6189d708" title="Add a zero-initialization step.">AddZeroInitializationStep</a>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>());</div>
+<div class="line"><a name="l03975"></a><span class="lineno"> 3975</span> </div>
+<div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>       <span class="comment">// C++03:</span></div>
+<div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>       <span class="comment">// -- if T is a non-union class type without a user-declared constructor,</span></div>
+<div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>       <span class="comment">//    then every non-static data member and base class component of T is</span></div>
+<div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>       <span class="comment">//    value-initialized;</span></div>
+<div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>       <span class="comment">// [...] A program that calls for [...] value-initialization of an</span></div>
+<div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>       <span class="comment">// entity of reference type is ill-formed.</span></div>
+<div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>       <span class="comment">// C++11 doesn't need this handling, because value-initialization does not</span></div>
+<div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>       <span class="comment">// occur recursively there, and the implicit default constructor is</span></div>
+<div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>       <span class="comment">// defined as deleted in the problematic cases.</span></div>
+<div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>       <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus11 &&</div>
+<div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>           ClassDecl->hasUninitializedReferenceMember()) {</div>
+<div class="line"><a name="l03988"></a><span class="lineno"> 3988</span>         Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a8fa06212d264bc5e1f0e3ac74feb6e66" title="Too many initializers provided for a reference.">InitializationSequence::FK_TooManyInitsForReference</a>);</div>
+<div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>       }</div>
+<div class="line"><a name="l03991"></a><span class="lineno"> 3991</span> </div>
+<div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>       <span class="comment">// If this is list-value-initialization, pass the empty init list on when</span></div>
+<div class="line"><a name="l03993"></a><span class="lineno"> 3993</span>       <span class="comment">// building the constructor call. This affects the semantics of a few</span></div>
+<div class="line"><a name="l03994"></a><span class="lineno"> 3994</span>       <span class="comment">// things (such as whether an explicit default constructor can be called).</span></div>
+<div class="line"><a name="l03995"></a><span class="lineno"> 3995</span>       <a class="code" href="classclang_1_1Expr.html">Expr</a> *InitListAsExpr = InitList;</div>
+<div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>       <a class="code" href="namespaceclang.html#a2cab300377c9fa787240e2d1d0f70e17">MultiExprArg</a> <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>(&InitListAsExpr, InitList ? 1 : 0);</div>
+<div class="line"><a name="l03997"></a><span class="lineno"> 3997</span>       <span class="keywordtype">bool</span> InitListSyntax = InitList;</div>
+<div class="line"><a name="l03998"></a><span class="lineno"> 3998</span> </div>
+<div class="line"><a name="l03999"></a><span class="lineno"> 3999</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#a5cf6000aab624ed20401360c4e03fbe8" title="Attempt initialization by constructor (C++ [dcl.init]), which enumerates the constructors of the init...">TryConstructorInitialization</a>(S, Entity, Kind, Args, T, Sequence,</div>
+<div class="line"><a name="l04000"></a><span class="lineno"> 4000</span>                                           InitListSyntax);</div>
+<div class="line"><a name="l04001"></a><span class="lineno"> 4001</span>     }</div>
+<div class="line"><a name="l04002"></a><span class="lineno"> 4002</span>   }</div>
+<div class="line"><a name="l04003"></a><span class="lineno"> 4003</span> </div>
+<div class="line"><a name="l04004"></a><span class="lineno"> 4004</span>   Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ad44e8b37a3221729dae6c0ce6189d708" title="Add a zero-initialization step.">AddZeroInitializationStep</a>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>());</div>
+<div class="line"><a name="l04005"></a><span class="lineno"> 4005</span> }</div>
+<div class="line"><a name="l04006"></a><span class="lineno"> 4006</span> <span class="comment"></span></div>
+<div class="line"><a name="l04007"></a><span class="lineno"> 4007</span> <span class="comment">/// \brief Attempt default initialization (C++ [dcl.init]p6).</span></div>
+<div class="line"><a name="l04008"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a5a06d803588251a89ee9786ec03b3b21"> 4008</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#a5a06d803588251a89ee9786ec03b3b21" title="Attempt default initialization (C++ [dcl.init]p6).">TryDefaultInitialization</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l04009"></a><span class="lineno"> 4009</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l04011"></a><span class="lineno"> 4011</span>                                      <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence) {</div>
+<div class="line"><a name="l04012"></a><span class="lineno"> 4012</span>   assert(Kind.<a class="code" href="classclang_1_1InitializationKind.html#ac427022260d4ab6f2ef3b5f57a083076" title="Determine the initialization kind.">getKind</a>() == <a class="code" href="classclang_1_1InitializationKind.html#a15911670bbe7baf3eac6056ed6b66ac8ae6c560fc0b07cc330885416b1122aa6e" title="Default initialization.">InitializationKind::IK_Default</a>);</div>
+<div class="line"><a name="l04013"></a><span class="lineno"> 4013</span> </div>
+<div class="line"><a name="l04014"></a><span class="lineno"> 4014</span>   <span class="comment">// C++ [dcl.init]p6:</span></div>
+<div class="line"><a name="l04015"></a><span class="lineno"> 4015</span>   <span class="comment">//   To default-initialize an object of type T means:</span></div>
+<div class="line"><a name="l04016"></a><span class="lineno"> 4016</span>   <span class="comment">//     - if T is an array type, each element is default-initialized;</span></div>
+<div class="line"><a name="l04017"></a><span class="lineno"> 4017</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DestType = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ac70f0cc2404d89f7e086b68514f2741a" title="Return the innermost element type of an array type.">getBaseElementType</a>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>());</div>
+<div class="line"><a name="l04018"></a><span class="lineno"> 4018</span>          </div>
+<div class="line"><a name="l04019"></a><span class="lineno"> 4019</span>   <span class="comment">//     - if T is a (possibly cv-qualified) class type (Clause 9), the default</span></div>
+<div class="line"><a name="l04020"></a><span class="lineno"> 4020</span>   <span class="comment">//       constructor for T is called (and the initialization is ill-formed if</span></div>
+<div class="line"><a name="l04021"></a><span class="lineno"> 4021</span>   <span class="comment">//       T has no accessible default constructor);</span></div>
+<div class="line"><a name="l04022"></a><span class="lineno"> 4022</span>   <span class="keywordflow">if</span> (DestType->isRecordType() && S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus) {</div>
+<div class="line"><a name="l04023"></a><span class="lineno"> 4023</span>     <a class="code" href="SemaInit_8cpp.html#a5cf6000aab624ed20401360c4e03fbe8" title="Attempt initialization by constructor (C++ [dcl.init]), which enumerates the constructors of the init...">TryConstructorInitialization</a>(S, Entity, Kind, None, DestType, Sequence);</div>
+<div class="line"><a name="l04024"></a><span class="lineno"> 4024</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04025"></a><span class="lineno"> 4025</span>   }</div>
+<div class="line"><a name="l04026"></a><span class="lineno"> 4026</span> </div>
+<div class="line"><a name="l04027"></a><span class="lineno"> 4027</span>   <span class="comment">//     - otherwise, no initialization is performed.</span></div>
+<div class="line"><a name="l04028"></a><span class="lineno"> 4028</span> </div>
+<div class="line"><a name="l04029"></a><span class="lineno"> 4029</span>   <span class="comment">//   If a program calls for the default initialization of an object of</span></div>
+<div class="line"><a name="l04030"></a><span class="lineno"> 4030</span>   <span class="comment">//   a const-qualified type T, T shall be a class type with a user-provided</span></div>
+<div class="line"><a name="l04031"></a><span class="lineno"> 4031</span>   <span class="comment">//   default constructor.</span></div>
+<div class="line"><a name="l04032"></a><span class="lineno"> 4032</span>   <span class="keywordflow">if</span> (DestType.isConstQualified() && S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus) {</div>
+<div class="line"><a name="l04033"></a><span class="lineno"> 4033</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6ae073a34c92c2143cd0bf32ae1f2b34d9" title="Default-initialization of a 'const' object.">InitializationSequence::FK_DefaultInitOfConst</a>);</div>
+<div class="line"><a name="l04034"></a><span class="lineno"> 4034</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04035"></a><span class="lineno"> 4035</span>   }</div>
+<div class="line"><a name="l04036"></a><span class="lineno"> 4036</span> </div>
+<div class="line"><a name="l04037"></a><span class="lineno"> 4037</span>   <span class="comment">// If the destination type has a lifetime property, zero-initialize it.</span></div>
+<div class="line"><a name="l04038"></a><span class="lineno"> 4038</span>   <span class="keywordflow">if</span> (DestType.getQualifiers().hasObjCLifetime()) {</div>
+<div class="line"><a name="l04039"></a><span class="lineno"> 4039</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ad44e8b37a3221729dae6c0ce6189d708" title="Add a zero-initialization step.">AddZeroInitializationStep</a>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>());</div>
+<div class="line"><a name="l04040"></a><span class="lineno"> 4040</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04041"></a><span class="lineno"> 4041</span>   }</div>
+<div class="line"><a name="l04042"></a><span class="lineno"> 4042</span> }</div>
+<div class="line"><a name="l04043"></a><span class="lineno"> 4043</span> <span class="comment"></span></div>
+<div class="line"><a name="l04044"></a><span class="lineno"> 4044</span> <span class="comment">/// \brief Attempt a user-defined conversion between two types (C++ [dcl.init]),</span></div>
+<div class="line"><a name="l04045"></a><span class="lineno"> 4045</span> <span class="comment">/// which enumerates all conversion functions and performs overload resolution</span></div>
+<div class="line"><a name="l04046"></a><span class="lineno"> 4046</span> <span class="comment">/// to select the best.</span></div>
+<div class="line"><a name="l04047"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a167d4669144ef5378a3f34af7f33ef27"> 4047</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="namespaceclang.html#aed5f6b5c342b93ccd5c9b9e6b7345237" title="Tries a user-defined conversion from From to ToType.">TryUserDefinedConversion</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l04048"></a><span class="lineno"> 4048</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l04049"></a><span class="lineno"> 4049</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l04050"></a><span class="lineno"> 4050</span>                                      <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer,</div>
+<div class="line"><a name="l04051"></a><span class="lineno"> 4051</span>                                      <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence,</div>
+<div class="line"><a name="l04052"></a><span class="lineno"> 4052</span>                                      <span class="keywordtype">bool</span> TopLevelOfInitList) {</div>
+<div class="line"><a name="l04053"></a><span class="lineno"> 4053</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DestType = Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>();</div>
+<div class="line"><a name="l04054"></a><span class="lineno"> 4054</span>   assert(!DestType-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>() && <span class="stringliteral">"References are handled elsewhere"</span>);</div>
+<div class="line"><a name="l04055"></a><span class="lineno"> 4055</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> SourceType = Initializer-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l04056"></a><span class="lineno"> 4056</span>   assert((DestType-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>() || SourceType->isRecordType()) &&</div>
+<div class="line"><a name="l04057"></a><span class="lineno"> 4057</span>          <span class="stringliteral">"Must have a class type to perform a user-defined conversion"</span>);</div>
+<div class="line"><a name="l04058"></a><span class="lineno"> 4058</span> </div>
+<div class="line"><a name="l04059"></a><span class="lineno"> 4059</span>   <span class="comment">// Build the candidate set directly in the initialization sequence</span></div>
+<div class="line"><a name="l04060"></a><span class="lineno"> 4060</span>   <span class="comment">// structure, so that it will persist if we fail.</span></div>
+<div class="line"><a name="l04061"></a><span class="lineno"> 4061</span>   <a class="code" href="classclang_1_1OverloadCandidateSet.html">OverloadCandidateSet</a> &<a class="code" href="SemaOverload_8cpp.html#abc89d2b7943972f58bc9ca9737021197">CandidateSet</a> = Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#abb61b1c5e1208b7df98012b7c97280ff" title="Retrieve a reference to the candidate set when overload resolution fails.">getFailedCandidateSet</a>();</div>
+<div class="line"><a name="l04062"></a><span class="lineno"> 4062</span>   CandidateSet.<a class="code" href="classclang_1_1OverloadCandidateSet.html#a6f6c5929d473ed909051676ff098f71c" title="Clear out all of the candidates.">clear</a>();</div>
+<div class="line"><a name="l04063"></a><span class="lineno"> 4063</span> </div>
+<div class="line"><a name="l04064"></a><span class="lineno"> 4064</span>   <span class="comment">// Determine whether we are allowed to call explicit constructors or</span></div>
+<div class="line"><a name="l04065"></a><span class="lineno"> 4065</span>   <span class="comment">// explicit conversion operators.</span></div>
+<div class="line"><a name="l04066"></a><span class="lineno"> 4066</span>   <span class="keywordtype">bool</span> AllowExplicit = Kind.<a class="code" href="classclang_1_1InitializationKind.html#ab23e149dd729c4dbfe373ef308bd795e" title="Retrieve whether this initialization allows the use of explicit constructors.">AllowExplicit</a>();</div>
+<div class="line"><a name="l04067"></a><span class="lineno"> 4067</span> </div>
+<div class="line"><a name="l04068"></a><span class="lineno"> 4068</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *DestRecordType = DestType-><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="l04069"></a><span class="lineno"> 4069</span>     <span class="comment">// The type we're converting to is a class type. Enumerate its constructors</span></div>
+<div class="line"><a name="l04070"></a><span class="lineno"> 4070</span>     <span class="comment">// to see if there is a suitable conversion.</span></div>
+<div class="line"><a name="l04071"></a><span class="lineno"> 4071</span>     <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *DestRecordDecl</div>
+<div class="line"><a name="l04072"></a><span class="lineno"> 4072</span>       = cast<CXXRecordDecl>(DestRecordType->getDecl());</div>
+<div class="line"><a name="l04073"></a><span class="lineno"> 4073</span> </div>
+<div class="line"><a name="l04074"></a><span class="lineno"> 4074</span>     <span class="comment">// Try to complete the type we're converting to.</span></div>
+<div class="line"><a name="l04075"></a><span class="lineno"> 4075</span>     <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(Kind.<a class="code" href="classclang_1_1InitializationKind.html#a7a69dd5cd1cd248bb049b57244e7a20d" title="Retrieve the location at which initialization is occurring.">getLocation</a>(), DestType, 0)) {</div>
+<div class="line"><a name="l04076"></a><span class="lineno"> 4076</span>       <a class="code" href="classclang_1_1DeclContext.html#ac25dc34eabe6c4e035c76dd3329e8530">DeclContext::lookup_result</a> R = S.<a class="code" href="classclang_1_1Sema.html#af6ed9855dadff52cd89e04be53ea94a3" title="Look up the constructors for the given class.">LookupConstructors</a>(DestRecordDecl);</div>
+<div class="line"><a name="l04077"></a><span class="lineno"> 4077</span>       <span class="comment">// The container holding the constructors can under certain conditions</span></div>
+<div class="line"><a name="l04078"></a><span class="lineno"> 4078</span>       <span class="comment">// be changed while iterating. To be safe we copy the lookup results</span></div>
+<div class="line"><a name="l04079"></a><span class="lineno"> 4079</span>       <span class="comment">// to a new container.</span></div>
+<div class="line"><a name="l04080"></a><span class="lineno"> 4080</span>       <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<NamedDecl*, 8></a> CopyOfCon(R.begin(), R.end());</div>
+<div class="line"><a name="l04081"></a><span class="lineno"> 4081</span>       <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<NamedDecl *>::iterator</a></div>
+<div class="line"><a name="l04082"></a><span class="lineno"> 4082</span>              Con = CopyOfCon.begin(), ConEnd = CopyOfCon.end();</div>
+<div class="line"><a name="l04083"></a><span class="lineno"> 4083</span>            Con != ConEnd; ++Con) {</div>
+<div class="line"><a name="l04084"></a><span class="lineno"> 4084</span>         <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *D = *Con;</div>
+<div class="line"><a name="l04085"></a><span class="lineno"> 4085</span>         <a class="code" href="classclang_1_1DeclAccessPair.html">DeclAccessPair</a> FoundDecl = <a class="code" href="classclang_1_1DeclAccessPair.html#a40bf16940069615f789f599664048241">DeclAccessPair::make</a>(D, D-><a class="code" href="classclang_1_1Decl.html#a81e82461f69e9a50e129ef4bfac42987">getAccess</a>());</div>
+<div class="line"><a name="l04086"></a><span class="lineno"> 4086</span> </div>
+<div class="line"><a name="l04087"></a><span class="lineno"> 4087</span>         <span class="comment">// Find the constructor (which may be a template).</span></div>
+<div class="line"><a name="l04088"></a><span class="lineno"> 4088</span>         <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *Constructor = 0;</div>
+<div class="line"><a name="l04089"></a><span class="lineno"> 4089</span>         <a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *ConstructorTmpl</div>
+<div class="line"><a name="l04090"></a><span class="lineno"> 4090</span>           = dyn_cast<<a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a>>(D);</div>
+<div class="line"><a name="l04091"></a><span class="lineno"> 4091</span>         <span class="keywordflow">if</span> (ConstructorTmpl)</div>
+<div class="line"><a name="l04092"></a><span class="lineno"> 4092</span>           Constructor = cast<CXXConstructorDecl>(</div>
+<div class="line"><a name="l04093"></a><span class="lineno"> 4093</span>                                            ConstructorTmpl-><a class="code" href="classclang_1_1FunctionTemplateDecl.html#ad81ffc46ec5f0ff58641b23a787c55e5" title="Get the underlying function declaration of the template.">getTemplatedDecl</a>());</div>
+<div class="line"><a name="l04094"></a><span class="lineno"> 4094</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04095"></a><span class="lineno"> 4095</span>           Constructor = cast<CXXConstructorDecl>(D);</div>
+<div class="line"><a name="l04096"></a><span class="lineno"> 4096</span> </div>
+<div class="line"><a name="l04097"></a><span class="lineno"> 4097</span>         <span class="keywordflow">if</span> (!Constructor->isInvalidDecl() &&</div>
+<div class="line"><a name="l04098"></a><span class="lineno"> 4098</span>             Constructor->isConvertingConstructor(AllowExplicit)) {</div>
+<div class="line"><a name="l04099"></a><span class="lineno"> 4099</span>           <span class="keywordflow">if</span> (ConstructorTmpl)</div>
+<div class="line"><a name="l04100"></a><span class="lineno"> 4100</span>             S.<a class="code" href="classclang_1_1Sema.html#a6ffe5bc5b099f86017db0ce416fb64dd" title="Add a C++ function template specialization as a candidate in the candidate set, using template argume...">AddTemplateOverloadCandidate</a>(ConstructorTmpl, FoundDecl,</div>
+<div class="line"><a name="l04101"></a><span class="lineno"> 4101</span>                                            <span class="comment">/*ExplicitArgs*/</span> 0,</div>
+<div class="line"><a name="l04102"></a><span class="lineno"> 4102</span>                                            Initializer, CandidateSet,</div>
+<div class="line"><a name="l04103"></a><span class="lineno"> 4103</span>                                            <span class="comment">/*SuppressUserConversions=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l04104"></a><span class="lineno"> 4104</span>           <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04105"></a><span class="lineno"> 4105</span>             S.<a class="code" href="classclang_1_1Sema.html#a2a561b311be40457703ba2c78768c0ee">AddOverloadCandidate</a>(Constructor, FoundDecl,</div>
+<div class="line"><a name="l04106"></a><span class="lineno"> 4106</span>                                    Initializer, CandidateSet,</div>
+<div class="line"><a name="l04107"></a><span class="lineno"> 4107</span>                                    <span class="comment">/*SuppressUserConversions=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l04108"></a><span class="lineno"> 4108</span>         }</div>
+<div class="line"><a name="l04109"></a><span class="lineno"> 4109</span>       }</div>
+<div class="line"><a name="l04110"></a><span class="lineno"> 4110</span>     }</div>
+<div class="line"><a name="l04111"></a><span class="lineno"> 4111</span>   }</div>
+<div class="line"><a name="l04112"></a><span class="lineno"> 4112</span> </div>
+<div class="line"><a name="l04113"></a><span class="lineno"> 4113</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> DeclLoc = Initializer-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l04114"></a><span class="lineno"> 4114</span> </div>
+<div class="line"><a name="l04115"></a><span class="lineno"> 4115</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *SourceRecordType = SourceType-><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="l04116"></a><span class="lineno"> 4116</span>     <span class="comment">// The type we're converting from is a class type, enumerate its conversion</span></div>
+<div class="line"><a name="l04117"></a><span class="lineno"> 4117</span>     <span class="comment">// functions.</span></div>
+<div class="line"><a name="l04118"></a><span class="lineno"> 4118</span> </div>
+<div class="line"><a name="l04119"></a><span class="lineno"> 4119</span>     <span class="comment">// We can only enumerate the conversion functions for a complete type; if</span></div>
+<div class="line"><a name="l04120"></a><span class="lineno"> 4120</span>     <span class="comment">// the type isn't complete, simply skip this step.</span></div>
+<div class="line"><a name="l04121"></a><span class="lineno"> 4121</span>     <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(DeclLoc, SourceType, 0)) {</div>
+<div class="line"><a name="l04122"></a><span class="lineno"> 4122</span>       <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *SourceRecordDecl</div>
+<div class="line"><a name="l04123"></a><span class="lineno"> 4123</span>         = cast<CXXRecordDecl>(SourceRecordType->getDecl());</div>
+<div class="line"><a name="l04124"></a><span class="lineno"> 4124</span> </div>
+<div class="line"><a name="l04125"></a><span class="lineno"> 4125</span>       std::pair<<a class="code" href="classclang_1_1CXXRecordDecl.html#a17223594351434d1c96fbacfb8907b08">CXXRecordDecl::conversion_iterator</a>,</div>
+<div class="line"><a name="l04126"></a><span class="lineno"> 4126</span>                 CXXRecordDecl::conversion_iterator></div>
+<div class="line"><a name="l04127"></a><span class="lineno"> 4127</span>         Conversions = SourceRecordDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#ac27f1f70a41c93a5b10a28a9989cc2ab" title="Get all conversion functions visible in current class, including conversion function templates...">getVisibleConversionFunctions</a>();</div>
+<div class="line"><a name="l04128"></a><span class="lineno"> 4128</span>       <span class="keywordflow">for</span> (CXXRecordDecl::conversion_iterator</div>
+<div class="line"><a name="l04129"></a><span class="lineno"> 4129</span>              I = Conversions.first, E = Conversions.second; I != E; ++I) {</div>
+<div class="line"><a name="l04130"></a><span class="lineno"> 4130</span>         <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *D = *I;</div>
+<div class="line"><a name="l04131"></a><span class="lineno"> 4131</span>         <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ActingDC = cast<CXXRecordDecl>(D-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>());</div>
+<div class="line"><a name="l04132"></a><span class="lineno"> 4132</span>         <span class="keywordflow">if</span> (isa<UsingShadowDecl>(D))</div>
+<div class="line"><a name="l04133"></a><span class="lineno"> 4133</span>           D = cast<UsingShadowDecl>(D)->getTargetDecl();</div>
+<div class="line"><a name="l04134"></a><span class="lineno"> 4134</span> </div>
+<div class="line"><a name="l04135"></a><span class="lineno"> 4135</span>         <a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *ConvTemplate = dyn_cast<<a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a>>(D);</div>
+<div class="line"><a name="l04136"></a><span class="lineno"> 4136</span>         <a class="code" href="classclang_1_1CXXConversionDecl.html" title="Represents a C++ conversion function within a class.">CXXConversionDecl</a> *Conv;</div>
+<div class="line"><a name="l04137"></a><span class="lineno"> 4137</span>         <span class="keywordflow">if</span> (ConvTemplate)</div>
+<div class="line"><a name="l04138"></a><span class="lineno"> 4138</span>           Conv = cast<CXXConversionDecl>(ConvTemplate-><a class="code" href="classclang_1_1FunctionTemplateDecl.html#ad81ffc46ec5f0ff58641b23a787c55e5" title="Get the underlying function declaration of the template.">getTemplatedDecl</a>());</div>
+<div class="line"><a name="l04139"></a><span class="lineno"> 4139</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04140"></a><span class="lineno"> 4140</span>           Conv = cast<CXXConversionDecl>(D);</div>
+<div class="line"><a name="l04141"></a><span class="lineno"> 4141</span> </div>
+<div class="line"><a name="l04142"></a><span class="lineno"> 4142</span>         <span class="keywordflow">if</span> (AllowExplicit || !Conv->isExplicit()) {</div>
+<div class="line"><a name="l04143"></a><span class="lineno"> 4143</span>           <span class="keywordflow">if</span> (ConvTemplate)</div>
+<div class="line"><a name="l04144"></a><span class="lineno"> 4144</span>             S.<a class="code" href="classclang_1_1Sema.html#a7bb42b4f84b13f1df6027cb663408399" title="Adds a conversion function template specialization candidate to the overload set, using template argu...">AddTemplateConversionCandidate</a>(ConvTemplate, I.getPair(),</div>
+<div class="line"><a name="l04145"></a><span class="lineno"> 4145</span>                                              ActingDC, Initializer, DestType,</div>
+<div class="line"><a name="l04146"></a><span class="lineno"> 4146</span>                                              <a class="code" href="SemaOverload_8cpp.html#abc89d2b7943972f58bc9ca9737021197">CandidateSet</a>);</div>
+<div class="line"><a name="l04147"></a><span class="lineno"> 4147</span>           <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04148"></a><span class="lineno"> 4148</span>             S.<a class="code" href="classclang_1_1Sema.html#af01d37f7cefc109ccbc083eaa797e927">AddConversionCandidate</a>(Conv, I.getPair(), ActingDC,</div>
+<div class="line"><a name="l04149"></a><span class="lineno"> 4149</span>                                      Initializer, DestType, <a class="code" href="SemaOverload_8cpp.html#abc89d2b7943972f58bc9ca9737021197">CandidateSet</a>);</div>
+<div class="line"><a name="l04150"></a><span class="lineno"> 4150</span>         }</div>
+<div class="line"><a name="l04151"></a><span class="lineno"> 4151</span>       }</div>
+<div class="line"><a name="l04152"></a><span class="lineno"> 4152</span>     }</div>
+<div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>   }</div>
+<div class="line"><a name="l04154"></a><span class="lineno"> 4154</span> </div>
+<div class="line"><a name="l04155"></a><span class="lineno"> 4155</span>   <span class="comment">// Perform overload resolution. If it fails, return the failed result.</span></div>
+<div class="line"><a name="l04156"></a><span class="lineno"> 4156</span>   <a class="code" href="classclang_1_1OverloadCandidateSet.html#abe5a94cc940d49a8f336131a22c41600">OverloadCandidateSet::iterator</a> Best;</div>
+<div class="line"><a name="l04157"></a><span class="lineno"> 4157</span>   <span class="keywordflow">if</span> (<a class="code" href="namespaceclang.html#a19ab53643ad18c4a87afb5c88fb625b2">OverloadingResult</a> Result</div>
+<div class="line"><a name="l04158"></a><span class="lineno"> 4158</span>         = CandidateSet.<a class="code" href="classclang_1_1OverloadCandidateSet.html#a163568829049a9d0a0ed4596049b8360" title="Find the best viable function on this overload set, if it exists.">BestViableFunction</a>(S, DeclLoc, Best, <span class="keyword">true</span>)) {</div>
+<div class="line"><a name="l04159"></a><span class="lineno"> 4159</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a8da1a2bd14c2827cc95fd6f3d2eed7d4" title="Note that this initialization sequence failed due to failed overload resolution.">SetOverloadFailure</a>(</div>
+<div class="line"><a name="l04160"></a><span class="lineno"> 4160</span>                         <a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a0485a83cf104826f130bb326d67467b0" title="Overloading for a user-defined conversion failed.">InitializationSequence::FK_UserConversionOverloadFailed</a>,</div>
+<div class="line"><a name="l04161"></a><span class="lineno"> 4161</span>                                 Result);</div>
+<div class="line"><a name="l04162"></a><span class="lineno"> 4162</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04163"></a><span class="lineno"> 4163</span>   }</div>
+<div class="line"><a name="l04164"></a><span class="lineno"> 4164</span> </div>
+<div class="line"><a name="l04165"></a><span class="lineno"> 4165</span>   <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *Function = Best->Function;</div>
+<div class="line"><a name="l04166"></a><span class="lineno"> 4166</span>   Function-><a class="code" href="classclang_1_1Decl.html#aa8edfe1810cd86e605a11febe018f5dd">setReferenced</a>();</div>
+<div class="line"><a name="l04167"></a><span class="lineno"> 4167</span>   <span class="keywordtype">bool</span> HadMultipleCandidates = (CandidateSet.<a class="code" href="classclang_1_1OverloadCandidateSet.html#a5e58a204135f45d54ee0361b7d8b47da">size</a>() > 1);</div>
+<div class="line"><a name="l04168"></a><span class="lineno"> 4168</span> </div>
+<div class="line"><a name="l04169"></a><span class="lineno"> 4169</span>   <span class="keywordflow">if</span> (isa<CXXConstructorDecl>(Function)) {</div>
+<div class="line"><a name="l04170"></a><span class="lineno"> 4170</span>     <span class="comment">// Add the user-defined conversion step. Any cv-qualification conversion is</span></div>
+<div class="line"><a name="l04171"></a><span class="lineno"> 4171</span>     <span class="comment">// subsumed by the initialization. Per DR5, the created temporary is of the</span></div>
+<div class="line"><a name="l04172"></a><span class="lineno"> 4172</span>     <span class="comment">// cv-unqualified type of the destination.</span></div>
+<div class="line"><a name="l04173"></a><span class="lineno"> 4173</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a3667a1b611fd2acfc6d8b772f91fa506" title="Add a new step invoking a conversion function, which is either a constructor or a conversion function...">AddUserConversionStep</a>(Function, Best->FoundDecl,</div>
+<div class="line"><a name="l04174"></a><span class="lineno"> 4174</span>                                    DestType.<a class="code" href="classclang_1_1QualType.html#a5ddbce9d32b4f8043b641584599fe7e5" title="Retrieve the unqualified variant of the given type, removing as little sugar as possible.">getUnqualifiedType</a>(),</div>
+<div class="line"><a name="l04175"></a><span class="lineno"> 4175</span>                                    HadMultipleCandidates);</div>
+<div class="line"><a name="l04176"></a><span class="lineno"> 4176</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04177"></a><span class="lineno"> 4177</span>   }</div>
+<div class="line"><a name="l04178"></a><span class="lineno"> 4178</span> </div>
+<div class="line"><a name="l04179"></a><span class="lineno"> 4179</span>   <span class="comment">// Add the user-defined conversion step that calls the conversion function.</span></div>
+<div class="line"><a name="l04180"></a><span class="lineno"> 4180</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ConvType = Function-><a class="code" href="classclang_1_1FunctionDecl.html#ac032681ca24174109591c0873f3ff471" title="Determine the type of an expression that calls this function.">getCallResultType</a>();</div>
+<div class="line"><a name="l04181"></a><span class="lineno"> 4181</span>   <span class="keywordflow">if</span> (ConvType-><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="l04182"></a><span class="lineno"> 4182</span>     <span class="comment">// If we're converting to a class type, there may be an copy of</span></div>
+<div class="line"><a name="l04183"></a><span class="lineno"> 4183</span>     <span class="comment">// the resulting temporary object (possible to create an object of</span></div>
+<div class="line"><a name="l04184"></a><span class="lineno"> 4184</span>     <span class="comment">// a base class type). That copy is not a separate conversion, so</span></div>
+<div class="line"><a name="l04185"></a><span class="lineno"> 4185</span>     <span class="comment">// we just make a note of the actual destination type (possibly a</span></div>
+<div class="line"><a name="l04186"></a><span class="lineno"> 4186</span>     <span class="comment">// base class of the type returned by the conversion function) and</span></div>
+<div class="line"><a name="l04187"></a><span class="lineno"> 4187</span>     <span class="comment">// let the user-defined conversion step handle the conversion.</span></div>
+<div class="line"><a name="l04188"></a><span class="lineno"> 4188</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a3667a1b611fd2acfc6d8b772f91fa506" title="Add a new step invoking a conversion function, which is either a constructor or a conversion function...">AddUserConversionStep</a>(Function, Best->FoundDecl, DestType,</div>
+<div class="line"><a name="l04189"></a><span class="lineno"> 4189</span>                                    HadMultipleCandidates);</div>
+<div class="line"><a name="l04190"></a><span class="lineno"> 4190</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04191"></a><span class="lineno"> 4191</span>   }</div>
+<div class="line"><a name="l04192"></a><span class="lineno"> 4192</span> </div>
+<div class="line"><a name="l04193"></a><span class="lineno"> 4193</span>   Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#a3667a1b611fd2acfc6d8b772f91fa506" title="Add a new step invoking a conversion function, which is either a constructor or a conversion function...">AddUserConversionStep</a>(Function, Best->FoundDecl, ConvType,</div>
+<div class="line"><a name="l04194"></a><span class="lineno"> 4194</span>                                  HadMultipleCandidates);</div>
+<div class="line"><a name="l04195"></a><span class="lineno"> 4195</span> </div>
+<div class="line"><a name="l04196"></a><span class="lineno"> 4196</span>   <span class="comment">// If the conversion following the call to the conversion function</span></div>
+<div class="line"><a name="l04197"></a><span class="lineno"> 4197</span>   <span class="comment">// is interesting, add it as a separate step.</span></div>
+<div class="line"><a name="l04198"></a><span class="lineno"> 4198</span>   <span class="keywordflow">if</span> (Best->FinalConversion.First || Best->FinalConversion.Second ||</div>
+<div class="line"><a name="l04199"></a><span class="lineno"> 4199</span>       Best->FinalConversion.Third) {</div>
+<div class="line"><a name="l04200"></a><span class="lineno"> 4200</span>     <a class="code" href="classclang_1_1ImplicitConversionSequence.html">ImplicitConversionSequence</a> ICS;</div>
+<div class="line"><a name="l04201"></a><span class="lineno"> 4201</span>     ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4daa2a30752a19f36dfafe64d0794f03">setStandard</a>();</div>
+<div class="line"><a name="l04202"></a><span class="lineno"> 4202</span>     ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a> = Best->FinalConversion;</div>
+<div class="line"><a name="l04203"></a><span class="lineno"> 4203</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ad2bdc93c890e75998e73fcbf5e538035" title="Add a new step that applies an implicit conversion sequence.">AddConversionSequenceStep</a>(ICS, DestType, TopLevelOfInitList);</div>
+<div class="line"><a name="l04204"></a><span class="lineno"> 4204</span>   }</div>
+<div class="line"><a name="l04205"></a><span class="lineno"> 4205</span> }</div>
+<div class="line"><a name="l04206"></a><span class="lineno"> 4206</span> <span class="comment"></span></div>
+<div class="line"><a name="l04207"></a><span class="lineno"> 4207</span> <span class="comment">/// An egregious hack for compatibility with libstdc++-4.2: in <tr1/hashtable>,</span></div>
+<div class="line"><a name="l04208"></a><span class="lineno"> 4208</span> <span class="comment">/// a function with a pointer return type contains a 'return false;' statement.</span></div>
+<div class="line"><a name="l04209"></a><span class="lineno"> 4209</span> <span class="comment">/// In C++11, 'false' is not a null pointer, so this breaks the build of any</span></div>
+<div class="line"><a name="l04210"></a><span class="lineno"> 4210</span> <span class="comment">/// code using that header.</span></div>
+<div class="line"><a name="l04211"></a><span class="lineno"> 4211</span> <span class="comment">///</span></div>
+<div class="line"><a name="l04212"></a><span class="lineno"> 4212</span> <span class="comment">/// Work around this by treating 'return false;' as zero-initializing the result</span></div>
+<div class="line"><a name="l04213"></a><span class="lineno"> 4213</span> <span class="comment">/// if it's used in a pointer-returning function in a system header.</span></div>
+<div class="line"><a name="l04214"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#af6ef31cce10605e141fc3843680c9e34"> 4214</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaInit_8cpp.html#af6ef31cce10605e141fc3843680c9e34">isLibstdcxxPointerReturnFalseHack</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l04215"></a><span class="lineno"> 4215</span>                                               <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l04216"></a><span class="lineno"> 4216</span>                                               <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init) {</div>
+<div class="line"><a name="l04217"></a><span class="lineno"> 4217</span>   <span class="keywordflow">return</span> S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus11 &&</div>
+<div class="line"><a name="l04218"></a><span class="lineno"> 4218</span>          Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a22f327e1c51a6322f89ceaef6be71908" title="Determine the kind of initialization.">getKind</a>() == <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a6f2be4544543917c1137af65688538d4" title="The entity being initialized is the result of a function call.">InitializedEntity::EK_Result</a> &&</div>
+<div class="line"><a name="l04219"></a><span class="lineno"> 4219</span>          Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>()-><a class="code" href="classclang_1_1Type.html#a1c0038a55083ee0a292a020038ee04d8">isPointerType</a>() &&</div>
+<div class="line"><a name="l04220"></a><span class="lineno"> 4220</span>          isa<CXXBoolLiteralExpr>(Init) &&</div>
+<div class="line"><a name="l04221"></a><span class="lineno"> 4221</span>          !cast<CXXBoolLiteralExpr>(Init)->getValue() &&</div>
+<div class="line"><a name="l04222"></a><span class="lineno"> 4222</span>          S.<a class="code" href="classclang_1_1Sema.html#aa6addac536d2911c8d411bfb1bd97fac">getSourceManager</a>().<a class="code" href="classclang_1_1SourceManager.html#a99c639318222119c75ea9c12f1aa5cf2" title="Returns if a SourceLocation is in a system header.">isInSystemHeader</a>(Init-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>());</div>
+<div class="line"><a name="l04223"></a><span class="lineno"> 4223</span> }</div>
+<div class="line"><a name="l04224"></a><span class="lineno"> 4224</span> <span class="comment"></span></div>
+<div class="line"><a name="l04225"></a><span class="lineno"> 4225</span> <span class="comment">/// The non-zero enum values here are indexes into diagnostic alternatives.</span></div>
+<div class="line"><a name="l04226"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0"> 4226</a></span> <span class="comment"></span><span class="keyword">enum</span> <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0" title="The non-zero enum values here are indexes into diagnostic alternatives.">InvalidICRKind</a> { <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0a0cffe837026a8677c516562152b70bf8">IIK_okay</a>, <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0a679b311d5b3c22c4555221a7556b96cc">IIK_nonlocal</a>, <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0abcdc88b417dd2cc530bc55edf600589f">IIK_nonscalar</a> };</div>
+<div class="line"><a name="l04227"></a><span class="lineno"> 4227</span> <span class="comment"></span></div>
+<div class="line"><a name="l04228"></a><span class="lineno"> 4228</span> <span class="comment">/// Determines whether this expression is an acceptable ICR source.</span></div>
+<div class="line"><a name="l04229"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#aff8c2472a9fc2152134cd61c869ce68d"> 4229</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0" title="The non-zero enum values here are indexes into diagnostic alternatives.">InvalidICRKind</a> <a class="code" href="SemaInit_8cpp.html#aff8c2472a9fc2152134cd61c869ce68d" title="Determines whether this expression is an acceptable ICR source.">isInvalidICRSource</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> &C, <a class="code" href="classclang_1_1Expr.html">Expr</a> *e,</div>
+<div class="line"><a name="l04230"></a><span class="lineno"> 4230</span>                                          <span class="keywordtype">bool</span> isAddressOf, <span class="keywordtype">bool</span> &isWeakAccess) {</div>
+<div class="line"><a name="l04231"></a><span class="lineno"> 4231</span>   <span class="comment">// Skip parens.</span></div>
+<div class="line"><a name="l04232"></a><span class="lineno"> 4232</span>   e = e-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l04233"></a><span class="lineno"> 4233</span> </div>
+<div class="line"><a name="l04234"></a><span class="lineno"> 4234</span>   <span class="comment">// Skip address-of nodes.</span></div>
+<div class="line"><a name="l04235"></a><span class="lineno"> 4235</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *op = dyn_cast<UnaryOperator>(e)) {</div>
+<div class="line"><a name="l04236"></a><span class="lineno"> 4236</span>     <span class="keywordflow">if</span> (op->getOpcode() == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa74539ddfc7ac7056cfaeeca1deed46be">UO_AddrOf</a>)</div>
+<div class="line"><a name="l04237"></a><span class="lineno"> 4237</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#aff8c2472a9fc2152134cd61c869ce68d" title="Determines whether this expression is an acceptable ICR source.">isInvalidICRSource</a>(C, op->getSubExpr(), <span class="comment">/*addressof*/</span> <span class="keyword">true</span>,</div>
+<div class="line"><a name="l04238"></a><span class="lineno"> 4238</span>                                 isWeakAccess);</div>
+<div class="line"><a name="l04239"></a><span class="lineno"> 4239</span> </div>
+<div class="line"><a name="l04240"></a><span class="lineno"> 4240</span>   <span class="comment">// Skip certain casts.</span></div>
+<div class="line"><a name="l04241"></a><span class="lineno"> 4241</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *ce = dyn_cast<CastExpr>(e)) {</div>
+<div class="line"><a name="l04242"></a><span class="lineno"> 4242</span>     <span class="keywordflow">switch</span> (ce->getCastKind()) {</div>
+<div class="line"><a name="l04243"></a><span class="lineno"> 4243</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca083127f65375358e525293ded6aa20ff">CK_Dependent</a>:</div>
+<div class="line"><a name="l04244"></a><span class="lineno"> 4244</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca183b8948b82911a415cc54446ddcb3ab">CK_BitCast</a>:</div>
+<div class="line"><a name="l04245"></a><span class="lineno"> 4245</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca26d313dc7aa71eb9a90dba577004ecdd">CK_LValueBitCast</a>:</div>
+<div class="line"><a name="l04246"></a><span class="lineno"> 4246</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>:</div>
+<div class="line"><a name="l04247"></a><span class="lineno"> 4247</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#aff8c2472a9fc2152134cd61c869ce68d" title="Determines whether this expression is an acceptable ICR source.">isInvalidICRSource</a>(C, ce->getSubExpr(), isAddressOf, isWeakAccess);</div>
+<div class="line"><a name="l04248"></a><span class="lineno"> 4248</span> </div>
+<div class="line"><a name="l04249"></a><span class="lineno"> 4249</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca966388c17db29effd052ff1f5da7f64f">CK_ArrayToPointerDecay</a>:</div>
+<div class="line"><a name="l04250"></a><span class="lineno"> 4250</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0abcdc88b417dd2cc530bc55edf600589f">IIK_nonscalar</a>;</div>
+<div class="line"><a name="l04251"></a><span class="lineno"> 4251</span> </div>
+<div class="line"><a name="l04252"></a><span class="lineno"> 4252</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca69507b9309c485f20be46a41f657630c">CK_NullToPointer</a>:</div>
+<div class="line"><a name="l04253"></a><span class="lineno"> 4253</span>       <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0a0cffe837026a8677c516562152b70bf8">IIK_okay</a>;</div>
+<div class="line"><a name="l04254"></a><span class="lineno"> 4254</span> </div>
+<div class="line"><a name="l04255"></a><span class="lineno"> 4255</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l04256"></a><span class="lineno"> 4256</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04257"></a><span class="lineno"> 4257</span>     }</div>
+<div class="line"><a name="l04258"></a><span class="lineno"> 4258</span> </div>
+<div class="line"><a name="l04259"></a><span class="lineno"> 4259</span>   <span class="comment">// If we have a declaration reference, it had better be a local variable.</span></div>
+<div class="line"><a name="l04260"></a><span class="lineno"> 4260</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isa<DeclRefExpr>(e)) {</div>
+<div class="line"><a name="l04261"></a><span class="lineno"> 4261</span>     <span class="comment">// set isWeakAccess to true, to mean that there will be an implicit </span></div>
+<div class="line"><a name="l04262"></a><span class="lineno"> 4262</span>     <span class="comment">// load which requires a cleanup.</span></div>
+<div class="line"><a name="l04263"></a><span class="lineno"> 4263</span>     <span class="keywordflow">if</span> (e-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>().<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>() == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300ad62a7a19d7027c37d407d2ca7638a89c" title="Reading or writing from this object requires a barrier call.">Qualifiers::OCL_Weak</a>)</div>
+<div class="line"><a name="l04264"></a><span class="lineno"> 4264</span>       isWeakAccess = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l04265"></a><span class="lineno"> 4265</span>     </div>
+<div class="line"><a name="l04266"></a><span class="lineno"> 4266</span>     <span class="keywordflow">if</span> (!isAddressOf) <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0a679b311d5b3c22c4555221a7556b96cc">IIK_nonlocal</a>;</div>
+<div class="line"><a name="l04267"></a><span class="lineno"> 4267</span> </div>
+<div class="line"><a name="l04268"></a><span class="lineno"> 4268</span>     <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *var = dyn_cast<<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a>>(cast<DeclRefExpr>(e)->getDecl());</div>
+<div class="line"><a name="l04269"></a><span class="lineno"> 4269</span>     <span class="keywordflow">if</span> (!var) <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0a679b311d5b3c22c4555221a7556b96cc">IIK_nonlocal</a>;</div>
+<div class="line"><a name="l04270"></a><span class="lineno"> 4270</span> </div>
+<div class="line"><a name="l04271"></a><span class="lineno"> 4271</span>     <span class="keywordflow">return</span> (var-><a class="code" href="classclang_1_1VarDecl.html#a86bb48bd6ced47b79a59af7df7108184">hasLocalStorage</a>() ? <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0a0cffe837026a8677c516562152b70bf8">IIK_okay</a> : <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0a679b311d5b3c22c4555221a7556b96cc">IIK_nonlocal</a>);</div>
+<div class="line"><a name="l04272"></a><span class="lineno"> 4272</span> </div>
+<div class="line"><a name="l04273"></a><span class="lineno"> 4273</span>   <span class="comment">// If we have a conditional operator, check both sides.</span></div>
+<div class="line"><a name="l04274"></a><span class="lineno"> 4274</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ConditionalOperator.html">ConditionalOperator</a> *cond = dyn_cast<ConditionalOperator>(e)) {</div>
+<div class="line"><a name="l04275"></a><span class="lineno"> 4275</span>     <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0" title="The non-zero enum values here are indexes into diagnostic alternatives.">InvalidICRKind</a> iik = <a class="code" href="SemaInit_8cpp.html#aff8c2472a9fc2152134cd61c869ce68d" title="Determines whether this expression is an acceptable ICR source.">isInvalidICRSource</a>(C, cond->getLHS(), isAddressOf,</div>
+<div class="line"><a name="l04276"></a><span class="lineno"> 4276</span>                                                 isWeakAccess))</div>
+<div class="line"><a name="l04277"></a><span class="lineno"> 4277</span>       <span class="keywordflow">return</span> iik;</div>
+<div class="line"><a name="l04278"></a><span class="lineno"> 4278</span> </div>
+<div class="line"><a name="l04279"></a><span class="lineno"> 4279</span>     <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#aff8c2472a9fc2152134cd61c869ce68d" title="Determines whether this expression is an acceptable ICR source.">isInvalidICRSource</a>(C, cond->getRHS(), isAddressOf, isWeakAccess);</div>
+<div class="line"><a name="l04280"></a><span class="lineno"> 4280</span> </div>
+<div class="line"><a name="l04281"></a><span class="lineno"> 4281</span>   <span class="comment">// These are never scalar.</span></div>
+<div class="line"><a name="l04282"></a><span class="lineno"> 4282</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isa<ArraySubscriptExpr>(e)) {</div>
+<div class="line"><a name="l04283"></a><span class="lineno"> 4283</span>     <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0abcdc88b417dd2cc530bc55edf600589f">IIK_nonscalar</a>;</div>
+<div class="line"><a name="l04284"></a><span class="lineno"> 4284</span> </div>
+<div class="line"><a name="l04285"></a><span class="lineno"> 4285</span>   <span class="comment">// Otherwise, it needs to be a null pointer constant.</span></div>
+<div class="line"><a name="l04286"></a><span class="lineno"> 4286</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04287"></a><span class="lineno"> 4287</span>     <span class="keywordflow">return</span> (e-><a class="code" href="classclang_1_1Expr.html#ab56d6fd074c831a3e63b45f4f226b35a">isNullPointerConstant</a>(C, <a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67a06279741aa9bc21d0a6d5be7aa7f06e7" title="Specifies that a value-dependent expression of integral or dependent type should be considered a null...">Expr::NPC_ValueDependentIsNull</a>)</div>
+<div class="line"><a name="l04288"></a><span class="lineno"> 4288</span>             ? <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0a0cffe837026a8677c516562152b70bf8">IIK_okay</a> : <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0a679b311d5b3c22c4555221a7556b96cc">IIK_nonlocal</a>);</div>
+<div class="line"><a name="l04289"></a><span class="lineno"> 4289</span>   }</div>
+<div class="line"><a name="l04290"></a><span class="lineno"> 4290</span> </div>
+<div class="line"><a name="l04291"></a><span class="lineno"> 4291</span>   <span class="keywordflow">return</span> <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0a679b311d5b3c22c4555221a7556b96cc">IIK_nonlocal</a>;</div>
+<div class="line"><a name="l04292"></a><span class="lineno"> 4292</span> }</div>
+<div class="line"><a name="l04293"></a><span class="lineno"> 4293</span> <span class="comment"></span></div>
+<div class="line"><a name="l04294"></a><span class="lineno"> 4294</span> <span class="comment">/// Check whether the given expression is a valid operand for an</span></div>
+<div class="line"><a name="l04295"></a><span class="lineno"> 4295</span> <span class="comment">/// indirect copy/restore.</span></div>
+<div class="line"><a name="l04296"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#adc76b2e4aac6c6ba0fec4e730a7e0dda"> 4296</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaInit_8cpp.html#adc76b2e4aac6c6ba0fec4e730a7e0dda">checkIndirectCopyRestoreSource</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S, <a class="code" href="classclang_1_1Expr.html">Expr</a> *src) {</div>
+<div class="line"><a name="l04297"></a><span class="lineno"> 4297</span>   assert(src-><a class="code" href="classclang_1_1Expr.html#a4cd56ea13000be78c5459f10df89e84a">isRValue</a>());</div>
+<div class="line"><a name="l04298"></a><span class="lineno"> 4298</span>   <span class="keywordtype">bool</span> isWeakAccess = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l04299"></a><span class="lineno"> 4299</span>   <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0" title="The non-zero enum values here are indexes into diagnostic alternatives.">InvalidICRKind</a> iik = <a class="code" href="SemaInit_8cpp.html#aff8c2472a9fc2152134cd61c869ce68d" title="Determines whether this expression is an acceptable ICR source.">isInvalidICRSource</a>(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, src, <span class="keyword">false</span>, isWeakAccess);</div>
+<div class="line"><a name="l04300"></a><span class="lineno"> 4300</span>   <span class="comment">// If isWeakAccess to true, there will be an implicit </span></div>
+<div class="line"><a name="l04301"></a><span class="lineno"> 4301</span>   <span class="comment">// load which requires a cleanup.</span></div>
+<div class="line"><a name="l04302"></a><span class="lineno"> 4302</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount && isWeakAccess)</div>
+<div class="line"><a name="l04303"></a><span class="lineno"> 4303</span>     S.<a class="code" href="classclang_1_1Sema.html#ae7c2b611e8868d3f2fcb291da88f5ea7">ExprNeedsCleanups</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l04304"></a><span class="lineno"> 4304</span>   </div>
+<div class="line"><a name="l04305"></a><span class="lineno"> 4305</span>   <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (iik == <a class="code" href="SemaInit_8cpp.html#aebfded36f40b144e35aa472172eb94a0a0cffe837026a8677c516562152b70bf8">IIK_okay</a>) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04306"></a><span class="lineno"> 4306</span> </div>
+<div class="line"><a name="l04307"></a><span class="lineno"> 4307</span>   S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(src-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>(), diag::err_arc_nonlocal_writeback)</div>
+<div class="line"><a name="l04308"></a><span class="lineno"> 4308</span>     << ((<span class="keywordtype">unsigned</span>) iik - 1)  <span class="comment">// shift index into diagnostic explanations</span></div>
+<div class="line"><a name="l04309"></a><span class="lineno"> 4309</span>     << src-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l04310"></a><span class="lineno"> 4310</span> }</div>
+<div class="line"><a name="l04311"></a><span class="lineno"> 4311</span> <span class="comment"></span></div>
+<div class="line"><a name="l04312"></a><span class="lineno"> 4312</span> <span class="comment">/// \brief Determine whether we have compatible array types for the</span></div>
+<div class="line"><a name="l04313"></a><span class="lineno"> 4313</span> <span class="comment">/// purposes of GNU by-copy array initialization.</span></div>
+<div class="line"><a name="l04314"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#aabeda222f039d52f99c15e399c55b3a5"> 4314</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaInit_8cpp.html#aabeda222f039d52f99c15e399c55b3a5" title="Determine whether we have compatible array types for the purposes of GNU by-copy array initialization...">hasCompatibleArrayTypes</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> &Context,</div>
+<div class="line"><a name="l04315"></a><span class="lineno"> 4315</span>                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *Dest, </div>
+<div class="line"><a name="l04316"></a><span class="lineno"> 4316</span>                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *Source) {</div>
+<div class="line"><a name="l04317"></a><span class="lineno"> 4317</span>   <span class="comment">// If the source and destination array types are equivalent, we're</span></div>
+<div class="line"><a name="l04318"></a><span class="lineno"> 4318</span>   <span class="comment">// done.</span></div>
+<div class="line"><a name="l04319"></a><span class="lineno"> 4319</span>   <span class="keywordflow">if</span> (Context.<a class="code" href="classclang_1_1ASTContext.html#a889b9d309fdc236f1eab037484f10f8a" title="Determine whether the given types T1 and T2 are equivalent.">hasSameType</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a>(Dest, 0), <a class="code" href="classclang_1_1QualType.html">QualType</a>(Source, 0)))</div>
+<div class="line"><a name="l04320"></a><span class="lineno"> 4320</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l04321"></a><span class="lineno"> 4321</span> </div>
+<div class="line"><a name="l04322"></a><span class="lineno"> 4322</span>   <span class="comment">// Make sure that the element types are the same.</span></div>
+<div class="line"><a name="l04323"></a><span class="lineno"> 4323</span>   <span class="keywordflow">if</span> (!Context.<a class="code" href="classclang_1_1ASTContext.html#a889b9d309fdc236f1eab037484f10f8a" title="Determine whether the given types T1 and T2 are equivalent.">hasSameType</a>(Dest-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>(), Source-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>()))</div>
+<div class="line"><a name="l04324"></a><span class="lineno"> 4324</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l04325"></a><span class="lineno"> 4325</span> </div>
+<div class="line"><a name="l04326"></a><span class="lineno"> 4326</span>   <span class="comment">// The only mismatch we allow is when the destination is an</span></div>
+<div class="line"><a name="l04327"></a><span class="lineno"> 4327</span>   <span class="comment">// incomplete array type and the source is a constant array type.</span></div>
+<div class="line"><a name="l04328"></a><span class="lineno"> 4328</span>   <span class="keywordflow">return</span> Source-><a class="code" href="classclang_1_1Type.html#a8d3adfc31904ddd5a944cea189750f10">isConstantArrayType</a>() && Dest-><a class="code" href="classclang_1_1Type.html#a9394ebc74a8c7ad58b9f15abafcbbde2">isIncompleteArrayType</a>();</div>
+<div class="line"><a name="l04329"></a><span class="lineno"> 4329</span> }</div>
+<div class="line"><a name="l04330"></a><span class="lineno"> 4330</span> </div>
+<div class="line"><a name="l04331"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a185d0f51a0f43645acb404d2a5b4e98d"> 4331</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaInit_8cpp.html#a185d0f51a0f43645acb404d2a5b4e98d">tryObjCWritebackConversion</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l04332"></a><span class="lineno"> 4332</span>                                        <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence,</div>
+<div class="line"><a name="l04333"></a><span class="lineno"> 4333</span>                                        <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l04334"></a><span class="lineno"> 4334</span>                                        <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer) {</div>
+<div class="line"><a name="l04335"></a><span class="lineno"> 4335</span>   <span class="keywordtype">bool</span> ArrayDecay = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l04336"></a><span class="lineno"> 4336</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ArgType = Initializer-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l04337"></a><span class="lineno"> 4337</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ArgPointee;</div>
+<div class="line"><a name="l04338"></a><span class="lineno"> 4338</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *ArgArrayType = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(ArgType)) {</div>
+<div class="line"><a name="l04339"></a><span class="lineno"> 4339</span>     ArrayDecay = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l04340"></a><span class="lineno"> 4340</span>     ArgPointee = ArgArrayType->getElementType();</div>
+<div class="line"><a name="l04341"></a><span class="lineno"> 4341</span>     ArgType = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a3574cad49cba0fc48ab7b4c953e7e31e" title="Return the uniqued reference to the type for a pointer to the specified type.">getPointerType</a>(ArgPointee);</div>
+<div class="line"><a name="l04342"></a><span class="lineno"> 4342</span>   }</div>
+<div class="line"><a name="l04343"></a><span class="lineno"> 4343</span>       </div>
+<div class="line"><a name="l04344"></a><span class="lineno"> 4344</span>   <span class="comment">// Handle write-back conversion.</span></div>
+<div class="line"><a name="l04345"></a><span class="lineno"> 4345</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ConvertedArgType;</div>
+<div class="line"><a name="l04346"></a><span class="lineno"> 4346</span>   <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a23847473c555346d4e8db5fc6d5035fb" title="Determine whether this is an Objective-C writeback conversion, used for parameter passing when perfor...">isObjCWritebackConversion</a>(ArgType, Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>(),</div>
+<div class="line"><a name="l04347"></a><span class="lineno"> 4347</span>                                    ConvertedArgType))</div>
+<div class="line"><a name="l04348"></a><span class="lineno"> 4348</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l04349"></a><span class="lineno"> 4349</span> </div>
+<div class="line"><a name="l04350"></a><span class="lineno"> 4350</span>   <span class="comment">// We should copy unless we're passing to an argument explicitly</span></div>
+<div class="line"><a name="l04351"></a><span class="lineno"> 4351</span>   <span class="comment">// marked 'out'.</span></div>
+<div class="line"><a name="l04352"></a><span class="lineno"> 4352</span>   <span class="keywordtype">bool</span> ShouldCopy = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l04353"></a><span class="lineno"> 4353</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *param = cast_or_null<ParmVarDecl>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a612d72ea3c50c222159473b73a994e12" title="Retrieve the variable, parameter, or field being initialized.">getDecl</a>()))</div>
+<div class="line"><a name="l04354"></a><span class="lineno"> 4354</span>     ShouldCopy = (param->getObjCDeclQualifier() != <a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24ac040c99ecf4823345ad6a2b286ac2aa3">ParmVarDecl::OBJC_TQ_Out</a>);</div>
+<div class="line"><a name="l04355"></a><span class="lineno"> 4355</span> </div>
+<div class="line"><a name="l04356"></a><span class="lineno"> 4356</span>   <span class="comment">// Do we need an lvalue conversion?</span></div>
+<div class="line"><a name="l04357"></a><span class="lineno"> 4357</span>   <span class="keywordflow">if</span> (ArrayDecay || Initializer-><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>()) {</div>
+<div class="line"><a name="l04358"></a><span class="lineno"> 4358</span>     <a class="code" href="classclang_1_1ImplicitConversionSequence.html">ImplicitConversionSequence</a> ICS;</div>
+<div class="line"><a name="l04359"></a><span class="lineno"> 4359</span>     ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4daa2a30752a19f36dfafe64d0794f03">setStandard</a>();</div>
+<div class="line"><a name="l04360"></a><span class="lineno"> 4360</span>     ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#ae451863781ae7b1f47c29dc204fee406">setAsIdentityConversion</a>();</div>
+<div class="line"><a name="l04361"></a><span class="lineno"> 4361</span> </div>
+<div class="line"><a name="l04362"></a><span class="lineno"> 4362</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ResultType;</div>
+<div class="line"><a name="l04363"></a><span class="lineno"> 4363</span>     <span class="keywordflow">if</span> (ArrayDecay) {</div>
+<div class="line"><a name="l04364"></a><span class="lineno"> 4364</span>       ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#a62743a48c9d070ae3b2baadce4d87724">First</a> = <a class="code" href="namespaceclang.html#a7f714d77a5c17cf30811aced0af0de09a5e90905eb62e315f3ff3663493ce2d84" title="Array-to-pointer conversion (C++ 4.2)">ICK_Array_To_Pointer</a>;</div>
+<div class="line"><a name="l04365"></a><span class="lineno"> 4365</span>       ResultType = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a3574cad49cba0fc48ab7b4c953e7e31e" title="Return the uniqued reference to the type for a pointer to the specified type.">getPointerType</a>(ArgPointee);</div>
+<div class="line"><a name="l04366"></a><span class="lineno"> 4366</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04367"></a><span class="lineno"> 4367</span>       ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#a62743a48c9d070ae3b2baadce4d87724">First</a> = <a class="code" href="namespaceclang.html#a7f714d77a5c17cf30811aced0af0de09ab0fd898397be48530ae198aa6ca20843" title="Lvalue-to-rvalue conversion (C++ 4.1)">ICK_Lvalue_To_Rvalue</a>;</div>
+<div class="line"><a name="l04368"></a><span class="lineno"> 4368</span>       ResultType = Initializer-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>().<a class="code" href="classclang_1_1QualType.html#a89e3ea65c009b7a0ea76edc56076107c" title="Determine the type of a (typically non-lvalue) expression with the specified result type...">getNonLValueExprType</a>(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>);</div>
+<div class="line"><a name="l04369"></a><span class="lineno"> 4369</span>     }</div>
+<div class="line"><a name="l04370"></a><span class="lineno"> 4370</span>           </div>
+<div class="line"><a name="l04371"></a><span class="lineno"> 4371</span>     Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ad2bdc93c890e75998e73fcbf5e538035" title="Add a new step that applies an implicit conversion sequence.">AddConversionSequenceStep</a>(ICS, ResultType);</div>
+<div class="line"><a name="l04372"></a><span class="lineno"> 4372</span>   }</div>
+<div class="line"><a name="l04373"></a><span class="lineno"> 4373</span>         </div>
+<div class="line"><a name="l04374"></a><span class="lineno"> 4374</span>   Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#ac25be918259a7178bc33e812f49f67b3" title="Add a step to pass an object by indirect copy-restore.">AddPassByIndirectCopyRestoreStep</a>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>(), ShouldCopy);</div>
+<div class="line"><a name="l04375"></a><span class="lineno"> 4375</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l04376"></a><span class="lineno"> 4376</span> }</div>
+<div class="line"><a name="l04377"></a><span class="lineno"> 4377</span> </div>
+<div class="line"><a name="l04378"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#a5d5421309a9c19ec84492b0e53ab1973"> 4378</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaInit_8cpp.html#a5d5421309a9c19ec84492b0e53ab1973">TryOCLSamplerInitialization</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l04379"></a><span class="lineno"> 4379</span>                                         <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence,</div>
+<div class="line"><a name="l04380"></a><span class="lineno"> 4380</span>                                         <a class="code" href="classclang_1_1QualType.html">QualType</a> DestType,</div>
+<div class="line"><a name="l04381"></a><span class="lineno"> 4381</span>                                         <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer) {</div>
+<div class="line"><a name="l04382"></a><span class="lineno"> 4382</span>   <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().OpenCL || !DestType-><a class="code" href="classclang_1_1Type.html#a4d9ebeb18de34a65490facdfd7dc97fb">isSamplerT</a>() ||</div>
+<div class="line"><a name="l04383"></a><span class="lineno"> 4383</span>     !Initializer-><a class="code" href="classclang_1_1Expr.html#a9c2d6a6def36088d32a4238a684f37be">isIntegerConstantExpr</a>(S.<a class="code" href="classclang_1_1Sema.html#a67eff5b9492fff49360d8000819a6719">getASTContext</a>()))</div>
+<div class="line"><a name="l04384"></a><span class="lineno"> 4384</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l04385"></a><span class="lineno"> 4385</span> </div>
+<div class="line"><a name="l04386"></a><span class="lineno"> 4386</span>   Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#abaa1beae5de31403c510b994de8e24d0" title="Add a step to initialize an OpenCL sampler from an integer constant.">AddOCLSamplerInitStep</a>(DestType);</div>
+<div class="line"><a name="l04387"></a><span class="lineno"> 4387</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l04388"></a><span class="lineno"> 4388</span> }</div>
+<div class="line"><a name="l04389"></a><span class="lineno"> 4389</span> </div>
+<div class="line"><a name="l04390"></a><span class="lineno"> 4390</span> <span class="comment">//</span></div>
+<div class="line"><a name="l04391"></a><span class="lineno"> 4391</span> <span class="comment">// OpenCL 1.2 spec, s6.12.10</span></div>
+<div class="line"><a name="l04392"></a><span class="lineno"> 4392</span> <span class="comment">//</span></div>
+<div class="line"><a name="l04393"></a><span class="lineno"> 4393</span> <span class="comment">// The event argument can also be used to associate the</span></div>
+<div class="line"><a name="l04394"></a><span class="lineno"> 4394</span> <span class="comment">// async_work_group_copy with a previous async copy allowing</span></div>
+<div class="line"><a name="l04395"></a><span class="lineno"> 4395</span> <span class="comment">// an event to be shared by multiple async copies; otherwise</span></div>
+<div class="line"><a name="l04396"></a><span class="lineno"> 4396</span> <span class="comment">// event should be zero.</span></div>
+<div class="line"><a name="l04397"></a><span class="lineno"> 4397</span> <span class="comment">//</span></div>
+<div class="line"><a name="l04398"></a><span class="lineno"><a class="code" href="SemaInit_8cpp.html#abd758f8c42dfdf688b1b77e152182674"> 4398</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaInit_8cpp.html#abd758f8c42dfdf688b1b77e152182674">TryOCLZeroEventInitialization</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l04399"></a><span class="lineno"> 4399</span>                                           <a class="code" href="classclang_1_1InitializationSequence.html" title="Describes the sequence of initializations required to initialize a given object or reference with a s...">InitializationSequence</a> &Sequence,</div>
+<div class="line"><a name="l04400"></a><span class="lineno"> 4400</span>                                           <a class="code" href="classclang_1_1QualType.html">QualType</a> DestType,</div>
+<div class="line"><a name="l04401"></a><span class="lineno"> 4401</span>                                           <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer) {</div>
+<div class="line"><a name="l04402"></a><span class="lineno"> 4402</span>   <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().OpenCL || !DestType-><a class="code" href="classclang_1_1Type.html#aeda57a36edf0df0ff5765a0ce2f2e6c9">isEventT</a>() ||</div>
+<div class="line"><a name="l04403"></a><span class="lineno"> 4403</span>       !Initializer-><a class="code" href="classclang_1_1Expr.html#a9c2d6a6def36088d32a4238a684f37be">isIntegerConstantExpr</a>(S.<a class="code" href="classclang_1_1Sema.html#a67eff5b9492fff49360d8000819a6719">getASTContext</a>()) ||</div>
+<div class="line"><a name="l04404"></a><span class="lineno"> 4404</span>       (Initializer-><a class="code" href="classclang_1_1Expr.html#a9a303252fadd3163f7349daa10955aa4">EvaluateKnownConstInt</a>(S.<a class="code" href="classclang_1_1Sema.html#a67eff5b9492fff49360d8000819a6719">getASTContext</a>()) != 0))</div>
+<div class="line"><a name="l04405"></a><span class="lineno"> 4405</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l04406"></a><span class="lineno"> 4406</span> </div>
+<div class="line"><a name="l04407"></a><span class="lineno"> 4407</span>   Sequence.<a class="code" href="classclang_1_1InitializationSequence.html#afbafed4c7668638676e384499ad9db72" title="Add a step to initialize an OpenCL event_t from a NULL constant.">AddOCLZeroEventStep</a>(DestType);</div>
+<div class="line"><a name="l04408"></a><span class="lineno"> 4408</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l04409"></a><span class="lineno"> 4409</span> }</div>
+<div class="line"><a name="l04410"></a><span class="lineno"> 4410</span> </div>
+<div class="line"><a name="l04411"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a4e58426068ff2da34a6cc6e9a92b33c1"> 4411</a></span> <a class="code" href="classclang_1_1InitializationSequence.html#a4e58426068ff2da34a6cc6e9a92b33c1" title="Try to perform initialization of the given entity, creating a record of the steps required to perform...">InitializationSequence::InitializationSequence</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l04412"></a><span class="lineno"> 4412</span>                                                <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l04413"></a><span class="lineno"> 4413</span>                                                <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l04414"></a><span class="lineno"> 4414</span>                                                <a class="code" href="namespaceclang.html#a2cab300377c9fa787240e2d1d0f70e17">MultiExprArg</a> <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l04415"></a><span class="lineno"> 4415</span>                                                <span class="keywordtype">bool</span> TopLevelOfInitList)</div>
+<div class="line"><a name="l04416"></a><span class="lineno"> 4416</span>     : FailedCandidateSet(Kind.getLocation()) {</div>
+<div class="line"><a name="l04417"></a><span class="lineno"> 4417</span>   <a class="code" href="classclang_1_1InitializationSequence.html#a05edc2fd85c8f9d2ba556e219b488e58">InitializeFrom</a>(S, Entity, Kind, Args, TopLevelOfInitList);</div>
+<div class="line"><a name="l04418"></a><span class="lineno"> 4418</span> }</div>
+<div class="line"><a name="l04419"></a><span class="lineno"> 4419</span> </div>
+<div class="line"><a name="l04420"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a05edc2fd85c8f9d2ba556e219b488e58"> 4420</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitializationSequence.html#a05edc2fd85c8f9d2ba556e219b488e58">InitializationSequence::InitializeFrom</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &S,</div>
+<div class="line"><a name="l04421"></a><span class="lineno"> 4421</span>                                             <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializedEntity.html" title="Describes an entity that is being initialized.">InitializedEntity</a> &Entity,</div>
+<div class="line"><a name="l04422"></a><span class="lineno"> 4422</span>                                             <span class="keyword">const</span> <a class="code" href="classclang_1_1InitializationKind.html" title="Describes the kind of initialization being performed, along with location information for tokens rela...">InitializationKind</a> &Kind,</div>
+<div class="line"><a name="l04423"></a><span class="lineno"> 4423</span>                                             <a class="code" href="namespaceclang.html#a2cab300377c9fa787240e2d1d0f70e17">MultiExprArg</a> <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l04424"></a><span class="lineno"> 4424</span>                                             <span class="keywordtype">bool</span> TopLevelOfInitList) {</div>
+<div class="line"><a name="l04425"></a><span class="lineno"> 4425</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Context = S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>;</div>
+<div class="line"><a name="l04426"></a><span class="lineno"> 4426</span> </div>
+<div class="line"><a name="l04427"></a><span class="lineno"> 4427</span>   <span class="comment">// Eliminate non-overload placeholder types in the arguments.  We</span></div>
+<div class="line"><a name="l04428"></a><span class="lineno"> 4428</span>   <span class="comment">// need to do this before checking whether types are dependent</span></div>
+<div class="line"><a name="l04429"></a><span class="lineno"> 4429</span>   <span class="comment">// because lowering a pseudo-object expression might well give us</span></div>
+<div class="line"><a name="l04430"></a><span class="lineno"> 4430</span>   <span class="comment">// something of dependent type.</span></div>
+<div class="line"><a name="l04431"></a><span class="lineno"> 4431</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = Args.size(); I != E; ++I)</div>
+<div class="line"><a name="l04432"></a><span class="lineno"> 4432</span>     <span class="keywordflow">if</span> (Args[I]->getType()->isNonOverloadPlaceholderType()) {</div>
+<div class="line"><a name="l04433"></a><span class="lineno"> 4433</span>       <span class="comment">// FIXME: should we be doing this here?</span></div>
+<div class="line"><a name="l04434"></a><span class="lineno"> 4434</span>       <a class="code" href="classclang_1_1ActionResult.html">ExprResult</a> result = S.<a class="code" href="classclang_1_1Sema.html#a9d12142d23da0e25533837d7988ddda3">CheckPlaceholderExpr</a>(Args[I]);</div>
+<div class="line"><a name="l04435"></a><span class="lineno"> 4435</span>       <span class="keywordflow">if</span> (result.<a class="code" href="classclang_1_1ActionResult.html#ac9ac9ca2df07fbb1931300e2a926351a">isInvalid</a>()) {</div>
+<div class="line"><a name="l04436"></a><span class="lineno"> 4436</span>         <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a80bf82c088636de48ea8659d9200c628" title="Initializer has a placeholder type which cannot be resolved by initialization.">FK_PlaceholderType</a>);</div>
+<div class="line"><a name="l04437"></a><span class="lineno"> 4437</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04438"></a><span class="lineno"> 4438</span>       }</div>
+<div class="line"><a name="l04439"></a><span class="lineno"> 4439</span>       Args[I] = result.<a class="code" href="classclang_1_1ActionResult.html#a938165c101b60e87ee1956ed4950fd9a">take</a>();</div>
+<div class="line"><a name="l04440"></a><span class="lineno"> 4440</span>     }</div>
+<div class="line"><a name="l04441"></a><span class="lineno"> 4441</span> </div>
+<div class="line"><a name="l04442"></a><span class="lineno"> 4442</span>   <span class="comment">// C++0x [dcl.init]p16:</span></div>
+<div class="line"><a name="l04443"></a><span class="lineno"> 4443</span>   <span class="comment">//   The semantics of initializers are as follows. The destination type is</span></div>
+<div class="line"><a name="l04444"></a><span class="lineno"> 4444</span>   <span class="comment">//   the type of the object or reference being initialized and the source</span></div>
+<div class="line"><a name="l04445"></a><span class="lineno"> 4445</span>   <span class="comment">//   type is the type of the initializer expression. The source type is not</span></div>
+<div class="line"><a name="l04446"></a><span class="lineno"> 4446</span>   <span class="comment">//   defined when the initializer is a braced-init-list or when it is a</span></div>
+<div class="line"><a name="l04447"></a><span class="lineno"> 4447</span>   <span class="comment">//   parenthesized list of expressions.</span></div>
+<div class="line"><a name="l04448"></a><span class="lineno"> 4448</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DestType = Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>();</div>
+<div class="line"><a name="l04449"></a><span class="lineno"> 4449</span> </div>
+<div class="line"><a name="l04450"></a><span class="lineno"> 4450</span>   <span class="keywordflow">if</span> (DestType-><a class="code" href="classclang_1_1Type.html#a7e475b7859ae970eb837da95e94ab26c">isDependentType</a>() ||</div>
+<div class="line"><a name="l04451"></a><span class="lineno"> 4451</span>       <a class="code" href="classclang_1_1Expr.html#a7e4cf6838c1cf4095a67f643d56c4426">Expr::hasAnyTypeDependentArguments</a>(Args)) {</div>
+<div class="line"><a name="l04452"></a><span class="lineno"> 4452</span>     <a class="code" href="classclang_1_1InitializationSequence.html#ae4165aad3884059f494b2823e4353fcc" title="Describes the kind of initialization sequence computed.">SequenceKind</a> = <a class="code" href="classclang_1_1InitializationSequence.html#ae4165aad3884059f494b2823e4353fccae7e7b7a1ac3036698ac402471ace5d16" title="A dependent initialization, which could not be type-checked due to the presence of dependent types or...">DependentSequence</a>;</div>
+<div class="line"><a name="l04453"></a><span class="lineno"> 4453</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04454"></a><span class="lineno"> 4454</span>   }</div>
+<div class="line"><a name="l04455"></a><span class="lineno"> 4455</span> </div>
+<div class="line"><a name="l04456"></a><span class="lineno"> 4456</span>   <span class="comment">// Almost everything is a normal sequence.</span></div>
+<div class="line"><a name="l04457"></a><span class="lineno"> 4457</span>   <a class="code" href="classclang_1_1InitializationSequence.html#a83e7318b3821e122fca8f98e25b231b6" title="Set the kind of sequence computed.">setSequenceKind</a>(<a class="code" href="classclang_1_1InitializationSequence.html#ae4165aad3884059f494b2823e4353fcca2c9cfc25d52b1aa9185545402ad27e3d" title="A normal sequence.">NormalSequence</a>);</div>
+<div class="line"><a name="l04458"></a><span class="lineno"> 4458</span> </div>
+<div class="line"><a name="l04459"></a><span class="lineno"> 4459</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> SourceType;</div>
+<div class="line"><a name="l04460"></a><span class="lineno"> 4460</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *Initializer = 0;</div>
+<div class="line"><a name="l04461"></a><span class="lineno"> 4461</span>   <span class="keywordflow">if</span> (Args.size() == 1) {</div>
+<div class="line"><a name="l04462"></a><span class="lineno"> 4462</span>     Initializer = Args[0];</div>
+<div class="line"><a name="l04463"></a><span class="lineno"> 4463</span>     <span class="keywordflow">if</span> (!isa<InitListExpr>(Initializer))</div>
+<div class="line"><a name="l04464"></a><span class="lineno"> 4464</span>       SourceType = Initializer-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l04465"></a><span class="lineno"> 4465</span>   }</div>
+<div class="line"><a name="l04466"></a><span class="lineno"> 4466</span> </div>
+<div class="line"><a name="l04467"></a><span class="lineno"> 4467</span>   <span class="comment">//     - If the initializer is a (non-parenthesized) braced-init-list, the</span></div>
+<div class="line"><a name="l04468"></a><span class="lineno"> 4468</span>   <span class="comment">//       object is list-initialized (8.5.4).</span></div>
+<div class="line"><a name="l04469"></a><span class="lineno"> 4469</span>   <span class="keywordflow">if</span> (Kind.<a class="code" href="classclang_1_1InitializationKind.html#ac427022260d4ab6f2ef3b5f57a083076" title="Determine the initialization kind.">getKind</a>() != <a class="code" href="classclang_1_1InitializationKind.html#a15911670bbe7baf3eac6056ed6b66ac8a6e2471401bb8a80ff2e1532a3d6000ab" title="Direct initialization.">InitializationKind::IK_Direct</a>) {</div>
+<div class="line"><a name="l04470"></a><span class="lineno"> 4470</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *InitList = dyn_cast_or_null<InitListExpr>(Initializer)) {</div>
+<div class="line"><a name="l04471"></a><span class="lineno"> 4471</span>       <a class="code" href="SemaInit_8cpp.html#a73764aae33e1010dba9dd488317406d2" title="Attempt list initialization (C++0x [dcl.init.list])">TryListInitialization</a>(S, Entity, Kind, InitList, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l04472"></a><span class="lineno"> 4472</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04473"></a><span class="lineno"> 4473</span>     }</div>
+<div class="line"><a name="l04474"></a><span class="lineno"> 4474</span>   }</div>
+<div class="line"><a name="l04475"></a><span class="lineno"> 4475</span> </div>
+<div class="line"><a name="l04476"></a><span class="lineno"> 4476</span>   <span class="comment">//     - If the destination type is a reference type, see 8.5.3.</span></div>
+<div class="line"><a name="l04477"></a><span class="lineno"> 4477</span>   <span class="keywordflow">if</span> (DestType-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l04478"></a><span class="lineno"> 4478</span>     <span class="comment">// C++0x [dcl.init.ref]p1:</span></div>
+<div class="line"><a name="l04479"></a><span class="lineno"> 4479</span>     <span class="comment">//   A variable declared to be a T& or T&&, that is, "reference to type T"</span></div>
+<div class="line"><a name="l04480"></a><span class="lineno"> 4480</span>     <span class="comment">//   (8.3.2), shall be initialized by an object, or function, of type T or</span></div>
+<div class="line"><a name="l04481"></a><span class="lineno"> 4481</span>     <span class="comment">//   by an object that can be converted into a T.</span></div>
+<div class="line"><a name="l04482"></a><span class="lineno"> 4482</span>     <span class="comment">// (Therefore, multiple arguments are not permitted.)</span></div>
+<div class="line"><a name="l04483"></a><span class="lineno"> 4483</span>     <span class="keywordflow">if</span> (Args.size() != 1)</div>
+<div class="line"><a name="l04484"></a><span class="lineno"> 4484</span>       <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a8fa06212d264bc5e1f0e3ac74feb6e66" title="Too many initializers provided for a reference.">FK_TooManyInitsForReference</a>);</div>
+<div class="line"><a name="l04485"></a><span class="lineno"> 4485</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04486"></a><span class="lineno"> 4486</span>       <a class="code" href="SemaInit_8cpp.html#a39a122b74d97da23908a25798ab46114" title="Attempt reference initialization (C++0x [dcl.init.ref])">TryReferenceInitialization</a>(S, Entity, Kind, Args[0], *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l04487"></a><span class="lineno"> 4487</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04488"></a><span class="lineno"> 4488</span>   }</div>
+<div class="line"><a name="l04489"></a><span class="lineno"> 4489</span> </div>
+<div class="line"><a name="l04490"></a><span class="lineno"> 4490</span>   <span class="comment">//     - If the initializer is (), the object is value-initialized.</span></div>
+<div class="line"><a name="l04491"></a><span class="lineno"> 4491</span>   <span class="keywordflow">if</span> (Kind.<a class="code" href="classclang_1_1InitializationKind.html#ac427022260d4ab6f2ef3b5f57a083076" title="Determine the initialization kind.">getKind</a>() == <a class="code" href="classclang_1_1InitializationKind.html#a15911670bbe7baf3eac6056ed6b66ac8a6bdac97725a3e5eb4b49f4c6cee08648" title="Value initialization.">InitializationKind::IK_Value</a> ||</div>
+<div class="line"><a name="l04492"></a><span class="lineno"> 4492</span>       (Kind.<a class="code" href="classclang_1_1InitializationKind.html#ac427022260d4ab6f2ef3b5f57a083076" title="Determine the initialization kind.">getKind</a>() == <a class="code" href="classclang_1_1InitializationKind.html#a15911670bbe7baf3eac6056ed6b66ac8a6e2471401bb8a80ff2e1532a3d6000ab" title="Direct initialization.">InitializationKind::IK_Direct</a> && Args.empty())) {</div>
+<div class="line"><a name="l04493"></a><span class="lineno"> 4493</span>     <a class="code" href="SemaInit_8cpp.html#a88176a5ec2539745a7cb67420e9fa0b5" title="Attempt value initialization (C++ [dcl.init]p7).">TryValueInitialization</a>(S, Entity, Kind, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l04494"></a><span class="lineno"> 4494</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04495"></a><span class="lineno"> 4495</span>   }</div>
+<div class="line"><a name="l04496"></a><span class="lineno"> 4496</span> </div>
+<div class="line"><a name="l04497"></a><span class="lineno"> 4497</span>   <span class="comment">// Handle default initialization.</span></div>
+<div class="line"><a name="l04498"></a><span class="lineno"> 4498</span>   <span class="keywordflow">if</span> (Kind.<a class="code" href="classclang_1_1InitializationKind.html#ac427022260d4ab6f2ef3b5f57a083076" title="Determine the initialization kind.">getKind</a>() == <a class="code" href="classclang_1_1InitializationKind.html#a15911670bbe7baf3eac6056ed6b66ac8ae6c560fc0b07cc330885416b1122aa6e" title="Default initialization.">InitializationKind::IK_Default</a>) {</div>
+<div class="line"><a name="l04499"></a><span class="lineno"> 4499</span>     <a class="code" href="SemaInit_8cpp.html#a5a06d803588251a89ee9786ec03b3b21" title="Attempt default initialization (C++ [dcl.init]p6).">TryDefaultInitialization</a>(S, Entity, Kind, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l04500"></a><span class="lineno"> 4500</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04501"></a><span class="lineno"> 4501</span>   }</div>
+<div class="line"><a name="l04502"></a><span class="lineno"> 4502</span> </div>
+<div class="line"><a name="l04503"></a><span class="lineno"> 4503</span>   <span class="comment">//     - If the destination type is an array of characters, an array of</span></div>
+<div class="line"><a name="l04504"></a><span class="lineno"> 4504</span>   <span class="comment">//       char16_t, an array of char32_t, or an array of wchar_t, and the</span></div>
+<div class="line"><a name="l04505"></a><span class="lineno"> 4505</span>   <span class="comment">//       initializer is a string literal, see 8.5.2.</span></div>
+<div class="line"><a name="l04506"></a><span class="lineno"> 4506</span>   <span class="comment">//     - Otherwise, if the destination type is an array, the program is</span></div>
+<div class="line"><a name="l04507"></a><span class="lineno"> 4507</span>   <span class="comment">//       ill-formed.</span></div>
+<div class="line"><a name="l04508"></a><span class="lineno"> 4508</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *DestAT = Context.<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(DestType)) {</div>
+<div class="line"><a name="l04509"></a><span class="lineno"> 4509</span>     <span class="keywordflow">if</span> (Initializer && isa<VariableArrayType>(DestAT)) {</div>
+<div class="line"><a name="l04510"></a><span class="lineno"> 4510</span>       <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6abd51068b1f9f76cba867820f18314bbc" title="Variable-length array must not have an initializer.">FK_VariableLengthArrayHasInitializer</a>);</div>
+<div class="line"><a name="l04511"></a><span class="lineno"> 4511</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04512"></a><span class="lineno"> 4512</span>     }</div>
+<div class="line"><a name="l04513"></a><span class="lineno"> 4513</span> </div>
+<div class="line"><a name="l04514"></a><span class="lineno"> 4514</span>     <span class="keywordflow">if</span> (Initializer) {</div>
+<div class="line"><a name="l04515"></a><span class="lineno"> 4515</span>       <span class="keywordflow">switch</span> (<a class="code" href="SemaInit_8cpp.html#a4f2ef1cb36540f5ec4a5f2ad4ab407c4" title="Check whether the array of type AT can be initialized by the Init expression by means of string initi...">IsStringInit</a>(Initializer, DestAT, Context)) {</div>
+<div class="line"><a name="l04516"></a><span class="lineno"> 4516</span>       <span class="keywordflow">case</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da0b69dbe5ec3b5031541f85833c880e02">SIF_None</a>:</div>
+<div class="line"><a name="l04517"></a><span class="lineno"> 4517</span>         <a class="code" href="SemaInit_8cpp.html#aa45f6e45df46b2a12537f895fc97d66b" title="Attempt character array initialization from a string literal (C++ [dcl.init.string], C99 6.7.8).">TryStringLiteralInitialization</a>(S, Entity, Kind, Initializer, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l04518"></a><span class="lineno"> 4518</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04519"></a><span class="lineno"> 4519</span>       <span class="keywordflow">case</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da8e52b91225e7d964d657be8266e3023f">SIF_NarrowStringIntoWideChar</a>:</div>
+<div class="line"><a name="l04520"></a><span class="lineno"> 4520</span>         <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a06b30edcc269ed14e9e535c704a549f2" title="Initializing a wide char array with narrow string literal.">FK_NarrowStringIntoWideCharArray</a>);</div>
+<div class="line"><a name="l04521"></a><span class="lineno"> 4521</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04522"></a><span class="lineno"> 4522</span>       <span class="keywordflow">case</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dadba5a7d2636fe1f37220d98372e64cf3">SIF_WideStringIntoChar</a>:</div>
+<div class="line"><a name="l04523"></a><span class="lineno"> 4523</span>         <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6adc758e35c5dcb734d10490e1de15b71e" title="Initializing char array with wide string literal.">FK_WideStringIntoCharArray</a>);</div>
+<div class="line"><a name="l04524"></a><span class="lineno"> 4524</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04525"></a><span class="lineno"> 4525</span>       <span class="keywordflow">case</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440da375ea08a6d6f95d6f055b05f9a8203cb">SIF_IncompatWideStringIntoWideChar</a>:</div>
+<div class="line"><a name="l04526"></a><span class="lineno"> 4526</span>         <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a81602afbd45edc1702ecdf0423a474f0" title="Initializing wide char array with incompatible wide string literal.">FK_IncompatWideStringIntoWideChar</a>);</div>
+<div class="line"><a name="l04527"></a><span class="lineno"> 4527</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04528"></a><span class="lineno"> 4528</span>       <span class="keywordflow">case</span> <a class="code" href="SemaInit_8cpp.html#a53cf9e4ca81f0f36fcfc8709a27a440dacb0d6f24ab7e0bcbef573d5d2f836d73">SIF_Other</a>:</div>
+<div class="line"><a name="l04529"></a><span class="lineno"> 4529</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l04530"></a><span class="lineno"> 4530</span>       }</div>
+<div class="line"><a name="l04531"></a><span class="lineno"> 4531</span>     }</div>
+<div class="line"><a name="l04532"></a><span class="lineno"> 4532</span> </div>
+<div class="line"><a name="l04533"></a><span class="lineno"> 4533</span>     <span class="comment">// Note: as an GNU C extension, we allow initialization of an</span></div>
+<div class="line"><a name="l04534"></a><span class="lineno"> 4534</span>     <span class="comment">// array from a compound literal that creates an array of the same</span></div>
+<div class="line"><a name="l04535"></a><span class="lineno"> 4535</span>     <span class="comment">// type, so long as the initializer has no side effects.</span></div>
+<div class="line"><a name="l04536"></a><span class="lineno"> 4536</span>     <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus && Initializer &&</div>
+<div class="line"><a name="l04537"></a><span class="lineno"> 4537</span>         isa<CompoundLiteralExpr>(Initializer-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>()) &&</div>
+<div class="line"><a name="l04538"></a><span class="lineno"> 4538</span>         Initializer-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>()) {</div>
+<div class="line"><a name="l04539"></a><span class="lineno"> 4539</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *SourceAT</div>
+<div class="line"><a name="l04540"></a><span class="lineno"> 4540</span>         = Context.<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(Initializer-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l04541"></a><span class="lineno"> 4541</span>       <span class="keywordflow">if</span> (!<a class="code" href="SemaInit_8cpp.html#aabeda222f039d52f99c15e399c55b3a5" title="Determine whether we have compatible array types for the purposes of GNU by-copy array initialization...">hasCompatibleArrayTypes</a>(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, DestAT, SourceAT))</div>
+<div class="line"><a name="l04542"></a><span class="lineno"> 4542</span>         <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a0e26a8fae02f65c4b3e3bf531ac02fed" title="Array type mismatch.">FK_ArrayTypeMismatch</a>);</div>
+<div class="line"><a name="l04543"></a><span class="lineno"> 4543</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Initializer-><a class="code" href="classclang_1_1Expr.html#ae87e52ec0e14be11804122a03f8744ed">HasSideEffects</a>(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>))</div>
+<div class="line"><a name="l04544"></a><span class="lineno"> 4544</span>         <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a50be973acca5b881e0ac25810e75cd7b" title="Non-constant array initializer.">FK_NonConstantArrayInit</a>);</div>
+<div class="line"><a name="l04545"></a><span class="lineno"> 4545</span>       <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04546"></a><span class="lineno"> 4546</span>         <a class="code" href="classclang_1_1InitializationSequence.html#afbef80e01ef3a7dd2938c706661e8e2d" title="Add an array initialization step.">AddArrayInitStep</a>(DestType);</div>
+<div class="line"><a name="l04547"></a><span class="lineno"> 4547</span>       }</div>
+<div class="line"><a name="l04548"></a><span class="lineno"> 4548</span>     }</div>
+<div class="line"><a name="l04549"></a><span class="lineno"> 4549</span>     <span class="comment">// Note: as a GNU C++ extension, we allow list-initialization of a</span></div>
+<div class="line"><a name="l04550"></a><span class="lineno"> 4550</span>     <span class="comment">// class member of array type from a parenthesized initializer list.</span></div>
+<div class="line"><a name="l04551"></a><span class="lineno"> 4551</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus &&</div>
+<div class="line"><a name="l04552"></a><span class="lineno"> 4552</span>              Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a22f327e1c51a6322f89ceaef6be71908" title="Determine the kind of initialization.">getKind</a>() == <a class="code" href="classclang_1_1InitializedEntity.html#ab50f80a7374ec5d295267531336bbf54a52120d28f63466d99b8752a2af9e7518" title="The entity being initialized is a non-static data member subobject.">InitializedEntity::EK_Member</a> &&</div>
+<div class="line"><a name="l04553"></a><span class="lineno"> 4553</span>              Initializer && isa<InitListExpr>(Initializer)) {</div>
+<div class="line"><a name="l04554"></a><span class="lineno"> 4554</span>       <a class="code" href="SemaInit_8cpp.html#a73764aae33e1010dba9dd488317406d2" title="Attempt list initialization (C++0x [dcl.init.list])">TryListInitialization</a>(S, Entity, Kind, cast<InitListExpr>(Initializer),</div>
+<div class="line"><a name="l04555"></a><span class="lineno"> 4555</span>                             *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l04556"></a><span class="lineno"> 4556</span>       <a class="code" href="classclang_1_1InitializationSequence.html#a912875b8a7ab145dfb5aca0e959d33eb" title="Add a parenthesized array initialization step.">AddParenthesizedArrayInitStep</a>(DestType);</div>
+<div class="line"><a name="l04557"></a><span class="lineno"> 4557</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (DestAT->getElementType()->isCharType())</div>
+<div class="line"><a name="l04558"></a><span class="lineno"> 4558</span>       <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a66e3ed32c7a6621e0ddceb0cd6cdfc1a" title="Array must be initialized with an initializer list or a string literal.">FK_ArrayNeedsInitListOrStringLiteral</a>);</div>
+<div class="line"><a name="l04559"></a><span class="lineno"> 4559</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#abe0124796173aa4694007db7616b92f3" title="Check whether T is compatible with a wide character type (wchar_t, char16_t or char32_t).">IsWideCharCompatible</a>(DestAT->getElementType(), <a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>))</div>
+<div class="line"><a name="l04560"></a><span class="lineno"> 4560</span>       <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6ac7758d50dafc3faccbaca1e59bbb675d" title="Array must be initialized with an initializer list or a wide string literal.">FK_ArrayNeedsInitListOrWideStringLiteral</a>);</div>
+<div class="line"><a name="l04561"></a><span class="lineno"> 4561</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04562"></a><span class="lineno"> 4562</span>       <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a4551723d208bc8205023f3265812c778" title="Array must be initialized with an initializer list.">FK_ArrayNeedsInitList</a>);</div>
+<div class="line"><a name="l04563"></a><span class="lineno"> 4563</span> </div>
+<div class="line"><a name="l04564"></a><span class="lineno"> 4564</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04565"></a><span class="lineno"> 4565</span>   }</div>
+<div class="line"><a name="l04566"></a><span class="lineno"> 4566</span> </div>
+<div class="line"><a name="l04567"></a><span class="lineno"> 4567</span>   <span class="comment">// Determine whether we should consider writeback conversions for </span></div>
+<div class="line"><a name="l04568"></a><span class="lineno"> 4568</span>   <span class="comment">// Objective-C ARC.</span></div>
+<div class="line"><a name="l04569"></a><span class="lineno"> 4569</span>   <span class="keywordtype">bool</span> allowObjCWritebackConversion = S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l04570"></a><span class="lineno"> 4570</span>          Entity.<a class="code" href="classclang_1_1InitializedEntity.html#ac1e0e819f13113f2cbdc7cc6270054c2">isParameterKind</a>();</div>
+<div class="line"><a name="l04571"></a><span class="lineno"> 4571</span> </div>
+<div class="line"><a name="l04572"></a><span class="lineno"> 4572</span>   <span class="comment">// We're at the end of the line for C: it's either a write-back conversion</span></div>
+<div class="line"><a name="l04573"></a><span class="lineno"> 4573</span>   <span class="comment">// or it's a C assignment. There's no need to check anything else.</span></div>
+<div class="line"><a name="l04574"></a><span class="lineno"> 4574</span>   <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus) {</div>
+<div class="line"><a name="l04575"></a><span class="lineno"> 4575</span>     <span class="comment">// If allowed, check whether this is an Objective-C writeback conversion.</span></div>
+<div class="line"><a name="l04576"></a><span class="lineno"> 4576</span>     <span class="keywordflow">if</span> (allowObjCWritebackConversion &&</div>
+<div class="line"><a name="l04577"></a><span class="lineno"> 4577</span>         <a class="code" href="SemaInit_8cpp.html#a185d0f51a0f43645acb404d2a5b4e98d">tryObjCWritebackConversion</a>(S, *<span class="keyword">this</span>, Entity, Initializer)) {</div>
+<div class="line"><a name="l04578"></a><span class="lineno"> 4578</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04579"></a><span class="lineno"> 4579</span>     }</div>
+<div class="line"><a name="l04580"></a><span class="lineno"> 4580</span> </div>
+<div class="line"><a name="l04581"></a><span class="lineno"> 4581</span>     <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#a5d5421309a9c19ec84492b0e53ab1973">TryOCLSamplerInitialization</a>(S, *<span class="keyword">this</span>, DestType, Initializer))</div>
+<div class="line"><a name="l04582"></a><span class="lineno"> 4582</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04583"></a><span class="lineno"> 4583</span> </div>
+<div class="line"><a name="l04584"></a><span class="lineno"> 4584</span>     <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#abd758f8c42dfdf688b1b77e152182674">TryOCLZeroEventInitialization</a>(S, *<span class="keyword">this</span>, DestType, Initializer))</div>
+<div class="line"><a name="l04585"></a><span class="lineno"> 4585</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04586"></a><span class="lineno"> 4586</span> </div>
+<div class="line"><a name="l04587"></a><span class="lineno"> 4587</span>     <span class="comment">// Handle initialization in C</span></div>
+<div class="line"><a name="l04588"></a><span class="lineno"> 4588</span>     <a class="code" href="classclang_1_1InitializationSequence.html#abe3fded7e83730400bff8c6286c469fa" title="Add a C assignment step.">AddCAssignmentStep</a>(DestType);</div>
+<div class="line"><a name="l04589"></a><span class="lineno"> 4589</span>     <a class="code" href="SemaInit_8cpp.html#ad98ec1ab8fb430b15e4f18d2ecbbd238">MaybeProduceObjCObject</a>(S, *<span class="keyword">this</span>, Entity);</div>
+<div class="line"><a name="l04590"></a><span class="lineno"> 4590</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04591"></a><span class="lineno"> 4591</span>   }</div>
+<div class="line"><a name="l04592"></a><span class="lineno"> 4592</span> </div>
+<div class="line"><a name="l04593"></a><span class="lineno"> 4593</span>   assert(S.<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().CPlusPlus);</div>
+<div class="line"><a name="l04594"></a><span class="lineno"> 4594</span>       </div>
+<div class="line"><a name="l04595"></a><span class="lineno"> 4595</span>   <span class="comment">//     - If the destination type is a (possibly cv-qualified) class type:</span></div>
+<div class="line"><a name="l04596"></a><span class="lineno"> 4596</span>   <span class="keywordflow">if</span> (DestType-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) {</div>
+<div class="line"><a name="l04597"></a><span class="lineno"> 4597</span>     <span class="comment">//     - If the initialization is direct-initialization, or if it is</span></div>
+<div class="line"><a name="l04598"></a><span class="lineno"> 4598</span>     <span class="comment">//       copy-initialization where the cv-unqualified version of the</span></div>
+<div class="line"><a name="l04599"></a><span class="lineno"> 4599</span>     <span class="comment">//       source type is the same class as, or a derived class of, the</span></div>
+<div class="line"><a name="l04600"></a><span class="lineno"> 4600</span>     <span class="comment">//       class of the destination, constructors are considered. [...]</span></div>
+<div class="line"><a name="l04601"></a><span class="lineno"> 4601</span>     <span class="keywordflow">if</span> (Kind.<a class="code" href="classclang_1_1InitializationKind.html#ac427022260d4ab6f2ef3b5f57a083076" title="Determine the initialization kind.">getKind</a>() == <a class="code" href="classclang_1_1InitializationKind.html#a15911670bbe7baf3eac6056ed6b66ac8a6e2471401bb8a80ff2e1532a3d6000ab" title="Direct initialization.">InitializationKind::IK_Direct</a> ||</div>
+<div class="line"><a name="l04602"></a><span class="lineno"> 4602</span>         (Kind.<a class="code" href="classclang_1_1InitializationKind.html#ac427022260d4ab6f2ef3b5f57a083076" title="Determine the initialization kind.">getKind</a>() == <a class="code" href="classclang_1_1InitializationKind.html#a15911670bbe7baf3eac6056ed6b66ac8adcd5738e1ca0f95ca2025f3a0d7a6917" title="Copy initialization.">InitializationKind::IK_Copy</a> &&</div>
+<div class="line"><a name="l04603"></a><span class="lineno"> 4603</span>          (Context.<a class="code" href="classclang_1_1ASTContext.html#a40efa7d4fe133c0a709f0df4b6fcc2bf" title="Determine whether the given types are equivalent after cvr-qualifiers have been removed.">hasSameUnqualifiedType</a>(SourceType, DestType) ||</div>
+<div class="line"><a name="l04604"></a><span class="lineno"> 4604</span>           S.<a class="code" href="classclang_1_1Sema.html#a00a26a7952526d2e440ea475e8435c54" title="Determine whether the type Derived is a C++ class that is derived from the type Base.">IsDerivedFrom</a>(SourceType, DestType))))</div>
+<div class="line"><a name="l04605"></a><span class="lineno"> 4605</span>       <a class="code" href="SemaInit_8cpp.html#a5cf6000aab624ed20401360c4e03fbe8" title="Attempt initialization by constructor (C++ [dcl.init]), which enumerates the constructors of the init...">TryConstructorInitialization</a>(S, Entity, Kind, Args,</div>
+<div class="line"><a name="l04606"></a><span class="lineno"> 4606</span>                                    Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>(), *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l04607"></a><span class="lineno"> 4607</span>     <span class="comment">//     - Otherwise (i.e., for the remaining copy-initialization cases),</span></div>
+<div class="line"><a name="l04608"></a><span class="lineno"> 4608</span>     <span class="comment">//       user-defined conversion sequences that can convert from the source</span></div>
+<div class="line"><a name="l04609"></a><span class="lineno"> 4609</span>     <span class="comment">//       type to the destination type or (when a conversion function is</span></div>
+<div class="line"><a name="l04610"></a><span class="lineno"> 4610</span>     <span class="comment">//       used) to a derived class thereof are enumerated as described in</span></div>
+<div class="line"><a name="l04611"></a><span class="lineno"> 4611</span>     <span class="comment">//       13.3.1.4, and the best one is chosen through overload resolution</span></div>
+<div class="line"><a name="l04612"></a><span class="lineno"> 4612</span>     <span class="comment">//       (13.3).</span></div>
+<div class="line"><a name="l04613"></a><span class="lineno"> 4613</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04614"></a><span class="lineno"> 4614</span>       <a class="code" href="namespaceclang.html#aed5f6b5c342b93ccd5c9b9e6b7345237" title="Tries a user-defined conversion from From to ToType.">TryUserDefinedConversion</a>(S, Entity, Kind, Initializer, *<span class="keyword">this</span>,</div>
+<div class="line"><a name="l04615"></a><span class="lineno"> 4615</span>                                TopLevelOfInitList);</div>
+<div class="line"><a name="l04616"></a><span class="lineno"> 4616</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04617"></a><span class="lineno"> 4617</span>   }</div>
+<div class="line"><a name="l04618"></a><span class="lineno"> 4618</span> </div>
+<div class="line"><a name="l04619"></a><span class="lineno"> 4619</span>   <span class="keywordflow">if</span> (Args.size() > 1) {</div>
+<div class="line"><a name="l04620"></a><span class="lineno"> 4620</span>     <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6aa422504604ec6464d3c526e9687581bf" title="Too many initializers for scalar.">FK_TooManyInitsForScalar</a>);</div>
+<div class="line"><a name="l04621"></a><span class="lineno"> 4621</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04622"></a><span class="lineno"> 4622</span>   }</div>
+<div class="line"><a name="l04623"></a><span class="lineno"> 4623</span>   assert(Args.size() == 1 && <span class="stringliteral">"Zero-argument case handled above"</span>);</div>
+<div class="line"><a name="l04624"></a><span class="lineno"> 4624</span> </div>
+<div class="line"><a name="l04625"></a><span class="lineno"> 4625</span>   <span class="comment">//    - Otherwise, if the source type is a (possibly cv-qualified) class</span></div>
+<div class="line"><a name="l04626"></a><span class="lineno"> 4626</span>   <span class="comment">//      type, conversion functions are considered.</span></div>
+<div class="line"><a name="l04627"></a><span class="lineno"> 4627</span>   <span class="keywordflow">if</span> (!SourceType.<a class="code" href="classclang_1_1QualType.html#a8f87f58000490ad01cd09add1f27d7ac" title="isNull - Return true if this QualType doesn't point to a type yet.">isNull</a>() && SourceType-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) {</div>
+<div class="line"><a name="l04628"></a><span class="lineno"> 4628</span>     <a class="code" href="namespaceclang.html#aed5f6b5c342b93ccd5c9b9e6b7345237" title="Tries a user-defined conversion from From to ToType.">TryUserDefinedConversion</a>(S, Entity, Kind, Initializer, *<span class="keyword">this</span>,</div>
+<div class="line"><a name="l04629"></a><span class="lineno"> 4629</span>                              TopLevelOfInitList);</div>
+<div class="line"><a name="l04630"></a><span class="lineno"> 4630</span>     <a class="code" href="SemaInit_8cpp.html#ad98ec1ab8fb430b15e4f18d2ecbbd238">MaybeProduceObjCObject</a>(S, *<span class="keyword">this</span>, Entity);</div>
+<div class="line"><a name="l04631"></a><span class="lineno"> 4631</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l04632"></a><span class="lineno"> 4632</span>   }</div>
+<div class="line"><a name="l04633"></a><span class="lineno"> 4633</span> </div>
+<div class="line"><a name="l04634"></a><span class="lineno"> 4634</span>   <span class="comment">//    - Otherwise, the initial value of the object being initialized is the</span></div>
+<div class="line"><a name="l04635"></a><span class="lineno"> 4635</span>   <span class="comment">//      (possibly converted) value of the initializer expression. Standard</span></div>
+<div class="line"><a name="l04636"></a><span class="lineno"> 4636</span>   <span class="comment">//      conversions (Clause 4) will be used, if necessary, to convert the</span></div>
+<div class="line"><a name="l04637"></a><span class="lineno"> 4637</span>   <span class="comment">//      initializer expression to the cv-unqualified version of the</span></div>
+<div class="line"><a name="l04638"></a><span class="lineno"> 4638</span>   <span class="comment">//      destination type; no user-defined conversions are considered.</span></div>
+<div class="line"><a name="l04639"></a><span class="lineno"> 4639</span>       </div>
+<div class="line"><a name="l04640"></a><span class="lineno"> 4640</span>   <a class="code" href="classclang_1_1ImplicitConversionSequence.html">ImplicitConversionSequence</a> ICS</div>
+<div class="line"><a name="l04641"></a><span class="lineno"> 4641</span>     = S.<a class="code" href="classclang_1_1Sema.html#a8cee6817e94e2238c74b3693d91023c3">TryImplicitConversion</a>(Initializer, Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>(),</div>
+<div class="line"><a name="l04642"></a><span class="lineno"> 4642</span>                               <span class="comment">/*SuppressUserConversions*/</span><span class="keyword">true</span>,</div>
+<div class="line"><a name="l04643"></a><span class="lineno"> 4643</span>                               <span class="comment">/*AllowExplicitConversions*/</span> <span class="keyword">false</span>,</div>
+<div class="line"><a name="l04644"></a><span class="lineno"> 4644</span>                               <span class="comment">/*InOverloadResolution*/</span> <span class="keyword">false</span>,</div>
+<div class="line"><a name="l04645"></a><span class="lineno"> 4645</span>                               <span class="comment">/*CStyle=*/</span>Kind.<a class="code" href="classclang_1_1InitializationKind.html#ae49b85f530201e4c03925d3bc125f17b" title="Determine whether this initialization is a C-style cast.">isCStyleOrFunctionalCast</a>(),</div>
+<div class="line"><a name="l04646"></a><span class="lineno"> 4646</span>                               allowObjCWritebackConversion);</div>
+<div class="line"><a name="l04647"></a><span class="lineno"> 4647</span>       </div>
+<div class="line"><a name="l04648"></a><span class="lineno"> 4648</span>   <span class="keywordflow">if</span> (ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a0cf7f582f9b5c1d233556e5eec40aa3b">isStandard</a>() && </div>
+<div class="line"><a name="l04649"></a><span class="lineno"> 4649</span>       ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#a551c71e9c934fc670f287fa6a063cca7">Second</a> == <a class="code" href="namespaceclang.html#a7f714d77a5c17cf30811aced0af0de09afa13cc6caf7c43bfb6bcdb73d142c44d" title="Objective-C ARC writeback conversion.">ICK_Writeback_Conversion</a>) {</div>
+<div class="line"><a name="l04650"></a><span class="lineno"> 4650</span>     <span class="comment">// Objective-C ARC writeback conversion.</span></div>
+<div class="line"><a name="l04651"></a><span class="lineno"> 4651</span>     </div>
+<div class="line"><a name="l04652"></a><span class="lineno"> 4652</span>     <span class="comment">// We should copy unless we're passing to an argument explicitly</span></div>
+<div class="line"><a name="l04653"></a><span class="lineno"> 4653</span>     <span class="comment">// marked 'out'.</span></div>
+<div class="line"><a name="l04654"></a><span class="lineno"> 4654</span>     <span class="keywordtype">bool</span> ShouldCopy = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l04655"></a><span class="lineno"> 4655</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *<a class="code" href="SemaOverload_8cpp.html#af465899bf43044df83229078154bc2ed">Param</a> = cast_or_null<ParmVarDecl>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a612d72ea3c50c222159473b73a994e12" title="Retrieve the variable, parameter, or field being initialized.">getDecl</a>()))</div>
+<div class="line"><a name="l04656"></a><span class="lineno"> 4656</span>       ShouldCopy = (<a class="code" href="SemaOverload_8cpp.html#af465899bf43044df83229078154bc2ed">Param</a>->getObjCDeclQualifier() != <a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24ac040c99ecf4823345ad6a2b286ac2aa3">ParmVarDecl::OBJC_TQ_Out</a>);</div>
+<div class="line"><a name="l04657"></a><span class="lineno"> 4657</span>     </div>
+<div class="line"><a name="l04658"></a><span class="lineno"> 4658</span>     <span class="comment">// If there was an lvalue adjustment, add it as a separate conversion.</span></div>
+<div class="line"><a name="l04659"></a><span class="lineno"> 4659</span>     <span class="keywordflow">if</span> (ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#a62743a48c9d070ae3b2baadce4d87724">First</a> == <a class="code" href="namespaceclang.html#a7f714d77a5c17cf30811aced0af0de09a5e90905eb62e315f3ff3663493ce2d84" title="Array-to-pointer conversion (C++ 4.2)">ICK_Array_To_Pointer</a> ||</div>
+<div class="line"><a name="l04660"></a><span class="lineno"> 4660</span>         ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#a62743a48c9d070ae3b2baadce4d87724">First</a> == <a class="code" href="namespaceclang.html#a7f714d77a5c17cf30811aced0af0de09ab0fd898397be48530ae198aa6ca20843" title="Lvalue-to-rvalue conversion (C++ 4.1)">ICK_Lvalue_To_Rvalue</a>) {</div>
+<div class="line"><a name="l04661"></a><span class="lineno"> 4661</span>       <a class="code" href="classclang_1_1ImplicitConversionSequence.html">ImplicitConversionSequence</a> LvalueICS;</div>
+<div class="line"><a name="l04662"></a><span class="lineno"> 4662</span>       LvalueICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4daa2a30752a19f36dfafe64d0794f03">setStandard</a>();</div>
+<div class="line"><a name="l04663"></a><span class="lineno"> 4663</span>       LvalueICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#ae451863781ae7b1f47c29dc204fee406">setAsIdentityConversion</a>();</div>
+<div class="line"><a name="l04664"></a><span class="lineno"> 4664</span>       LvalueICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#ae0f2d10cd4c53b5f536464642d58bcdf">setAllToTypes</a>(ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#a0b69a829ad61e8b5e5cc79f3bac07870">getToType</a>(0));</div>
+<div class="line"><a name="l04665"></a><span class="lineno"> 4665</span>       LvalueICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#a62743a48c9d070ae3b2baadce4d87724">First</a> = ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#a62743a48c9d070ae3b2baadce4d87724">First</a>;</div>
+<div class="line"><a name="l04666"></a><span class="lineno"> 4666</span>       <a class="code" href="classclang_1_1InitializationSequence.html#ad2bdc93c890e75998e73fcbf5e538035" title="Add a new step that applies an implicit conversion sequence.">AddConversionSequenceStep</a>(LvalueICS, ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a4a8a60d61291337b31b97a6f60bc331d">Standard</a>.<a class="code" href="classclang_1_1StandardConversionSequence.html#a0b69a829ad61e8b5e5cc79f3bac07870">getToType</a>(0));</div>
+<div class="line"><a name="l04667"></a><span class="lineno"> 4667</span>     }</div>
+<div class="line"><a name="l04668"></a><span class="lineno"> 4668</span>     </div>
+<div class="line"><a name="l04669"></a><span class="lineno"> 4669</span>     <a class="code" href="classclang_1_1InitializationSequence.html#ac25be918259a7178bc33e812f49f67b3" title="Add a step to pass an object by indirect copy-restore.">AddPassByIndirectCopyRestoreStep</a>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>(), ShouldCopy);</div>
+<div class="line"><a name="l04670"></a><span class="lineno"> 4670</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ICS.<a class="code" href="classclang_1_1ImplicitConversionSequence.html#a0aba148a3e1990b8ee4a7136a7564d80">isBad</a>()) {</div>
+<div class="line"><a name="l04671"></a><span class="lineno"> 4671</span>     <a class="code" href="classclang_1_1DeclAccessPair.html">DeclAccessPair</a> dap;</div>
+<div class="line"><a name="l04672"></a><span class="lineno"> 4672</span>     <span class="keywordflow">if</span> (<a class="code" href="SemaInit_8cpp.html#af6ef31cce10605e141fc3843680c9e34">isLibstdcxxPointerReturnFalseHack</a>(S, Entity, Initializer)) {</div>
+<div class="line"><a name="l04673"></a><span class="lineno"> 4673</span>       <a class="code" href="classclang_1_1InitializationSequence.html#ad44e8b37a3221729dae6c0ce6189d708" title="Add a zero-initialization step.">AddZeroInitializationStep</a>(Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>());</div>
+<div class="line"><a name="l04674"></a><span class="lineno"> 4674</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Initializer-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>() == Context.<a class="code" href="classclang_1_1ASTContext.html#a9630077a927001f119e396456dc9e091">OverloadTy</a> &&</div>
+<div class="line"><a name="l04675"></a><span class="lineno"> 4675</span>                !S.<a class="code" href="classclang_1_1Sema.html#a44616720556005fe4b4434f314892068">ResolveAddressOfOverloadedFunction</a>(Initializer, DestType,</div>
+<div class="line"><a name="l04676"></a><span class="lineno"> 4676</span>                                                      <span class="keyword">false</span>, dap))</div>
+<div class="line"><a name="l04677"></a><span class="lineno"> 4677</span>       <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6abd3e911b4107171dc42985fcc42e2ce6" title="Cannot resolve the address of an overloaded function.">InitializationSequence::FK_AddressOfOverloadFailed</a>);</div>
+<div class="line"><a name="l04678"></a><span class="lineno"> 4678</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l04679"></a><span class="lineno"> 4679</span>       <a class="code" href="classclang_1_1InitializationSequence.html#a688fa3ae9510aaed091806d48be9679e" title="Note that this initialization sequence failed.">SetFailed</a>(<a class="code" href="classclang_1_1InitializationSequence.html#aec56e18fd7a5df4ea0df8f564e5257d6a5ed977655b2d261db9eb3d27070e8779" title="Implicit conversion failed.">InitializationSequence::FK_ConversionFailed</a>);</div>
+<div class="line"><a name="l04680"></a><span class="lineno"> 4680</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l04681"></a><span class="lineno"> 4681</span>     <a class="code" href="classclang_1_1InitializationSequence.html#ad2bdc93c890e75998e73fcbf5e538035" title="Add a new step that applies an implicit conversion sequence.">AddConversionSequenceStep</a>(ICS, Entity.<a class="code" href="classclang_1_1InitializedEntity.html#a0e4e50f5a711a099ebea55a6fa577843" title="Retrieve type being initialized.">getType</a>(), TopLevelOfInitList);</div>
+<div class="line"><a name="l04682"></a><span class="lineno"> 4682</span> </div>
+<div class="line"><a name="l04683"></a><span class="lineno"> 4683</span>     <a class="code" href="SemaInit_8cpp.html#ad98ec1ab8fb430b15e4f18d2ecbbd238">MaybeProduceObjCObject</a>(S, *<span class="keyword">this</span>, Entity);</div>
+<div class="line"><a name="l04684"></a><span class="lineno"> 4684</span>   }</div>
+<div class="line"><a name="l04685"></a><span class="lineno"> 4685</span> }</div>
+<div class="line"><a name="l04686"></a><span class="lineno"> 4686</span> </div>
+<div class="line"><a name="l04687"></a><span class="lineno"><a class="code" href="classclang_1_1InitializationSequence.html#a5f8b3caaf7803d7b0332af6e03adbd29"> 4687</a></span> <a class="code" href="classclang_1_1InitializationSequence.html#a5f8b3caaf7803d7b0332af6e03adbd29">InitializationSequence::~InitializationSequence</a>() {</div>
+<div class="line"><a name="l04688"></a><span class="lineno"> 4688</span>   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<Step>::iterator</a> <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> = Steps.begin(),</div>
+<div class="line"><a name="l04689"></a><span class="lineno"> 4689</span>                                           StepEnd = Steps.end();</div>
+<div class="line"><a name="l04690"></a><span class="lineno"> 4690</span>        <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a> != StepEnd; ++<a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a>)</div>
+<div class="line"><a name="l04691"></a><span class="lineno"> 4691</span>     <a class="code" href="classclang_1_1InitializationSequence_1_1Step.html" title="A single step in the initialization sequence.">Step</a>-><a class="code" href="classclang_1_1InitializationSequence_1_1Step.html#a585ec32eabcc333ee43d869f7dc8f652">Destroy</a>();</div>
+<div class="line"><a name="l04692"></a><span class="lineno"> 4692</span> }</div>

[... 2418 lines stripped ...]




More information about the llvm-commits mailing list