[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"