[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/Expr_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Expr_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Expr_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Expr_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,4260 @@
+<!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: Expr.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_d3636efc55c6148efe36c59ffa01cb41.html">AST</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">Expr.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="Expr_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">//===--- Expr.cpp - Expression AST Node Implementation --------------------===//</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 the Expr class and subclasses.</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="APValue_8h.html">clang/AST/APValue.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="Attr_8h.html">clang/AST/Attr.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="DeclCXX_8h.html" title="Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate.h) and friends (in DeclFriend.h).">clang/AST/DeclCXX.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="DeclObjC_8h.html">clang/AST/DeclObjC.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="DeclTemplate_8h.html" title="Defines the C++ template declaration subclasses.">clang/AST/DeclTemplate.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="EvaluatedExprVisitor_8h.html">clang/AST/EvaluatedExprVisitor.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="Expr_8h.html">clang/AST/Expr.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</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="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="Mangle_8h.html">clang/AST/Mangle.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="RecordLayout_8h.html">clang/AST/RecordLayout.h</a>"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "<a class="code" href="StmtVisitor_8h.html">clang/AST/StmtVisitor.h</a>"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "<a class="code" href="Builtins_8h.html" title="Defines enum values for all the target-independent builtin functions.">clang/Basic/Builtins.h</a>"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "<a class="code" href="CharInfo_8h.html">clang/Basic/CharInfo.h</a>"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "<a class="code" href="SourceManager_8h.html" title="Defines the SourceManager interface.">clang/Basic/SourceManager.h</a>"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "<a class="code" href="include_2clang_2Basic_2TargetInfo_8h.html" title="Defines the clang::TargetInfo interface.">clang/Basic/TargetInfo.h</a>"</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "<a class="code" href="Lexer_8h.html">clang/Lex/Lexer.h</a>"</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "<a class="code" href="LiteralSupport_8h.html">clang/Lex/LiteralSupport.h</a>"</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include "<a class="code" href="SemaDiagnostic_8h.html">clang/Sema/SemaDiagnostic.h</a>"</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include "llvm/Support/ErrorHandling.h"</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include "llvm/Support/raw_ostream.h"</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#include <algorithm></span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor">#include <cstring></span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a3850b5db8a316c79f4ca87126a37a1b1">   39</a></span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *<a class="code" href="classclang_1_1Expr.html#a3850b5db8a316c79f4ca87126a37a1b1" title="For an expression of class type or pointer to class type, return the most derived class decl the expr...">Expr::getBestDynamicClassType</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <a class="code" href="classclang_1_1Expr.html#af64aa21b7ace12995b752999e500a1da" title="Ignore parentheses and derived-to-base casts.">ignoreParenBaseCasts</a>();</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DerivedType = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1PointerType.html">PointerType</a> *PTy = DerivedType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1PointerType.html">PointerType</a>>())</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     DerivedType = PTy-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keywordflow">if</span> (DerivedType-><a class="code" href="classclang_1_1Type.html#a7e475b7859ae970eb837da95e94ab26c">isDependentType</a>())</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="keywordflow">return</span> <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> </div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *Ty = DerivedType-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>();</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <a class="code" href="classclang_1_1Decl.html">Decl</a> *D = Ty-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>();</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordflow">return</span> cast<CXXRecordDecl>(D);</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> }</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ab68ef9ee6af809f73ba54a9db42e8a72">   54</a></span> <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#ab68ef9ee6af809f73ba54a9db42e8a72">Expr::skipRValueSubobjectAdjustments</a>(</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<const Expr *></a> &CommaLHSs,</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<SubobjectAdjustment></a> &Adjustments)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     E = E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *CE = dyn_cast<CastExpr>(E)) {</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>       <span class="keywordflow">if</span> ((CE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca73a268da1a2e05cdf1ace06c46412caa">CK_DerivedToBase</a> ||</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>            CE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caafe5fe4f044e3c17524af98993c8b058">CK_UncheckedDerivedToBase</a>) &&</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>           E-><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="l00065"></a><span class="lineno">   65</span>         E = CE->getSubExpr();</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>         <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Derived</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>           = cast<CXXRecordDecl>(E-><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>>()->getDecl());</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>         Adjustments.push_back(<a class="code" href="structclang_1_1SubobjectAdjustment.html" title="An adjustment to be made to the temporary created when emitting a reference binding, which accesses a particular subobject of that temporary.">SubobjectAdjustment</a>(CE, Derived));</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>       }</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> </div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>       <span class="keywordflow">if</span> (CE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>) {</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         E = CE->getSubExpr();</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>       }</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *ME = dyn_cast<MemberExpr>(E)) {</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>       <span class="keywordflow">if</span> (!ME->isArrow()) {</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         assert(ME->getBase()->getType()->isRecordType());</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = dyn_cast<FieldDecl>(ME->getMemberDecl())) {</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>           <span class="keywordflow">if</span> (!Field->isBitField() && !Field->getType()->isReferenceType()) {</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>             E = ME->getBase();</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>             Adjustments.push_back(<a class="code" href="structclang_1_1SubobjectAdjustment.html" title="An adjustment to be made to the temporary created when emitting a reference binding, which accesses a particular subobject of that temporary.">SubobjectAdjustment</a>(Field));</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>             <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>           }</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         }</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>       }</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *BO = dyn_cast<BinaryOperator>(E)) {</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>       <span class="keywordflow">if</span> (BO->isPtrMemOp()) {</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         assert(BO->getRHS()->isRValue());</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         E = BO->getLHS();</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT =</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>           BO->getRHS()->getType()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a>>();</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         Adjustments.push_back(<a class="code" href="structclang_1_1SubobjectAdjustment.html" title="An adjustment to be made to the temporary created when emitting a reference binding, which accesses a particular subobject of that temporary.">SubobjectAdjustment</a>(MPT, BO->getRHS()));</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (BO->getOpcode() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae3c9652c3c01080bd794e8e03988e278">BO_Comma</a>) {</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         CommaLHSs.push_back(BO->getLHS());</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>         E = BO->getRHS();</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>       }</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     }</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     <span class="comment">// Nothing changed.</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   }</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="keywordflow">return</span> E;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> }</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> </div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *</div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a3b61739df96b7ad58a1dcafc16ea8c63">  109</a></span> <a class="code" href="classclang_1_1Expr.html#a3b61739df96b7ad58a1dcafc16ea8c63">Expr::findMaterializedTemporary</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *&MTE)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="comment">// This might be a default initializer for a reference member. Walk over the</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="comment">// wrapper node for that.</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDefaultInitExpr.html" title="A use of a default initializer in a constructor or in aggregate initialization.">CXXDefaultInitExpr</a> *DAE = dyn_cast<CXXDefaultInitExpr>(E))</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     E = DAE->getExpr();</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="comment">// Look through single-element init lists that claim to be lvalues. They're</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="comment">// just syntactic wrappers in this case.</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ILE = dyn_cast<InitListExpr>(E)) {</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <span class="keywordflow">if</span> (ILE->getNumInits() == 1 && ILE->isGLValue()) {</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>       E = ILE->getInit(0);</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDefaultInitExpr.html" title="A use of a default initializer in a constructor or in aggregate initialization.">CXXDefaultInitExpr</a> *DAE = dyn_cast<CXXDefaultInitExpr>(E))</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         E = DAE->getExpr();</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     }</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   }</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="comment">// Look through expressions for materialized temporaries (for now).</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *M</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>       = dyn_cast<MaterializeTemporaryExpr>(E)) {</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     MTE = M;</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     E = M->GetTemporaryExpr();</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   }</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> </div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDefaultArgExpr.html" title="A default argument (C++ [dcl.fct.default]).">CXXDefaultArgExpr</a> *DAE = dyn_cast<CXXDefaultArgExpr>(E))</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     E = DAE->getExpr();</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="keywordflow">return</span> E;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> }</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment"></span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="comment">/// isKnownToHaveBooleanValue - Return true if this is an integer expression</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="comment">/// that is known to return 0 or 1.  This happens for _Bool/bool expressions</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment">/// but also int expressions which are produced by things like comparisons in</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">/// C.</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a161381479db6c9ec01ee300954de8d2c">  143</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a161381479db6c9ec01ee300954de8d2c">Expr::isKnownToHaveBooleanValue</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> </div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="comment">// If this value has _Bool type, it is obvious 0/1.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac16047fbf3b5325d6528d8557803b0cc">isBooleanType</a>()) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="comment">// If this is a non-scalar-integer type, we don't care enough to try. </span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="keywordflow">if</span> (!E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#afa340c23f27a4a28f20bdf52d69a0a4c" title="Determine whether this type is an integral or enumeration type.">isIntegralOrEnumerationType</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *UO = dyn_cast<UnaryOperator>(E)) {</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">switch</span> (UO->getOpcode()) {</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa3663aba90ba0dd36bff0db1db1e20a5e">UO_Plus</a>:</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>       <span class="keywordflow">return</span> UO->getSubExpr()->isKnownToHaveBooleanValue();</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     }</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   }</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   </div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="comment">// Only look through implicit casts.  If the user writes</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="comment">// '(int) (a && b)' treat it as an arbitrary int.</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *CE = dyn_cast<ImplicitCastExpr>(E))</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="keywordflow">return</span> CE->getSubExpr()->isKnownToHaveBooleanValue();</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   </div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *BO = dyn_cast<BinaryOperator>(E)) {</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     <span class="keywordflow">switch</span> (BO->getOpcode()) {</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a34afd641c1839b1ebdf5b96779becc5e">BO_LT</a>:   <span class="comment">// Relational operators.</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a9ff57a80bfff7f4a29cfc5ea9525ed6f">BO_GT</a>:</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab1b013f11421020dffa959a6c1ed45af">BO_LE</a>:</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a49c5777674892e127aeeb0746b18a1e2">BO_GE</a>:</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a69f29b9100be3ced416f394df1b8387d">BO_EQ</a>:   <span class="comment">// Equality operators.</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a>:</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a30e5536f851a7efedefd1ca23a295741">BO_LAnd</a>: <span class="comment">// AND operator.</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a7bc0171ddbb52333099a4774326d72c9">BO_LOr</a>:  <span class="comment">// Logical OR operator.</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         </div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1add0a26702b466b3820e0032922751589">BO_And</a>:  <span class="comment">// Bitwise AND operator.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a01db02868a5b622d647d2a3f7d7d0c5a">BO_Xor</a>:  <span class="comment">// Bitwise XOR operator.</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a0bbf9a36f955dba18422f3c8800443d1">BO_Or</a>:   <span class="comment">// Bitwise OR operator.</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="comment">// Handle things like (x==2)|(y==12).</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>       <span class="keywordflow">return</span> BO->getLHS()->isKnownToHaveBooleanValue() &&</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>              BO->getRHS()->isKnownToHaveBooleanValue();</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         </div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae3c9652c3c01080bd794e8e03988e278">BO_Comma</a>:</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af0f6693357ca6bc7488c1d4de4cbe303">BO_Assign</a>:</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       <span class="keywordflow">return</span> BO->getRHS()->isKnownToHaveBooleanValue();</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     }</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   }</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   </div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConditionalOperator.html">ConditionalOperator</a> *CO = dyn_cast<ConditionalOperator>(E))</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     <span class="keywordflow">return</span> CO->getTrueExpr()->isKnownToHaveBooleanValue() &&</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>            CO->getFalseExpr()->isKnownToHaveBooleanValue();</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>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> }</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment">// Amusing macro metaprogramming hack: check whether a class provides</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="comment">// a more specific implementation of getExprLoc().</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="comment">// See also Stmt.cpp:{getLocStart(),getLocEnd()}.</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment">  /// This implementation is used when a class provides a custom</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> <span class="comment">  /// implementation of getExprLoc.</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment"></span>  <span class="keyword">template</span> <<span class="keyword">class</span> E, <span class="keyword">class</span> T></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</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> getExprLocImpl(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>,</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</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> (T::*v)() <span class="keyword">const</span>) {</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keyword">const </span>E*<span class="keyword">></span>(<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>)->getExprLoc();</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   }</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> <span class="comment"></span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="comment">  /// This implementation is used when a class doesn't provide</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">  /// a custom implementation of getExprLoc.  Overload resolution</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">  /// should pick it over the implementation above because it's</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">  /// more specialized according to function template partial ordering.</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="comment"></span>  <span class="keyword">template</span> <<span class="keyword">class</span> E></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</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> getExprLocImpl(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *expr,</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>                                 <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> (<a class="code" href="classclang_1_1Expr.html">Expr</a>::*v)() <span class="keyword">const</span>) {</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keyword">const </span>E*<span class="keyword">></span>(<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>)->getLocStart();</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   }</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> }</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
+<div class="line"><a name="l00222"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">  222</a></span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">Expr::getExprLoc</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>()) {</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cda3c52fd74f70067fe6e848861ba1bf396">Stmt::NoStmtClass</a>: llvm_unreachable(<span class="stringliteral">"statement without class"</span>);</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="preprocessor">#define ABSTRACT_STMT(type)</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="preprocessor"></span><span class="preprocessor">#define STMT(type, base) \</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="preprocessor">  case Stmt::type##Class: llvm_unreachable(#type " is not an Expr"); break;</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="preprocessor"></span><span class="preprocessor">#define EXPR(type, base) \</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="preprocessor">  case Stmt::type##Class: return getExprLocImpl<type>(this, &type::getExprLoc);</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="StmtNodes_8inc.html">clang/AST/StmtNodes.inc</a>"</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   }</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   llvm_unreachable(<span class="stringliteral">"unknown statement kind"</span>);</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> }</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> </div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment">// Primary Expressions.</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment"></span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">/// \brief Compute the type-, value-, and instantiation-dependence of a </span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="comment">/// declaration reference</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> <span class="comment">/// based on the declaration being referenced.</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno"><a class="code" href="Expr_8cpp.html#aac62379e242f4067ff25e8ac72939f6f">  242</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="Expr_8cpp.html#aac62379e242f4067ff25e8ac72939f6f" title="Compute the type-, value-, and instantiation-dependence of a declaration reference based on the decla...">computeDeclRefDependence</a>(<span class="keyword">const</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> &Ctx, <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *D,</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>                                      <a class="code" href="classclang_1_1QualType.html">QualType</a> T, <span class="keywordtype">bool</span> &TypeDependent,</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>                                      <span class="keywordtype">bool</span> &ValueDependent,</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>                                      <span class="keywordtype">bool</span> &InstantiationDependent) {</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   TypeDependent = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   ValueDependent = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   InstantiationDependent = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <span class="comment">// (TD) C++ [temp.dep.expr]p3:</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <span class="comment">//   An id-expression is type-dependent if it contains:</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <span class="comment">// and </span></div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   <span class="comment">// (VD) C++ [temp.dep.constexpr]p2:</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <span class="comment">//  An identifier is value-dependent if it is:</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   </div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <span class="comment">//  (TD)  - an identifier that was declared with dependent type</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   <span class="comment">//  (VD)  - a name declared with a dependent type,</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#a7e475b7859ae970eb837da95e94ab26c">isDependentType</a>()) {</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     TypeDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     ValueDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#ab5662afd5491f065b5345c24571f39dc" title="Determine whether this type is an instantiation-dependent type, meaning that the type involves a temp...">isInstantiationDependentType</a>()) {</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   }</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   </div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="comment">//  (TD)  - a conversion-function-id that specifies a dependent type</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>().<a class="code" href="classclang_1_1DeclarationName.html#a3e722af81dd4b5670e834b20f47ba94b" title="getNameKind - Determine what kind of name this is.">getNameKind</a>() </div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>                                 == <a class="code" href="classclang_1_1DeclarationName.html#a9ab322d434446b43379d39e41af5cbe3aecafb8f0bcaa01d99791b0bebf534ac6">DeclarationName::CXXConversionFunctionName</a>) {</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> T = D-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>().<a class="code" href="classclang_1_1DeclarationName.html#a23c5ec694c695d34a1a1261705148179">getCXXNameType</a>();</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#a7e475b7859ae970eb837da95e94ab26c">isDependentType</a>()) {</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>       TypeDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>       ValueDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     }</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     </div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#ab5662afd5491f065b5345c24571f39dc" title="Determine whether this type is an instantiation-dependent type, meaning that the type involves a temp...">isInstantiationDependentType</a>())</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>       InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   }</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   </div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   <span class="comment">//  (VD)  - the name of a non-type template parameter,</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <span class="keywordflow">if</span> (isa<NonTypeTemplateParmDecl>(D)) {</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     ValueDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   }</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   </div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <span class="comment">//  (VD) - a constant with integral or enumeration type and is</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <span class="comment">//         initialized with an expression that is value-dependent.</span></div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   <span class="comment">//  (VD) - a constant with literal type and is initialized with an</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   <span class="comment">//         expression that is value-dependent [C++11].</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   <span class="comment">//  (VD) - FIXME: Missing from the standard:</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="comment">//       -  an entity with reference type and is initialized with an</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <span class="comment">//          expression that is value-dependent [C++11]</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *Var = dyn_cast<VarDecl>(D)) {</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     <span class="keywordflow">if</span> ((Ctx.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().CPlusPlus11 ?</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>            Var->getType()->isLiteralType(Ctx) :</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>            Var->getType()->isIntegralOrEnumerationType()) &&</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>         (Var->getType().isConstQualified() ||</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>          Var->getType()->isReferenceType())) {</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init = Var->getAnyInitializer())</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>         <span class="keywordflow">if</span> (Init->isValueDependent()) {</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>           ValueDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>           InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>         }</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     }</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> </div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     <span class="comment">// (VD) - FIXME: Missing from the standard: </span></div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     <span class="comment">//      -  a member function or a static data member of the current </span></div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     <span class="comment">//         instantiation</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     <span class="keywordflow">if</span> (Var->isStaticDataMember() && </div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>         Var->getDeclContext()->isDependentContext()) {</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       ValueDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>       InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>       <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TInfo = Var->getFirstDecl()->getTypeSourceInfo();</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>       <span class="keywordflow">if</span> (TInfo-><a class="code" href="classclang_1_1TypeSourceInfo.html#affbab53588a16a2bc948f2493d93a4e2" title="Return the type wrapped by this type source info.">getType</a>()-><a class="code" href="classclang_1_1Type.html#a9394ebc74a8c7ad58b9f15abafcbbde2">isIncompleteArrayType</a>())</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>         TypeDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     }</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     </div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   }</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   <span class="comment">// (VD) - FIXME: Missing from the standard: </span></div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   <span class="comment">//      -  a member function or a static data member of the current </span></div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <span class="comment">//         instantiation</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   <span class="keywordflow">if</span> (isa<CXXMethodDecl>(D) && D-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>()-><a class="code" href="classclang_1_1DeclContext.html#a0d06ccd1db1b1f60e91d95d50aeae75d" title="Determines whether this context is dependent on a template parameter.">isDependentContext</a>()) {</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     ValueDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>   }</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> }</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="keywordtype">void</span> DeclRefExpr::computeDependence(<span class="keyword">const</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> &Ctx) {</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="keywordtype">bool</span> TypeDependent = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="keywordtype">bool</span> ValueDependent = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   <span class="keywordtype">bool</span> InstantiationDependent = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   <a class="code" href="Expr_8cpp.html#aac62379e242f4067ff25e8ac72939f6f" title="Compute the type-, value-, and instantiation-dependence of a declaration reference based on the decla...">computeDeclRefDependence</a>(Ctx, <a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>(), <a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), TypeDependent,</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>                            ValueDependent, InstantiationDependent);</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>   </div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   <span class="comment">// (TD) C++ [temp.dep.expr]p3:</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <span class="comment">//   An id-expression is type-dependent if it contains:</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   <span class="comment">// and </span></div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   <span class="comment">// (VD) C++ [temp.dep.constexpr]p2:</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   <span class="comment">//  An identifier is value-dependent if it is:</span></div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   <span class="keywordflow">if</span> (!TypeDependent && !ValueDependent &&</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>       <a class="code" href="classclang_1_1DeclRefExpr.html#adc1b59b4a37f7caa694300701faf4ee8" title="Determines whether this declaration reference was followed by an explicit template argument list...">hasExplicitTemplateArgs</a>() && </div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>       <a class="code" href="classclang_1_1TemplateSpecializationType.html#a972ef0639fea39379f7fea5129921683" title="Determine whether any of the given template arguments are dependent.">TemplateSpecializationType::anyDependentTemplateArguments</a>(</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>                                                             <a class="code" href="classclang_1_1DeclRefExpr.html#a5d2405fcef137a4770f85e6247d7cab1" title="Retrieve the template arguments provided as part of this template-id.">getTemplateArgs</a>(), </div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>                                                        <a class="code" href="classclang_1_1DeclRefExpr.html#a6c6408dbf7d4583386c4c15b2852735a" title="Retrieve the number of template arguments provided as part of this template-id.">getNumTemplateArgs</a>(),</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>                                                       InstantiationDependent)) {</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     TypeDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     ValueDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   }</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   </div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.TypeDependent = TypeDependent;</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ValueDependent = ValueDependent;</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>   <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.InstantiationDependent = InstantiationDependent;</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   <span class="comment">// Is the declaration a parameter pack?</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>()->isParameterPack())</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ContainsUnexpandedParameterPack = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> }</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span> </div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> DeclRefExpr::DeclRefExpr(<span class="keyword">const</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> &Ctx,</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>                          <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> QualifierLoc,</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</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> TemplateKWLoc,</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>                          <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *D, <span class="keywordtype">bool</span> RefersToEnclosingLocal,</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>                          <span class="keyword">const</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> &NameInfo,</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>                          <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *FoundD,</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>                          <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentListInfo.html">TemplateArgumentListInfo</a> *TemplateArgs,</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>                          <a class="code" href="classclang_1_1QualType.html">QualType</a> T, <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="l00377"></a><span class="lineno">  377</span>   : <a class="code" href="classclang_1_1Expr.html">Expr</a>(DeclRefExprClass, T, VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     D(D), Loc(NameInfo.getLoc()), DNLoc(NameInfo.<a class="code" href="Types_8cpp.html#a2cc737cac8cce2fb6fe373d827e77b5c">getInfo</a>()) {</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   DeclRefExprBits.HasQualifier = QualifierLoc ? 1 : 0;</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   <span class="keywordflow">if</span> (QualifierLoc)</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     getInternalQualifierLoc() = QualifierLoc;</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   DeclRefExprBits.HasFoundDecl = FoundD ? 1 : 0;</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   <span class="keywordflow">if</span> (FoundD)</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     getInternalFoundDecl() = FoundD;</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   DeclRefExprBits.HasTemplateKWAndArgsInfo</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     = (TemplateArgs || TemplateKWLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>()) ? 1 : 0;</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   DeclRefExprBits.RefersToEnclosingLocal = RefersToEnclosingLocal;</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   <span class="keywordflow">if</span> (TemplateArgs) {</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     <span class="keywordtype">bool</span> Dependent = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     <span class="keywordtype">bool</span> InstantiationDependent = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="keywordtype">bool</span> ContainsUnexpandedParameterPack = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     getTemplateKWAndArgsInfo()->initializeFrom(TemplateKWLoc, *TemplateArgs,</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>                                                Dependent,</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>                                                InstantiationDependent,</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>                                                ContainsUnexpandedParameterPack);</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     <span class="keywordflow">if</span> (InstantiationDependent)</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       setInstantiationDependent(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (TemplateKWLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>()) {</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     getTemplateKWAndArgsInfo()->initializeFrom(TemplateKWLoc);</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>   }</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>   DeclRefExprBits.HadMultipleCandidates = 0;</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span> </div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>   computeDependence(Ctx);</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"><a class="code" href="classclang_1_1DeclRefExpr.html#a04911722f06e6ca8705dd58a8e65d0c3">  406</a></span> <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *DeclRefExpr::Create(<span class="keyword">const</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="l00407"></a><span class="lineno">  407</span>                                  <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> QualifierLoc,</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</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> TemplateKWLoc,</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>                                  <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *D,</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>                                  <span class="keywordtype">bool</span> RefersToEnclosingLocal,</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</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> NameLoc,</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>                                  <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</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="l00414"></a><span class="lineno">  414</span>                                  <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *FoundD,</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentListInfo.html">TemplateArgumentListInfo</a> *TemplateArgs) {</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a04911722f06e6ca8705dd58a8e65d0c3">Create</a>(Context, QualifierLoc, TemplateKWLoc, D,</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>                 RefersToEnclosingLocal,</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>                 <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a>(D-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>(), NameLoc),</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>                 T, VK, FoundD, TemplateArgs);</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> }</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span> </div>
+<div class="line"><a name="l00422"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#ad0634ba1ae3b17e586217ea98577fd6b">  422</a></span> <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a04911722f06e6ca8705dd58a8e65d0c3">DeclRefExpr::Create</a>(<span class="keyword">const</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="l00423"></a><span class="lineno">  423</span>                                  <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> QualifierLoc,</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</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> TemplateKWLoc,</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>                                  <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *D,</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>                                  <span class="keywordtype">bool</span> RefersToEnclosingLocal,</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>                                  <span class="keyword">const</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> &NameInfo,</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>                                  <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</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="l00430"></a><span class="lineno">  430</span>                                  <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *FoundD,</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentListInfo.html">TemplateArgumentListInfo</a> *TemplateArgs) {</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>   <span class="comment">// Filter out cases where the found Decl is the same as the value refenenced.</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   <span class="keywordflow">if</span> (D == FoundD)</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     FoundD = 0;</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> </div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <a class="code" href="stddef_8h.html#aa9d55e2f20e580b7445617d0d12fff6e">std::size_t</a> Size = <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>);</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>   <span class="keywordflow">if</span> (QualifierLoc)</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     Size += <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a>);</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   <span class="keywordflow">if</span> (FoundD)</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     Size += <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *);</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>   <span class="keywordflow">if</span> (TemplateArgs)</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     Size += <a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html#aad31d15ecc2f14993f69bff79cbe3260">ASTTemplateKWAndArgsInfo::sizeFor</a>(TemplateArgs-><a class="code" href="classclang_1_1TemplateArgumentListInfo.html#aa7dc7d042c01adf26f0bd58e1623d3f4">size</a>());</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (TemplateKWLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>())</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>     Size += <a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html#aad31d15ecc2f14993f69bff79cbe3260">ASTTemplateKWAndArgsInfo::sizeFor</a>(0);</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span> </div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   <span class="keywordtype">void</span> *Mem = Context.<a class="code" href="classclang_1_1ASTContext.html#a2b0efa9919a08d2fb955f3003c304aa9">Allocate</a>(Size, llvm::alignOf<DeclRefExpr>());</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (Mem) <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>(Context, QualifierLoc, TemplateKWLoc, D,</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>                                RefersToEnclosingLocal,</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>                                NameInfo, FoundD, TemplateArgs, T, VK);</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"><a class="code" href="classclang_1_1DeclRefExpr.html#a4d3eca9ce3aaef2eb9b7fc08b72b542b">  452</a></span> <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a4d3eca9ce3aaef2eb9b7fc08b72b542b" title="Construct an empty declaration reference expression.">DeclRefExpr::CreateEmpty</a>(<span class="keyword">const</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="l00453"></a><span class="lineno">  453</span>                                       <span class="keywordtype">bool</span> HasQualifier,</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>                                       <span class="keywordtype">bool</span> HasFoundDecl,</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>                                       <span class="keywordtype">bool</span> HasTemplateKWAndArgsInfo,</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>                                       <span class="keywordtype">unsigned</span> NumTemplateArgs) {</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>   <a class="code" href="stddef_8h.html#aa9d55e2f20e580b7445617d0d12fff6e">std::size_t</a> Size = <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>);</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>   <span class="keywordflow">if</span> (HasQualifier)</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>     Size += <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a>);</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>   <span class="keywordflow">if</span> (HasFoundDecl)</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     Size += <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *);</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>   <span class="keywordflow">if</span> (HasTemplateKWAndArgsInfo)</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>     Size += <a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html#aad31d15ecc2f14993f69bff79cbe3260">ASTTemplateKWAndArgsInfo::sizeFor</a>(NumTemplateArgs);</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span> </div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>   <span class="keywordtype">void</span> *Mem = Context.<a class="code" href="classclang_1_1ASTContext.html#a2b0efa9919a08d2fb955f3003c304aa9">Allocate</a>(Size, llvm::alignOf<DeclRefExpr>());</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (Mem) <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a>());</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span> }</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span> </div>
+<div class="line"><a name="l00469"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#acc93335153ba84a4fe505566db291b97">  469</a></span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1DeclRefExpr.html#acc93335153ba84a4fe505566db291b97">DeclRefExpr::getLocStart</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1DeclRefExpr.html#ab790630e8b2e9e490b86cb5e6ea1c35a" title="Determine whether this declaration reference was preceded by a C++ nested-name-specifier, e.g., N::foo.">hasQualifier</a>())</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclRefExpr.html#aa9be2986f6c7cf13e6327a2c417a47f0" title="If the name was qualified, retrieves the nested-name-specifier that precedes the name, with source-location information.">getQualifierLoc</a>().<a class="code" href="classclang_1_1NestedNameSpecifierLoc.html#ae4eeef0e7ae59f58a3f7cdf5d145481c" title="Retrieve the location of the beginning of this nested-name-specifier.">getBeginLoc</a>();</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclRefExpr.html#adc8df026c9385651a3bda72a4ebbd7ff">getNameInfo</a>().<a class="code" href="structclang_1_1DeclarationNameInfo.html#aee986d53a28cf44b29b9920a5de15cfe">getLocStart</a>();</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> }</div>
+<div class="line"><a name="l00474"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a8ff400ff5047e7f07ada527727fae66a">  474</a></span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1DeclRefExpr.html#a8ff400ff5047e7f07ada527727fae66a">DeclRefExpr::getLocEnd</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1DeclRefExpr.html#adc1b59b4a37f7caa694300701faf4ee8" title="Determines whether this declaration reference was followed by an explicit template argument list...">hasExplicitTemplateArgs</a>())</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a2e8cd9704bf849d38a54d3a2f8160086" title="Retrieve the location of the right angle bracket ending the explicit template argument list following...">getRAngleLoc</a>();</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclRefExpr.html#adc8df026c9385651a3bda72a4ebbd7ff">getNameInfo</a>().<a class="code" href="structclang_1_1DeclarationNameInfo.html#a34fe9aa491b6e883c6835c28e9e908db">getLocEnd</a>();</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span> }</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span> <span class="comment">// FIXME: Maybe this should use DeclPrinter with a special "print predefined</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span> <span class="comment">// expr" policy instead.</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#a3c318ef01a2b227e51dc3dbece0a8f63">  482</a></span> std::string <a class="code" href="classclang_1_1PredefinedExpr.html#a3c318ef01a2b227e51dc3dbece0a8f63">PredefinedExpr::ComputeName</a>(<a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50">IdentType</a> IT, <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *CurrentDecl) {</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</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> = CurrentDecl-><a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>();</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span> </div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>   <span class="keywordflow">if</span> (IT == <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a4db1d92858c9789019b184fae2fc111a">PredefinedExpr::FuncDName</a>) {</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *ND = dyn_cast<NamedDecl>(CurrentDecl)) {</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>       <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<MangleContext></a> MC;</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>       MC.reset(Context.<a class="code" href="classclang_1_1ASTContext.html#a7ebd1e4da4f441292c23c5811806eeca">createMangleContext</a>());</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>       <span class="keywordflow">if</span> (MC->shouldMangleDeclName(ND)) {</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>         <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> Buffer;</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>         llvm::raw_svector_ostream Out(Buffer);</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *CD = dyn_cast<CXXConstructorDecl>(ND))</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>           MC->mangleCXXCtor(CD, <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16da09d2d6db60ced3215694a5b6c13888be" title="Base object ctor.">Ctor_Base</a>, Out);</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *DD = dyn_cast<CXXDestructorDecl>(ND))</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>           MC->mangleCXXDtor(DD, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a642f2aa7faf76ed5f2ca52bb348a34e3" title="Base object dtor.">Dtor_Base</a>, Out);</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>           MC->mangleName(ND, Out);</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span> </div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>         Out.flush();</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>         <span class="keywordflow">if</span> (!Buffer.empty() && Buffer.front() == <span class="charliteral">'\01'</span>)</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>           <span class="keywordflow">return</span> Buffer.substr(1);</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>         <span class="keywordflow">return</span> Buffer.str();</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>       } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>         <span class="keywordflow">return</span> ND->getIdentifier()->getName();</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     }</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>   }</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD = dyn_cast<FunctionDecl>(CurrentDecl)) {</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>     <span class="keywordflow">if</span> (IT != <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a471dba9ecad152996c6a24a562b7892b">PrettyFunction</a> && IT != <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a042dfb8d95fd03bec822b0516ce5fe49">PrettyFunctionNoVirtual</a>)</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       <span class="keywordflow">return</span> FD->getNameAsString();</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> </div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>     <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> Name;</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     llvm::raw_svector_ostream Out(Name);</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>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = dyn_cast<CXXMethodDecl>(FD)) {</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>       <span class="keywordflow">if</span> (MD->isVirtual() && IT != <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a042dfb8d95fd03bec822b0516ce5fe49">PrettyFunctionNoVirtual</a>)</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>         Out << <span class="stringliteral">"virtual "</span>;</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>       <span class="keywordflow">if</span> (MD->isStatic())</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>         Out << <span class="stringliteral">"static "</span>;</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>     }</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span> </div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     <a class="code" href="structclang_1_1PrintingPolicy.html" title="Describes how types, statements, expressions, and declarations should be printed.">PrintingPolicy</a> Policy(Context.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>());</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     std::string Proto;</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     llvm::raw_string_ostream POut(Proto);</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     FD->printQualifiedName(POut, Policy);</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> </div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *<a class="code" href="classclang_1_1Decl.html">Decl</a> = FD;</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a>* Pattern = FD-><a class="code" href="classclang_1_1FunctionDecl.html#a09a34cb98a4932b40c05aa31fc7ee7ea" title="Retrieve the function declaration from which this function could be instantiated, if it is an instant...">getTemplateInstantiationPattern</a>())</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>       Decl = Pattern;</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType.html">FunctionType</a> *AFT = Decl-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1FunctionType.html">FunctionType</a>>();</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FT = 0;</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>     <span class="keywordflow">if</span> (FD->hasWrittenPrototype())</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>       FT = dyn_cast<FunctionProtoType>(AFT);</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span> </div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     POut << <span class="stringliteral">"("</span>;</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>     <span class="keywordflow">if</span> (FT) {</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Decl-><a class="code" href="classclang_1_1FunctionDecl.html#a6e93edc7b4b6fad6ae4830e005ec539f">getNumParams</a>(); i != e; ++i) {</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>         <span class="keywordflow">if</span> (i) POut << <span class="stringliteral">", "</span>;</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>         POut << Decl-><a class="code" href="classclang_1_1FunctionDecl.html#ae9634725f4146974e541228f996a96cf">getParamDecl</a>(i)-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>().<a class="code" href="classclang_1_1QualType.html#a7b7202e8101befe32cd346a2fbe33226">stream</a>(Policy);</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>       }</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span> </div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>       <span class="keywordflow">if</span> (FT->isVariadic()) {</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>         <span class="keywordflow">if</span> (FD->getNumParams()) POut << <span class="stringliteral">", "</span>;</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>         POut << <span class="stringliteral">"..."</span>;</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>       }</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>     }</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>     POut << <span class="stringliteral">")"</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">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = dyn_cast<CXXMethodDecl>(FD)) {</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType.html">FunctionType</a> *FT = MD->getType()-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1FunctionType.html">FunctionType</a>>();</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>       <span class="keywordflow">if</span> (FT-><a class="code" href="classclang_1_1FunctionType.html#aecd35bf2874df5fa899e4596a503e75c">isConst</a>())</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>         POut << <span class="stringliteral">" const"</span>;</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>       <span class="keywordflow">if</span> (FT-><a class="code" href="classclang_1_1FunctionType.html#a9b46eb40cec5c36d1b9de7b5a66e8578">isVolatile</a>())</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>         POut << <span class="stringliteral">" volatile"</span>;</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>       <a class="code" href="namespaceclang.html#a39da38c8381c23db69e49813390fa7f6" title="The kind of C++0x ref-qualifier associated with a function type, which determines whether a member fu...">RefQualifierKind</a> Ref = MD->getRefQualifier();</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>       <span class="keywordflow">if</span> (Ref == <a class="code" href="namespaceclang.html#a39da38c8381c23db69e49813390fa7f6ae325dba23a4167f283e0f7dc6c41b858" title="An lvalue ref-qualifier was provided (&).">RQ_LValue</a>)</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         POut << <span class="stringliteral">" &"</span>;</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Ref == <a class="code" href="namespaceclang.html#a39da38c8381c23db69e49813390fa7f6aed8a4fc269aa34b5f8c5ec978a999dfb" title="An rvalue ref-qualifier was provided (&&).">RQ_RValue</a>)</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>         POut << <span class="stringliteral">" &&"</span>;</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>     }</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span> </div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>     <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<const ClassTemplateSpecializationDecl *, 8></a> SpecsTy;</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>     SpecsTy Specs;</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *Ctx = FD->getDeclContext();</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>     <span class="keywordflow">while</span> (Ctx && isa<NamedDecl>(Ctx)) {</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1ClassTemplateSpecializationDecl.html" title="Represents a class template specialization, which refers to a class template with a given set of temp...">ClassTemplateSpecializationDecl</a> *Spec</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>                                = dyn_cast<<a class="code" href="classclang_1_1ClassTemplateSpecializationDecl.html" title="Represents a class template specialization, which refers to a class template with a given set of temp...">ClassTemplateSpecializationDecl</a>>(Ctx);</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>       <span class="keywordflow">if</span> (Spec && !Spec-><a class="code" href="classclang_1_1ClassTemplateSpecializationDecl.html#af1f7fb6803ac5344397f61423708e902">isExplicitSpecialization</a>())</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>         Specs.push_back(Spec);</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>       Ctx = Ctx-><a class="code" href="classclang_1_1DeclContext.html#a31c99b38017e8d702fda9c0f1d021186" title="getParent - Returns the containing DeclContext.">getParent</a>();</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     }</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span> </div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     std::string TemplateParams;</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>     llvm::raw_string_ostream TOut(TemplateParams);</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>     <span class="keywordflow">for</span> (SpecsTy::reverse_iterator I = Specs.rbegin(), E = Specs.rend();</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>          I != E; ++I) {</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateParameterList.html" title="Stores a list of template parameters for a TemplateDecl and its derived classes.">TemplateParameterList</a> *Params </div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>                   = (*I)->getSpecializedTemplate()->getTemplateParameters();</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentList.html" title="A template argument list.">TemplateArgumentList</a> &<a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a> = (*I)->getTemplateArgs();</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>       assert(Params-><a class="code" href="classclang_1_1TemplateParameterList.html#a2ce2ffffbaa44a8bf317655f1ff5d845">size</a>() == Args.<a class="code" href="classclang_1_1TemplateArgumentList.html#a74ca2574daffc53ce30fa549dbf25145" title="Retrieve the number of template arguments in this template argument list.">size</a>());</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, numParams = Params-><a class="code" href="classclang_1_1TemplateParameterList.html#a2ce2ffffbaa44a8bf317655f1ff5d845">size</a>(); i != numParams; ++i) {</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>         StringRef <a class="code" href="SemaOverload_8cpp.html#af465899bf43044df83229078154bc2ed">Param</a> = Params-><a class="code" href="classclang_1_1TemplateParameterList.html#ac087742e8b1da896b9e7f4d80b749ec4">getParam</a>(i)-><a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>();</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>         <span class="keywordflow">if</span> (Param.empty()) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>         TOut << Param << <span class="stringliteral">" = "</span>;</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>         Args.<a class="code" href="classclang_1_1TemplateArgumentList.html#af1b70612b7a437ed6594009e8f6cf957" title="Retrieve the template argument at a given index.">get</a>(i).<a class="code" href="classclang_1_1TemplateArgument.html#a89564549224fa1b89430571c7dcafa7a" title="Print this template argument to the given output stream.">print</a>(Policy, TOut);</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>         TOut << <span class="stringliteral">", "</span>;</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>       }</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>     }</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span> </div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>     <a class="code" href="classclang_1_1FunctionTemplateSpecializationInfo.html" title="Provides information about a function template specialization, which is a FunctionDecl that has been ...">FunctionTemplateSpecializationInfo</a> *FSI </div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>                                           = FD->getTemplateSpecializationInfo();</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>     <span class="keywordflow">if</span> (FSI && !FSI-><a class="code" href="classclang_1_1FunctionTemplateSpecializationInfo.html#afbaf7e069f362f59ff6bf2998c22636b">isExplicitSpecialization</a>()) {</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateParameterList.html" title="Stores a list of template parameters for a TemplateDecl and its derived classes.">TemplateParameterList</a>* Params </div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>                                   = FSI-><a class="code" href="classclang_1_1FunctionTemplateSpecializationInfo.html#a5d0a8b013ccd4b54331b7f0da534e822" title="Retrieve the template from which this function was specialized.">getTemplate</a>()-><a class="code" href="classclang_1_1TemplateDecl.html#a39946376f9b9d554c6565bf441a115a4" title="Get the list of template parameters.">getTemplateParameters</a>();</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentList.html" title="A template argument list.">TemplateArgumentList</a>* <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a> = FSI-><a class="code" href="classclang_1_1FunctionTemplateSpecializationInfo.html#a0bd9db1369a322a8fd7fd8d5ce39410b" title="The template arguments used to produce the function template specialization from the function templat...">TemplateArguments</a>;</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>       assert(Params-><a class="code" href="classclang_1_1TemplateParameterList.html#a2ce2ffffbaa44a8bf317655f1ff5d845">size</a>() == Args-><a class="code" href="classclang_1_1TemplateArgumentList.html#a74ca2574daffc53ce30fa549dbf25145" title="Retrieve the number of template arguments in this template argument list.">size</a>());</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Params-><a class="code" href="classclang_1_1TemplateParameterList.html#a2ce2ffffbaa44a8bf317655f1ff5d845">size</a>(); i != e; ++i) {</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>         StringRef <a class="code" href="SemaOverload_8cpp.html#af465899bf43044df83229078154bc2ed">Param</a> = Params-><a class="code" href="classclang_1_1TemplateParameterList.html#ac087742e8b1da896b9e7f4d80b749ec4">getParam</a>(i)-><a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>();</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>         <span class="keywordflow">if</span> (Param.empty()) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>         TOut << Param << <span class="stringliteral">" = "</span>;</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         Args-><a class="code" href="classclang_1_1TemplateArgumentList.html#af1b70612b7a437ed6594009e8f6cf957" title="Retrieve the template argument at a given index.">get</a>(i).<a class="code" href="classclang_1_1TemplateArgument.html#a89564549224fa1b89430571c7dcafa7a" title="Print this template argument to the given output stream.">print</a>(Policy, TOut);</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>         TOut << <span class="stringliteral">", "</span>;</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       }</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>     }</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span> </div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>     TOut.flush();</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>     <span class="keywordflow">if</span> (!TemplateParams.empty()) {</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       <span class="comment">// remove the trailing comma and space</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>       TemplateParams.resize(TemplateParams.size() - 2);</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       POut << <span class="stringliteral">" ["</span> << TemplateParams << <span class="stringliteral">"]"</span>;</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>     }</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span> </div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>     POut.flush();</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span> </div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>     <span class="comment">// Print "auto" for all deduced return types. This includes C++1y return</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>     <span class="comment">// type deduction and lambdas. For trailing return types resolve the</span></div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>     <span class="comment">// decltype expression. Otherwise print the real type when this is</span></div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     <span class="comment">// not a constructor or destructor.</span></div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     <span class="keywordflow">if</span> ((isa<CXXMethodDecl>(FD) &&</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>          cast<CXXMethodDecl>(FD)->getParent()-><a class="code" href="ItaniumMangle_8cpp.html#a57ebf33b7c556f4682e4d9928ebe9c8f">isLambda</a>()) ||</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>         (FT && FT->getResultType()->getAs<<a class="code" href="classclang_1_1AutoType.html" title="Represents a C++11 auto or C++1y decltype(auto) type.">AutoType</a>>()))</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>       Proto = <span class="stringliteral">"auto "</span> + Proto;</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (FT && FT->getResultType()->getAs<<a class="code" href="classclang_1_1DecltypeType.html" title="DecltypeType (C++0x)">DecltypeType</a>>())</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>       FT->getResultType()->getAs<<a class="code" href="classclang_1_1DecltypeType.html" title="DecltypeType (C++0x)">DecltypeType</a>>()-><a class="code" href="RegionStore_8cpp.html#aa40d60a0a659ed599a32ba7f410edd06">getUnderlyingType</a>()</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>           .<a class="code" href="classclang_1_1QualType.html#a30d9e7a525d651b8ee1fcf1002693068">getAsStringInternal</a>(Proto, Policy);</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!isa<CXXConstructorDecl>(FD) && !isa<CXXDestructorDecl>(FD))</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>       AFT-><a class="code" href="classclang_1_1FunctionType.html#aafa453cd7e81a7c3d6c61f261e68afe8">getResultType</a>().<a class="code" href="classclang_1_1QualType.html#a30d9e7a525d651b8ee1fcf1002693068">getAsStringInternal</a>(Proto, Policy);</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span> </div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>     Out << Proto;</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>     Out.flush();</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>     <span class="keywordflow">return</span> Name.str().str();</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>   }</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CapturedDecl.html" title="This represents the body of a CapturedStmt, and serves as its DeclContext.">CapturedDecl</a> *CD = dyn_cast<CapturedDecl>(CurrentDecl)) {</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC = CD-><a class="code" href="classclang_1_1DeclContext.html#a31c99b38017e8d702fda9c0f1d021186" title="getParent - Returns the containing DeclContext.">getParent</a>(); DC; DC = DC-><a class="code" href="classclang_1_1DeclContext.html#a31c99b38017e8d702fda9c0f1d021186" title="getParent - Returns the containing DeclContext.">getParent</a>())</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>       <span class="comment">// Skip to its enclosing function or method, but not its enclosing</span></div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>       <span class="comment">// CapturedDecl.</span></div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>       <span class="keywordflow">if</span> (DC->isFunctionOrMethod() && (DC->getDeclKind() != Decl::Captured)) {</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D = <a class="code" href="classclang_1_1Decl.html#a5997b082d9c85ca9e29b061fbd330ce1">Decl::castFromDeclContext</a>(DC);</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>         <span class="keywordflow">return</span> <a class="code" href="classclang_1_1PredefinedExpr.html#a3c318ef01a2b227e51dc3dbece0a8f63">ComputeName</a>(IT, D);</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>       }</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     llvm_unreachable(<span class="stringliteral">"CapturedDecl not inside a function or method"</span>);</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>   }</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MD = dyn_cast<ObjCMethodDecl>(CurrentDecl)) {</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> Name;</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     llvm::raw_svector_ostream Out(Name);</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>     Out << (MD->isInstanceMethod() ? <span class="charliteral">'-'</span> : <span class="charliteral">'+'</span>);</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>     Out << <span class="charliteral">'['</span>;</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span> </div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>     <span class="comment">// For incorrect code, there might not be an ObjCInterfaceDecl.  Do</span></div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     <span class="comment">// a null check to avoid a crash.</span></div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> = MD->getClassInterface())</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>       Out << *<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>;</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span> </div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCCategoryImplDecl.html">ObjCCategoryImplDecl</a> *CID =</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>         dyn_cast<ObjCCategoryImplDecl>(MD->getDeclContext()))</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>       Out << <span class="charliteral">'('</span> << *CID << <span class="charliteral">')'</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>     Out <<  <span class="charliteral">' '</span>;</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     Out << MD->getSelector().getAsString();</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>     Out <<  <span class="charliteral">']'</span>;</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span> </div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>     Out.flush();</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>     <span class="keywordflow">return</span> Name.str().str();</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>   }</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>   <span class="keywordflow">if</span> (isa<TranslationUnitDecl>(CurrentDecl) && IT == <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a471dba9ecad152996c6a24a562b7892b">PrettyFunction</a>) {</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>     <span class="comment">// __PRETTY_FUNCTION__ -> "top level", the others produce an empty string.</span></div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>     <span class="keywordflow">return</span> <span class="stringliteral">"top level"</span>;</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   }</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>   <span class="keywordflow">return</span> <span class="stringliteral">""</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"><a class="code" href="classclang_1_1APNumericStorage.html#aecc4f5ec57da8f775e6355e55efe2e4b">  674</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1APNumericStorage.html#aecc4f5ec57da8f775e6355e55efe2e4b">APNumericStorage::setIntValue</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C,</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>                                    <span class="keyword">const</span> llvm::APInt &Val) {</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>   <span class="keywordflow">if</span> (hasAllocation())</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>     C.<a class="code" href="classclang_1_1ASTContext.html#a2330fd03812b2f8707442f4c8e5da739">Deallocate</a>(<a class="code" href="classclang_1_1APNumericStorage.html#a3ed740c3b319f1dd2ca8bf6e93ad74d9" title="Used to store the >64 bits integer value.">pVal</a>);</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span> </div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>   BitWidth = Val.getBitWidth();</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>   <span class="keywordtype">unsigned</span> NumWords = Val.getNumWords();</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>   <span class="keyword">const</span> uint64_t* Words = Val.getRawData();</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>   <span class="keywordflow">if</span> (NumWords > 1) {</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>     <a class="code" href="classclang_1_1APNumericStorage.html#a3ed740c3b319f1dd2ca8bf6e93ad74d9" title="Used to store the >64 bits integer value.">pVal</a> = <span class="keyword">new</span> (C) uint64_t[NumWords];</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>     std::copy(Words, Words + NumWords, <a class="code" href="classclang_1_1APNumericStorage.html#a3ed740c3b319f1dd2ca8bf6e93ad74d9" title="Used to store the >64 bits integer value.">pVal</a>);</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (NumWords == 1)</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     <a class="code" href="classclang_1_1APNumericStorage.html#a4b323406329e7cbd9e60973f39742b40" title="Used to store the <= 64 bits integer value.">VAL</a> = Words[0];</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>     <a class="code" href="classclang_1_1APNumericStorage.html#a4b323406329e7cbd9e60973f39742b40" title="Used to store the <= 64 bits integer value.">VAL</a> = 0;</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> </div>
+<div class="line"><a name="l00691"></a><span class="lineno"><a class="code" href="classclang_1_1IntegerLiteral.html#a1f0aa1ab3bb32d9c3cdb78049ed9e12c">  691</a></span> IntegerLiteral::IntegerLiteral(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <span class="keyword">const</span> llvm::APInt &V,</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>                                <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>, <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> l)</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>   : <a class="code" href="classclang_1_1Expr.html">Expr</a>(IntegerLiteralClass, type, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>,</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>          <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>     Loc(l) {</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>   assert(type-><a class="code" href="classclang_1_1Type.html#a8bde7a56623fd89e9efafde792c56dac">isIntegerType</a>() && <span class="stringliteral">"Illegal type in IntegerLiteral"</span>);</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>   assert(V.getBitWidth() == C.<a class="code" href="classclang_1_1ASTContext.html#a80afaaf9a6583ac2fa33734057b8220b">getIntWidth</a>(type) &&</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>          <span class="stringliteral">"Integer type is not the correct size for constant."</span>);</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>   <a class="code" href="classclang_1_1APIntStorage.html#a6838a8ac3812017f1fdad135db8091c9">setValue</a>(C, V);</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span> }</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span> </div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span> <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a> *</div>
+<div class="line"><a name="l00703"></a><span class="lineno"><a class="code" href="classclang_1_1IntegerLiteral.html#a68782c17506bd26183c21aa2bf9dc1d7">  703</a></span> <a class="code" href="classclang_1_1IntegerLiteral.html#a68782c17506bd26183c21aa2bf9dc1d7" title="Returns a new integer literal with value 'V' and type 'type'.">IntegerLiteral::Create</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <span class="keyword">const</span> llvm::APInt &V,</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>                        <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>, <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> l) {</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a>(C, V, type, l);</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span> }</div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span> </div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span> <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a> *</div>
+<div class="line"><a name="l00709"></a><span class="lineno"><a class="code" href="classclang_1_1IntegerLiteral.html#a5323d9f8fe081eb73aba71d55191dd2a">  709</a></span> <a class="code" href="classclang_1_1IntegerLiteral.html#a68782c17506bd26183c21aa2bf9dc1d7" title="Returns a new integer literal with value 'V' and type 'type'.">IntegerLiteral::Create</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty) {</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a>(Empty);</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span> }</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span> </div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span> FloatingLiteral::FloatingLiteral(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <span class="keyword">const</span> llvm::APFloat &V,</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>                                  <span class="keywordtype">bool</span> isexact, <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1Type.html">Type</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> L)</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>   : <a class="code" href="classclang_1_1Expr.html">Expr</a>(FloatingLiteralClass, Type, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>,</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>          <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), Loc(L) {</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>   setSemantics(V.getSemantics());</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>   <a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.IsExact = isexact;</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>   <a class="code" href="classclang_1_1APIntStorage.html#a6838a8ac3812017f1fdad135db8091c9">setValue</a>(C, V);</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span> }</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span> </div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span> FloatingLiteral::FloatingLiteral(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, EmptyShell Empty)</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>   : <a class="code" href="classclang_1_1Expr.html">Expr</a>(FloatingLiteralClass, Empty) {</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>   setRawSemantics(<a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5ca517e11648c147a6ff8698bba50422d4f">IEEEhalf</a>);</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>   <a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.IsExact = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span> }</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span> </div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span> <a class="code" href="classclang_1_1FloatingLiteral.html">FloatingLiteral</a> *</div>
+<div class="line"><a name="l00729"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#a2bc4547a98776a980ebc7c7f81efdd3f">  729</a></span> <a class="code" href="classclang_1_1FloatingLiteral.html#a2bc4547a98776a980ebc7c7f81efdd3f">FloatingLiteral::Create</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <span class="keyword">const</span> llvm::APFloat &V,</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>                         <span class="keywordtype">bool</span> isexact, <a class="code" href="classclang_1_1QualType.html">QualType</a> Type, <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> L) {</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1FloatingLiteral.html">FloatingLiteral</a>(C, V, isexact, Type, L);</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span> }</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span> </div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span> <a class="code" href="classclang_1_1FloatingLiteral.html">FloatingLiteral</a> *</div>
+<div class="line"><a name="l00735"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#aebfa593c2cea1a9a1a99dfaa50029d90">  735</a></span> <a class="code" href="classclang_1_1FloatingLiteral.html#a2bc4547a98776a980ebc7c7f81efdd3f">FloatingLiteral::Create</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty) {</div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1FloatingLiteral.html">FloatingLiteral</a>(C, Empty);</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span> }</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span> </div>
+<div class="line"><a name="l00739"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#a26bb6a1d69c9a1ca48596e5c16f731e3">  739</a></span> <span class="keyword">const</span> llvm::fltSemantics &<a class="code" href="classclang_1_1FloatingLiteral.html#a26bb6a1d69c9a1ca48596e5c16f731e3" title="Return the APFloat semantics this literal uses.">FloatingLiteral::getSemantics</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>   <span class="keywordflow">switch</span>(<a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.Semantics) {</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5ca517e11648c147a6ff8698bba50422d4f">IEEEhalf</a>:</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     <span class="keywordflow">return</span> llvm::APFloat::IEEEhalf;</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5caddc121dbbb60bfce538a7f1f89ebf22b">IEEEsingle</a>:</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>     <span class="keywordflow">return</span> llvm::APFloat::IEEEsingle;</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5cac3b2d7ef0e70b1da240bdd953830d73d">IEEEdouble</a>:</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     <span class="keywordflow">return</span> llvm::APFloat::IEEEdouble;</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5ca8c3bbe79214c0eae419180b6f6a601f5">x87DoubleExtended</a>:</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>     <span class="keywordflow">return</span> llvm::APFloat::x87DoubleExtended;</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5ca0c27a5624bdb9a1b4c1e83ee0810471b">IEEEquad</a>:</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>     <span class="keywordflow">return</span> llvm::APFloat::IEEEquad;</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5ca84cd8b3cc5f3cf0f0d96acc7bdc66263">PPCDoubleDouble</a>:</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>     <span class="keywordflow">return</span> llvm::APFloat::PPCDoubleDouble;</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>   }</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>   llvm_unreachable(<span class="stringliteral">"Unrecognised floating semantics"</span>);</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span> }</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span> </div>
+<div class="line"><a name="l00757"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#a0369791d279f7eb15a48814e62d386d8">  757</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FloatingLiteral.html#a0369791d279f7eb15a48814e62d386d8" title="Set the APFloat semantics this literal uses.">FloatingLiteral::setSemantics</a>(<span class="keyword">const</span> llvm::fltSemantics &Sem) {</div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span>   <span class="keywordflow">if</span> (&Sem == &llvm::APFloat::IEEEhalf)</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>     <a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.Semantics = <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5ca517e11648c147a6ff8698bba50422d4f">IEEEhalf</a>;</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (&Sem == &llvm::APFloat::IEEEsingle)</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>     <a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.Semantics = <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5caddc121dbbb60bfce538a7f1f89ebf22b">IEEEsingle</a>;</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (&Sem == &llvm::APFloat::IEEEdouble)</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>     <a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.Semantics = <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5cac3b2d7ef0e70b1da240bdd953830d73d">IEEEdouble</a>;</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (&Sem == &llvm::APFloat::x87DoubleExtended)</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>     <a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.Semantics = <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5ca8c3bbe79214c0eae419180b6f6a601f5">x87DoubleExtended</a>;</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (&Sem == &llvm::APFloat::IEEEquad)</div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>     <a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.Semantics = <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5ca0c27a5624bdb9a1b4c1e83ee0810471b">IEEEquad</a>;</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (&Sem == &llvm::APFloat::PPCDoubleDouble)</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>     <a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.Semantics = <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5ca84cd8b3cc5f3cf0f0d96acc7bdc66263">PPCDoubleDouble</a>;</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>     llvm_unreachable(<span class="stringliteral">"Unknown floating semantics"</span>);</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span> }</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span> <span class="comment"></span></div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span> <span class="comment">/// getValueAsApproximateDouble - This returns the value as an inaccurate</span></div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span> <span class="comment">/// double.  Note that this may cause loss of precision, but is useful for</span></div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span> <span class="comment">/// debugging dumps, etc.</span></div>
+<div class="line"><a name="l00777"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#ae46cb03b9842650e681250dbc1f902b6">  777</a></span> <span class="comment"></span><span class="keywordtype">double</span> <a class="code" href="classclang_1_1FloatingLiteral.html#ae46cb03b9842650e681250dbc1f902b6">FloatingLiteral::getValueAsApproximateDouble</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>   llvm::APFloat V = <a class="code" href="classclang_1_1FloatingLiteral.html#abd8fbf2605c142c303083b99de2557d3">getValue</a>();</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>   <span class="keywordtype">bool</span> ignored;</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>   V.convert(llvm::APFloat::IEEEdouble, llvm::APFloat::rmNearestTiesToEven,</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>             &ignored);</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>   <span class="keywordflow">return</span> V.convertToDouble();</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span> }</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span> </div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span> <span class="keywordtype">int</span> StringLiteral::mapCharByteWidth(<a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> <span class="keyword">const</span> &target,StringKind k) {</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>   <span class="keywordtype">int</span> CharByteWidth = 0;</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>   <span class="keywordflow">switch</span>(k) {</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a1d65c2a7fa94893f57f6d15e3edbcb14">Ascii</a>:</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a50ddcd2275e37f6cf81ad684a5b2838a">UTF8</a>:</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>       CharByteWidth = target.<a class="code" href="classclang_1_1TargetInfo.html#a4e2ac19ae48b353248e7e15754283c8d">getCharWidth</a>();</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460af78d80b058e4f2366161f59c458ffcb9">Wide</a>:</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>       CharByteWidth = target.<a class="code" href="classclang_1_1TargetInfo.html#a78760edf75880ea00ddd20d5cc527efd">getWCharWidth</a>();</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a39a273d718f83f3182468eaabf090381">UTF16</a>:</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>       CharByteWidth = target.<a class="code" href="classclang_1_1TargetInfo.html#a799a7de59f8af11bce283e0fb0597b2a">getChar16Width</a>();</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a4c1b71b4a68274a86d73a47b3d19167f">UTF32</a>:</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>       CharByteWidth = target.<a class="code" href="classclang_1_1TargetInfo.html#a7588aa52fe468ce39765b2d245fde37e">getChar32Width</a>();</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>   }</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>   assert((CharByteWidth & 7) == 0 && <span class="stringliteral">"Assumes character size is byte multiple"</span>);</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>   CharByteWidth /= 8;</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>   assert((CharByteWidth==1 || CharByteWidth==2 || CharByteWidth==4)</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>          && <span class="stringliteral">"character byte widths supported are 1, 2, and 4 only"</span>);</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>   <span class="keywordflow">return</span> CharByteWidth;</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span> }</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span> </div>
+<div class="line"><a name="l00809"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a8707628d2fd939e14b14b1b3f499f64a">  809</a></span> <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a> *<a class="code" href="classclang_1_1StringLiteral.html#a8707628d2fd939e14b14b1b3f499f64a">StringLiteral::Create</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, StringRef Str,</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>                                      <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460">StringKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>, <span class="keywordtype">bool</span> Pascal, <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty,</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>                                      <span class="keyword">const</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="l00812"></a><span class="lineno">  812</span>                                      <span class="keywordtype">unsigned</span> NumStrs) {</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>   <span class="comment">// Allocate enough space for the StringLiteral plus an array of locations for</span></div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>   <span class="comment">// any concatenated string tokens.</span></div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>   <span class="keywordtype">void</span> *Mem = C.<a class="code" href="classclang_1_1ASTContext.html#a2b0efa9919a08d2fb955f3003c304aa9">Allocate</a>(<span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a>)+</div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>                          <span class="keyword">sizeof</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>)*(NumStrs-1),</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>                          llvm::alignOf<StringLiteral>());</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>   <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a> *SL = <span class="keyword">new</span> (Mem) <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a>(Ty);</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span> </div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>   <span class="comment">// OPTIMIZE: could allocate this appended to the StringLiteral.</span></div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>   SL-><a class="code" href="classclang_1_1StringLiteral.html#a632d622d4921be2bd7d0c05d4267bd65" title="Sets the string data to the given string data.">setString</a>(C,Str,Kind,Pascal);</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span> </div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>   SL->TokLocs[0] = Loc[0];</div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>   SL->NumConcatenated = NumStrs;</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span> </div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>   <span class="keywordflow">if</span> (NumStrs != 1)</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>     memcpy(&SL->TokLocs[1], Loc+1, <span class="keyword">sizeof</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>)*(NumStrs-1));</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>   <span class="keywordflow">return</span> SL;</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span> }</div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span> </div>
+<div class="line"><a name="l00831"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a256efef1600d3b2fb4e4b4dd5f347dfd">  831</a></span> <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a> *<a class="code" href="classclang_1_1StringLiteral.html#a256efef1600d3b2fb4e4b4dd5f347dfd" title="Construct an empty string literal.">StringLiteral::CreateEmpty</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C,</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>                                           <span class="keywordtype">unsigned</span> NumStrs) {</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>   <span class="keywordtype">void</span> *Mem = C.<a class="code" href="classclang_1_1ASTContext.html#a2b0efa9919a08d2fb955f3003c304aa9">Allocate</a>(<span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a>)+</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>                          <span class="keyword">sizeof</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>)*(NumStrs-1),</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>                          llvm::alignOf<StringLiteral>());</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>   <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a> *SL = <span class="keyword">new</span> (Mem) <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a>());</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>   SL->CharByteWidth = 0;</div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>   SL->Length = 0;</div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>   SL->NumConcatenated = NumStrs;</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>   <span class="keywordflow">return</span> SL;</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span> }</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span> </div>
+<div class="line"><a name="l00843"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#ad010c5d50fb376b8f57d58e4f911161d">  843</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1StringLiteral.html#ad010c5d50fb376b8f57d58e4f911161d">StringLiteral::outputString</a>(raw_ostream &OS)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1StringLiteral.html#a4cd7dc9166f3226b46ec4314eb9063af">getKind</a>()) {</div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a1d65c2a7fa94893f57f6d15e3edbcb14">Ascii</a>: <span class="keywordflow">break</span>; <span class="comment">// no prefix.</span></div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460af78d80b058e4f2366161f59c458ffcb9">Wide</a>:  OS << <span class="charliteral">'L'</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a50ddcd2275e37f6cf81ad684a5b2838a">UTF8</a>:  OS << <span class="stringliteral">"u8"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a39a273d718f83f3182468eaabf090381">UTF16</a>: OS << <span class="charliteral">'u'</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a4c1b71b4a68274a86d73a47b3d19167f">UTF32</a>: OS << <span class="charliteral">'U'</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>   }</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>   OS << <span class="charliteral">'"'</span>;</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> Hex[] = <span class="stringliteral">"0123456789ABCDEF"</span>;</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span> </div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>   <span class="keywordtype">unsigned</span> LastSlashX = <a class="code" href="classclang_1_1StringLiteral.html#af2c46f51df665b6837c7d11cbb4a312c">getLength</a>();</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = <a class="code" href="classclang_1_1StringLiteral.html#af2c46f51df665b6837c7d11cbb4a312c">getLength</a>(); I != N; ++I) {</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     <span class="keywordflow">switch</span> (uint32_t Char = <a class="code" href="classclang_1_1StringLiteral.html#aaa05172236515550a9a3e41d4c152b92">getCodeUnit</a>(I)) {</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>       <span class="comment">// FIXME: Convert UTF-8 back to codepoints before rendering.</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span> </div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>       <span class="comment">// Convert UTF-16 surrogate pairs back to codepoints before rendering.</span></div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>       <span class="comment">// Leave invalid surrogates alone; we'll use \x for those.</span></div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1StringLiteral.html#a4cd7dc9166f3226b46ec4314eb9063af">getKind</a>() == <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a39a273d718f83f3182468eaabf090381">UTF16</a> && I != N - 1 && Char >= 0xd800 && </div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>           Char <= 0xdbff) {</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>         uint32_t Trail = <a class="code" href="classclang_1_1StringLiteral.html#aaa05172236515550a9a3e41d4c152b92">getCodeUnit</a>(I + 1);</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>         <span class="keywordflow">if</span> (Trail >= 0xdc00 && Trail <= 0xdfff) {</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>           Char = 0x10000 + ((Char - 0xd800) << 10) + (Trail - 0xdc00);</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>           ++I;</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>         }</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>       }</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span> </div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>       <span class="keywordflow">if</span> (Char > 0xff) {</div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>         <span class="comment">// If this is a wide string, output characters over 0xff using \x</span></div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>         <span class="comment">// escapes. Otherwise, this is a UTF-16 or UTF-32 string, and Char is a</span></div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>         <span class="comment">// codepoint: use \x escapes for invalid codepoints.</span></div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1StringLiteral.html#a4cd7dc9166f3226b46ec4314eb9063af">getKind</a>() == <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460af78d80b058e4f2366161f59c458ffcb9">Wide</a> ||</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>             (Char >= 0xd800 && Char <= 0xdfff) || Char >= 0x110000) {</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>           <span class="comment">// FIXME: Is this the best way to print wchar_t?</span></div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>           OS << <span class="stringliteral">"\\x"</span>;</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>           <span class="keywordtype">int</span> <a class="code" href="namespaceclang_1_1prec.html#a9bfbe31f4770359ea44ad42e7c7ed8ffac21f3454edb476f3108f462a8e7791d3">Shift</a> = 28;</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>           <span class="keywordflow">while</span> ((Char >> Shift) == 0)</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>             Shift -= 4;</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>           <span class="keywordflow">for</span> (<span class="comment">/**/</span>; Shift >= 0; Shift -= 4)</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>             OS << Hex[(Char >> Shift) & 15];</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>           LastSlashX = I;</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>         }</div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span> </div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>         <span class="keywordflow">if</span> (Char > 0xffff)</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>           OS << <span class="stringliteral">"\\U00"</span></div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>              << Hex[(Char >> 20) & 15]</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>              << Hex[(Char >> 16) & 15];</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>           OS << <span class="stringliteral">"\\u"</span>;</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>         OS << Hex[(Char >> 12) & 15]</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>            << Hex[(Char >>  8) & 15]</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>            << Hex[(Char >>  4) & 15]</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>            << Hex[(Char >>  0) & 15];</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>       }</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span> </div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>       <span class="comment">// If we used \x... for the previous character, and this character is a</span></div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>       <span class="comment">// hexadecimal digit, prevent it being slurped as part of the \x.</span></div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>       <span class="keywordflow">if</span> (LastSlashX + 1 == I) {</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>         <span class="keywordflow">switch</span> (Char) {</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>           <span class="keywordflow">case</span> <span class="charliteral">'0'</span>: <span class="keywordflow">case</span> <span class="charliteral">'1'</span>: <span class="keywordflow">case</span> <span class="charliteral">'2'</span>: <span class="keywordflow">case</span> <span class="charliteral">'3'</span>: <span class="keywordflow">case</span> <span class="charliteral">'4'</span>:</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>           <span class="keywordflow">case</span> <span class="charliteral">'5'</span>: <span class="keywordflow">case</span> <span class="charliteral">'6'</span>: <span class="keywordflow">case</span> <span class="charliteral">'7'</span>: <span class="keywordflow">case</span> <span class="charliteral">'8'</span>: <span class="keywordflow">case</span> <span class="charliteral">'9'</span>:</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>           <span class="keywordflow">case</span> <span class="charliteral">'a'</span>: <span class="keywordflow">case</span> <span class="charliteral">'b'</span>: <span class="keywordflow">case</span> <span class="charliteral">'c'</span>: <span class="keywordflow">case</span> <span class="charliteral">'d'</span>: <span class="keywordflow">case</span> <span class="charliteral">'e'</span>: <span class="keywordflow">case</span> <span class="charliteral">'f'</span>:</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>           <span class="keywordflow">case</span> <span class="charliteral">'A'</span>: <span class="keywordflow">case</span> <span class="charliteral">'B'</span>: <span class="keywordflow">case</span> <span class="charliteral">'C'</span>: <span class="keywordflow">case</span> <span class="charliteral">'D'</span>: <span class="keywordflow">case</span> <span class="charliteral">'E'</span>: <span class="keywordflow">case</span> <span class="charliteral">'F'</span>:</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>             OS << <span class="stringliteral">"\"\""</span>;</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>         }</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>       }</div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span> </div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>       assert(Char <= 0xff &&</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>              <span class="stringliteral">"Characters above 0xff should already have been handled."</span>);</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span> </div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>       <span class="keywordflow">if</span> (<a class="code" href="namespaceclang.html#a248eb91d0d1fd3bed2994be39b46719e">isPrintable</a>(Char))</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>         OS << (char)Char;</div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>       <span class="keywordflow">else</span>  <span class="comment">// Output anything hard as an octal escape.</span></div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>         OS << <span class="charliteral">'\\'</span></div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>            << (char)(<span class="charliteral">'0'</span> + ((Char >> 6) & 7))</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>            << (char)(<span class="charliteral">'0'</span> + ((Char >> 3) & 7))</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>            << (char)(<span class="charliteral">'0'</span> + ((Char >> 0) & 7));</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>     <span class="comment">// Handle some common non-printable cases to make dumps prettier.</span></div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>     <span class="keywordflow">case</span> <span class="charliteral">'\\'</span>: OS << <span class="stringliteral">"\\\\"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>     <span class="keywordflow">case</span> <span class="charliteral">'"'</span>: OS << <span class="stringliteral">"\\\""</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>     <span class="keywordflow">case</span> <span class="charliteral">'\n'</span>: OS << <span class="stringliteral">"\\n"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>     <span class="keywordflow">case</span> <span class="charliteral">'\t'</span>: OS << <span class="stringliteral">"\\t"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>     <span class="keywordflow">case</span> <span class="charliteral">'\a'</span>: OS << <span class="stringliteral">"\\a"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>     <span class="keywordflow">case</span> <span class="charliteral">'\b'</span>: OS << <span class="stringliteral">"\\b"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>     }</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>   }</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>   OS << <span class="charliteral">'"'</span>;</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span> }</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span> </div>
+<div class="line"><a name="l00936"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a632d622d4921be2bd7d0c05d4267bd65">  936</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1StringLiteral.html#a632d622d4921be2bd7d0c05d4267bd65" title="Sets the string data to the given string data.">StringLiteral::setString</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, StringRef Str,</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>                               <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460">StringKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>, <span class="keywordtype">bool</span> IsPascal) {</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>   <span class="comment">//FIXME: we assume that the string data comes from a target that uses the same</span></div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>   <span class="comment">// code unit size and endianess for the type of string.</span></div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>   this->Kind = Kind;</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>   this->IsPascal = IsPascal;</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>   </div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>   CharByteWidth = mapCharByteWidth(C.<a class="code" href="classclang_1_1ASTContext.html#a1f86013f3f8d32eec61a74c21d26b2a4">getTargetInfo</a>(),Kind);</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>   assert((Str.size()%CharByteWidth == 0)</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>          && <span class="stringliteral">"size of data must be multiple of CharByteWidth"</span>);</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>   Length = Str.size()/CharByteWidth;</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span> </div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>   <span class="keywordflow">switch</span>(CharByteWidth) {</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>     <span class="keywordflow">case</span> 1: {</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>       <span class="keywordtype">char</span> *AStrData = <span class="keyword">new</span> (C) <span class="keywordtype">char</span>[Length];</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>       std::memcpy(AStrData,Str.data(),Length*<span class="keyword">sizeof</span>(*AStrData));</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>       StrData.asChar = AStrData;</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>     }</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>     <span class="keywordflow">case</span> 2: {</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>       uint16_t *AStrData = <span class="keyword">new</span> (C) uint16_t[Length];</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>       std::memcpy(AStrData,Str.data(),Length*<span class="keyword">sizeof</span>(*AStrData));</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>       StrData.asUInt16 = AStrData;</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>     }</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     <span class="keywordflow">case</span> 4: {</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>       uint32_t *AStrData = <span class="keyword">new</span> (C) uint32_t[Length];</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>       std::memcpy(AStrData,Str.data(),Length*<span class="keyword">sizeof</span>(*AStrData));</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>       StrData.asUInt32 = AStrData;</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>     }</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>       assert(<span class="keyword">false</span> && <span class="stringliteral">"unsupported CharByteWidth"</span>);</div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>   }</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span> }</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span> <span class="comment"></span></div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span> <span class="comment">/// getLocationOfByte - Return a source location that points to the specified</span></div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span> <span class="comment">/// byte of this string literal.</span></div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span> <span class="comment">/// Strings are amazingly complex.  They can be formed from multiple tokens and</span></div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span> <span class="comment">/// can have escape sequences in them in addition to the usual trigraph and</span></div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span> <span class="comment">/// escaped newline business.  This routine handles this complexity.</span></div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span> <span class="comment"></span><a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1StringLiteral.html#a5119c730aa105f479e2809cd2c9c7d8c" title="getLocationOfByte - Return a source location that points to the specified byte of this string literal...">StringLiteral::</a></div>
+<div class="line"><a name="l00980"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a5119c730aa105f479e2809cd2c9c7d8c">  980</a></span> <a class="code" href="classclang_1_1StringLiteral.html#a5119c730aa105f479e2809cd2c9c7d8c" title="getLocationOfByte - Return a source location that points to the specified byte of this string literal...">getLocationOfByte</a>(<span class="keywordtype">unsigned</span> ByteNo, <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#afe4356a77609114d8df0bfc9c2b8701f">SM</a>,</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>                   <span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &Features, <span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> &Target)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>   assert((<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a1d65c2a7fa94893f57f6d15e3edbcb14">StringLiteral::Ascii</a> || <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a50ddcd2275e37f6cf81ad684a5b2838a">StringLiteral::UTF8</a>) &&</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>          <span class="stringliteral">"Only narrow string literals are currently supported"</span>);</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>   <span class="comment">// Loop over all of the tokens in this string until we find the one that</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>   <span class="comment">// contains the byte we're looking for.</span></div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>   <span class="keywordtype">unsigned</span> TokNo = 0;</div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>   <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>     assert(TokNo < <a class="code" href="classclang_1_1StringLiteral.html#ad4768f2ffce70bf93afea2e2f9c80471">getNumConcatenated</a>() && <span class="stringliteral">"Invalid byte number!"</span>);</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</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> StrTokLoc = <a class="code" href="classclang_1_1StringLiteral.html#a70bba0d378413d6a0610a5f64e5d162c">getStrTokenLoc</a>(TokNo);</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>     </div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>     <span class="comment">// Get the spelling of the string so that we can get the data that makes up</span></div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>     <span class="comment">// the string literal, not the identifier for the macro it is potentially</span></div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>     <span class="comment">// expanded through.</span></div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</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> StrTokSpellingLoc = SM.<a class="code" href="classclang_1_1SourceManager.html#a989650d5a9a5d7f7bd88f2bbe5e5dc29" title="Given a SourceLocation object, return the spelling location referenced by the ID.">getSpellingLoc</a>(StrTokLoc);</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>     </div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>     <span class="comment">// Re-lex the token to get its length and original spelling.</span></div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>     std::pair<FileID, unsigned> LocInfo =SM.<a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(StrTokSpellingLoc);</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>     <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>     StringRef Buffer = SM.<a class="code" href="classclang_1_1SourceManager.html#a57e483ae7710c8b23eeb4f119026d662" title="Return a StringRef to the source buffer data for the specified FileID.">getBufferData</a>(LocInfo.first, &Invalid);</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>     <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>       <span class="keywordflow">return</span> StrTokSpellingLoc;</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>     </div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>     <span class="keyword">const</span> <span class="keywordtype">char</span> *StrData = Buffer.data()+LocInfo.second;</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>     </div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>     <span class="comment">// Create a lexer starting at the beginning of this token.</span></div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>     <a class="code" href="classclang_1_1Lexer.html">Lexer</a> TheLexer(SM.<a class="code" href="classclang_1_1SourceManager.html#ae1f1d6c242c1db7b224a7a6dd35cb82e" title="Return the source location corresponding to the first byte of the specified file.">getLocForStartOfFile</a>(LocInfo.first), Features,</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>                    Buffer.begin(), StrData, Buffer.end());</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>     <a class="code" href="classclang_1_1Token.html">Token</a> TheTok;</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>     TheLexer.LexFromRawLexer(TheTok);</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>     </div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>     <span class="comment">// Use the StringLiteralParser to compute the length of the string in bytes.</span></div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>     <a class="code" href="classclang_1_1StringLiteralParser.html">StringLiteralParser</a> SLP(&TheTok, 1, SM, Features, Target);</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>     <span class="keywordtype">unsigned</span> TokNumBytes = SLP.<a class="code" href="classclang_1_1StringLiteralParser.html#a7e3fea5269f41fcbd6147cbc0f55b426">GetStringLength</a>();</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>     </div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>     <span class="comment">// If the byte is in this token, return the location of the byte.</span></div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>     <span class="keywordflow">if</span> (ByteNo < TokNumBytes ||</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>         (ByteNo == TokNumBytes && TokNo == <a class="code" href="classclang_1_1StringLiteral.html#ad4768f2ffce70bf93afea2e2f9c80471">getNumConcatenated</a>() - 1)) {</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>       <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a> = SLP.<a class="code" href="classclang_1_1StringLiteralParser.html#adbd2f4a71afbed5fbd2384652bbe5e34">getOffsetOfStringByte</a>(TheTok, ByteNo); </div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>       </div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>       <span class="comment">// Now that we know the offset of the token in the spelling, use the</span></div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>       <span class="comment">// preprocessor to get the offset in the original source.</span></div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Lexer.html#a93831ee42d0510f3d20f2fa4c40905e7">Lexer::AdvanceToTokenCharacter</a>(StrTokLoc, Offset, SM, Features);</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</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>     <span class="comment">// Move to the next string token.</span></div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>     ++TokNo;</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>     ByteNo -= TokNumBytes;</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>   }</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> }</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> </div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> </div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> <span class="comment"></span></div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> <span class="comment">/// getOpcodeStr - Turn an Opcode enum value into the punctuation char it</span></div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="comment">/// corresponds to, e.g. "sizeof" or "[pre]++".</span></div>
+<div class="line"><a name="l01036"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#aea67833acedd6409746250b8e1612dcd"> 1036</a></span> <span class="comment"></span>StringRef <a class="code" href="classclang_1_1UnaryOperator.html#aea67833acedd6409746250b8e1612dcd" title="getOpcodeStr - Turn an Opcode enum value into the punctuation char it corresponds to...">UnaryOperator::getOpcodeStr</a>(<a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">Opcode</a> Op) {</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>   <span class="keywordflow">switch</span> (Op) {</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa6d908d314a5f7c26833ffc0c453b9a40">UO_PostInc</a>: <span class="keywordflow">return</span> <span class="stringliteral">"++"</span>;</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa5cd3ab72d62411d215161f9f852cc589">UO_PostDec</a>: <span class="keywordflow">return</span> <span class="stringliteral">"--"</span>;</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa8e13dc1c94cb3c4aec9526575bdd424d">UO_PreInc</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"++"</span>;</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffade6bd9d0cc5c62a832da915f7e837562">UO_PreDec</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"--"</span>;</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa74539ddfc7ac7056cfaeeca1deed46be">UO_AddrOf</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"&"</span>;</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa7fa8b49244d53a4c50b7d8e63257449e">UO_Deref</a>:   <span class="keywordflow">return</span> <span class="stringliteral">"*"</span>;</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa3663aba90ba0dd36bff0db1db1e20a5e">UO_Plus</a>:    <span class="keywordflow">return</span> <span class="stringliteral">"+"</span>;</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffad2b935758542a3bd7ecec931517483fb">UO_Minus</a>:   <span class="keywordflow">return</span> <span class="stringliteral">"-"</span>;</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa5f894bd8f3c3c88a605992b6d59fab6a">UO_Not</a>:     <span class="keywordflow">return</span> <span class="stringliteral">"~"</span>;</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffab236f32b7261ecbeb4da53fedab54d4b">UO_LNot</a>:    <span class="keywordflow">return</span> <span class="stringliteral">"!"</span>;</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa8e61d989a095d6d34c4fa6325233dab7">UO_Real</a>:    <span class="keywordflow">return</span> <span class="stringliteral">"__real"</span>;</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa27e6ce45ef7fa78a3a6d6a7700d1802d">UO_Imag</a>:    <span class="keywordflow">return</span> <span class="stringliteral">"__imag"</span>;</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffadc9189ae28cc27f4b3170faeb8ea61b5">UO_Extension</a>: <span class="keywordflow">return</span> <span class="stringliteral">"__extension__"</span>;</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>   }</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>   llvm_unreachable(<span class="stringliteral">"Unknown unary operator"</span>);</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> }</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">UnaryOperatorKind</a></div>
+<div class="line"><a name="l01056"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#aafb3e461d57de88ba95cf611b4075779"> 1056</a></span> <a class="code" href="classclang_1_1UnaryOperator.html#aafb3e461d57de88ba95cf611b4075779" title="Retrieve the unary opcode that corresponds to the given overloaded operator.">UnaryOperator::getOverloadedOpcode</a>(<a class="code" href="namespaceclang.html#ad937c281bb5b868d30a72c9bf137baf6" title="Enumeration specifying the different kinds of C++ overloaded operators.">OverloadedOperatorKind</a> OO, <span class="keywordtype">bool</span> Postfix) {</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>   <span class="keywordflow">switch</span> (OO) {</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>   <span class="keywordflow">default</span>: llvm_unreachable(<span class="stringliteral">"No unary operator for overloaded function"</span>);</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>   <span class="keywordflow">case</span> OO_PlusPlus:   <span class="keywordflow">return</span> Postfix ? <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa6d908d314a5f7c26833ffc0c453b9a40">UO_PostInc</a> : <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa8e13dc1c94cb3c4aec9526575bdd424d">UO_PreInc</a>;</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>   <span class="keywordflow">case</span> OO_MinusMinus: <span class="keywordflow">return</span> Postfix ? <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa5cd3ab72d62411d215161f9f852cc589">UO_PostDec</a> : <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffade6bd9d0cc5c62a832da915f7e837562">UO_PreDec</a>;</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>   <span class="keywordflow">case</span> OO_Amp:        <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa74539ddfc7ac7056cfaeeca1deed46be">UO_AddrOf</a>;</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>   <span class="keywordflow">case</span> OO_Star:       <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa7fa8b49244d53a4c50b7d8e63257449e">UO_Deref</a>;</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>   <span class="keywordflow">case</span> OO_Plus:       <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa3663aba90ba0dd36bff0db1db1e20a5e">UO_Plus</a>;</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>   <span class="keywordflow">case</span> OO_Minus:      <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffad2b935758542a3bd7ecec931517483fb">UO_Minus</a>;</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>   <span class="keywordflow">case</span> OO_Tilde:      <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa5f894bd8f3c3c88a605992b6d59fab6a">UO_Not</a>;</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>   <span class="keywordflow">case</span> OO_Exclaim:    <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffab236f32b7261ecbeb4da53fedab54d4b">UO_LNot</a>;</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>   }</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> }</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> </div>
+<div class="line"><a name="l01070"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a7f13ac5ac20a199f92a74c2cd4d5e749"> 1070</a></span> <a class="code" href="namespaceclang.html#ad937c281bb5b868d30a72c9bf137baf6" title="Enumeration specifying the different kinds of C++ overloaded operators.">OverloadedOperatorKind</a> <a class="code" href="classclang_1_1UnaryOperator.html#a7f13ac5ac20a199f92a74c2cd4d5e749" title="Retrieve the overloaded operator kind that corresponds to the given unary opcode.">UnaryOperator::getOverloadedOperator</a>(<a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">Opcode</a> Opc) {</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>   <span class="keywordflow">switch</span> (Opc) {</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa6d908d314a5f7c26833ffc0c453b9a40">UO_PostInc</a>: <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa8e13dc1c94cb3c4aec9526575bdd424d">UO_PreInc</a>: <span class="keywordflow">return</span> OO_PlusPlus;</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa5cd3ab72d62411d215161f9f852cc589">UO_PostDec</a>: <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffade6bd9d0cc5c62a832da915f7e837562">UO_PreDec</a>: <span class="keywordflow">return</span> OO_MinusMinus;</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa74539ddfc7ac7056cfaeeca1deed46be">UO_AddrOf</a>: <span class="keywordflow">return</span> OO_Amp;</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa7fa8b49244d53a4c50b7d8e63257449e">UO_Deref</a>: <span class="keywordflow">return</span> OO_Star;</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa3663aba90ba0dd36bff0db1db1e20a5e">UO_Plus</a>: <span class="keywordflow">return</span> OO_Plus;</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffad2b935758542a3bd7ecec931517483fb">UO_Minus</a>: <span class="keywordflow">return</span> OO_Minus;</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa5f894bd8f3c3c88a605992b6d59fab6a">UO_Not</a>: <span class="keywordflow">return</span> OO_Tilde;</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffab236f32b7261ecbeb4da53fedab54d4b">UO_LNot</a>: <span class="keywordflow">return</span> OO_Exclaim;</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>   <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#ad937c281bb5b868d30a72c9bf137baf6ab5e4155cb2b1833efc118f076a44014e" title="Not an overloaded operator.">OO_None</a>;</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>   }</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> }</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> </div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> <span class="comment">// Postfix Operators.</span></div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> <span class="comment">//===----------------------------------------------------------------------===//</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"><a class="code" href="classclang_1_1CallExpr.html#a51a3e2af9888d216a9e975b240de3c5a"> 1089</a></span> <a class="code" href="classclang_1_1CallExpr.html#a51a3e2af9888d216a9e975b240de3c5a">CallExpr::CallExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a>& C, <a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <a class="code" href="classclang_1_1Expr.html">Expr</a> *fn,</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>                    <span class="keywordtype">unsigned</span> NumPreArgs, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr*></a> args, <a class="code" href="classclang_1_1QualType.html">QualType</a> t,</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>                    <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="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> rparenloc)</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>   : <a class="code" href="classclang_1_1Expr.html">Expr</a>(SC, t, VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>          fn->isTypeDependent(),</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>          fn->isValueDependent(),</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>          fn->isInstantiationDependent(),</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>          fn->containsUnexpandedParameterPack()),</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>     NumArgs(args.size()) {</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> </div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>   SubExprs = <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1Stmt.html">Stmt</a>*[args.size()+PREARGS_START+NumPreArgs];</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>   SubExprs[FN] = fn;</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != args.size(); ++i) {</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>     <span class="keywordflow">if</span> (args[i]-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>())</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.TypeDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>     <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (args[i]-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>())</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ValueDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>     <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (args[i]-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>())</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>     <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (args[i]-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>())</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ContainsUnexpandedParameterPack = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> </div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>     SubExprs[i+PREARGS_START+NumPreArgs] = args[i];</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>   }</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> </div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>   <a class="code" href="classclang_1_1Stmt.html#a3f45ae9c6a8dc16d25ac70caa5da480d">CallExprBits</a>.NumPreArgs = NumPreArgs;</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>   RParenLoc = rparenloc;</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> }</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> </div>
+<div class="line"><a name="l01118"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a527c8130a398212be5ba0b76320ae7cb"> 1118</a></span> <a class="code" href="classclang_1_1CallExpr.html#a51a3e2af9888d216a9e975b240de3c5a">CallExpr::CallExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a>& C, <a class="code" href="classclang_1_1Expr.html">Expr</a> *fn, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr*></a> args,</div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>                    <a class="code" href="classclang_1_1QualType.html">QualType</a> t, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="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> rparenloc)</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>   : <a class="code" href="classclang_1_1Expr.html">Expr</a>(CallExprClass, t, VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>          fn->isTypeDependent(),</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>          fn->isValueDependent(),</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>          fn->isInstantiationDependent(),</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>          fn->containsUnexpandedParameterPack()),</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>     NumArgs(args.size()) {</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span> </div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>   SubExprs = <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1Stmt.html">Stmt</a>*[args.size()+PREARGS_START];</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>   SubExprs[FN] = fn;</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != args.size(); ++i) {</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>     <span class="keywordflow">if</span> (args[i]-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>())</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.TypeDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>     <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (args[i]-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>())</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ValueDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>     <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (args[i]-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>())</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (args[i]-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>())</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ContainsUnexpandedParameterPack = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> </div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>     SubExprs[i+PREARGS_START] = args[i];</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>   }</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> </div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>   <a class="code" href="classclang_1_1Stmt.html#a3f45ae9c6a8dc16d25ac70caa5da480d">CallExprBits</a>.NumPreArgs = 0;</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>   RParenLoc = rparenloc;</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> </div>
+<div class="line"><a name="l01146"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a78de99d18b06585cb017dc8cd3fb0165"> 1146</a></span> <a class="code" href="classclang_1_1CallExpr.html#a51a3e2af9888d216a9e975b240de3c5a">CallExpr::CallExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>   : <a class="code" href="classclang_1_1Expr.html">Expr</a>(SC, Empty), SubExprs(0), NumArgs(0) {</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>   <span class="comment">// FIXME: Why do we allocate this?</span></div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>   SubExprs = <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1Stmt.html">Stmt</a>*[PREARGS_START];</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>   <a class="code" href="classclang_1_1Stmt.html#a3f45ae9c6a8dc16d25ac70caa5da480d">CallExprBits</a>.NumPreArgs = 0;</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> }</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> </div>
+<div class="line"><a name="l01153"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a49a8b2d4658da1c54eadd51148f45cc0"> 1153</a></span> <a class="code" href="classclang_1_1CallExpr.html#a51a3e2af9888d216a9e975b240de3c5a">CallExpr::CallExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <span class="keywordtype">unsigned</span> NumPreArgs,</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>                    <a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>   : <a class="code" href="classclang_1_1Expr.html">Expr</a>(SC, Empty), SubExprs(0), NumArgs(0) {</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>   <span class="comment">// FIXME: Why do we allocate this?</span></div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>   SubExprs = <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1Stmt.html">Stmt</a>*[PREARGS_START+NumPreArgs];</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>   <a class="code" href="classclang_1_1Stmt.html#a3f45ae9c6a8dc16d25ac70caa5da480d">CallExprBits</a>.NumPreArgs = NumPreArgs;</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"><a class="code" href="classclang_1_1CallExpr.html#a68507440cf707685b486b1f446d28f53"> 1161</a></span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1CallExpr.html#a68507440cf707685b486b1f446d28f53">CallExpr::getCalleeDecl</a>() {</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *CEE = <a class="code" href="classclang_1_1CallExpr.html#a3a2b7cbceb661c81f0d6eb937610eb75">getCallee</a>()-><a class="code" href="classclang_1_1Expr.html#a54036c75e73ecdf081729210fa53e582">IgnoreParenImpCasts</a>();</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>     </div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>   <span class="keywordflow">while</span> (<a class="code" href="classclang_1_1SubstNonTypeTemplateParmExpr.html" title="Represents a reference to a non-type template parameter that has been substituted with a template arg...">SubstNonTypeTemplateParmExpr</a> *NTTP</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>                                 = dyn_cast<SubstNonTypeTemplateParmExpr>(CEE)) {</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>     CEE = NTTP->getReplacement()-><a class="code" href="classclang_1_1Expr.html#a397a707d10e0d3ac4a150325eafa4368">IgnoreParenCasts</a>();</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</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>   <span class="comment">// If we're calling a dereference, look at the pointer instead.</span></div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *BO = dyn_cast<BinaryOperator>(CEE)) {</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>     <span class="keywordflow">if</span> (BO->isPtrMemOp())</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>       CEE = BO->getRHS()-><a class="code" href="classclang_1_1Expr.html#a397a707d10e0d3ac4a150325eafa4368">IgnoreParenCasts</a>();</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</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>(CEE)) {</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>     <span class="keywordflow">if</span> (UO->getOpcode() == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa7fa8b49244d53a4c50b7d8e63257449e">UO_Deref</a>)</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>       CEE = UO->getSubExpr()-><a class="code" href="classclang_1_1Expr.html#a397a707d10e0d3ac4a150325eafa4368">IgnoreParenCasts</a>();</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>   }</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *DRE = dyn_cast<DeclRefExpr>(CEE))</div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>     <span class="keywordflow">return</span> DRE->getDecl();</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *ME = dyn_cast<MemberExpr>(CEE))</div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>     <span class="keywordflow">return</span> ME->getMemberDecl();</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span> </div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span> }</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> </div>
+<div class="line"><a name="l01185"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a88bb91e7e67e378fd6a895c1f679901d"> 1185</a></span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *<a class="code" href="classclang_1_1CallExpr.html#a88bb91e7e67e378fd6a895c1f679901d" title="If the callee is a FunctionDecl, return it. Otherwise return 0.">CallExpr::getDirectCallee</a>() {</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>   <span class="keywordflow">return</span> dyn_cast_or_null<FunctionDecl>(<a class="code" href="classclang_1_1CallExpr.html#a68507440cf707685b486b1f446d28f53">getCalleeDecl</a>());</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> <span class="comment"></span></div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> <span class="comment">/// setNumArgs - This changes the number of arguments present in this call.</span></div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> <span class="comment">/// Any orphaned expressions are deleted by this, and any new operands are set</span></div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> <span class="comment">/// to null.</span></div>
+<div class="line"><a name="l01192"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a464f6c494736790d709ccca973b56047"> 1192</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CallExpr.html#a464f6c494736790d709ccca973b56047">CallExpr::setNumArgs</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a>& C, <span class="keywordtype">unsigned</span> NumArgs) {</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>   <span class="comment">// No change, just return.</span></div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>   <span class="keywordflow">if</span> (NumArgs == <a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83">getNumArgs</a>()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> </div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>   <span class="comment">// If shrinking # arguments, just delete the extras and forgot them.</span></div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>   <span class="keywordflow">if</span> (NumArgs < <a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83">getNumArgs</a>()) {</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>     this->NumArgs = NumArgs;</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>   }</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> </div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>   <span class="comment">// Otherwise, we are growing the # arguments.  New an bigger argument array.</span></div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>   <span class="keywordtype">unsigned</span> NumPreArgs = <a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>();</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> **NewSubExprs = <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1Stmt.html">Stmt</a>*[NumArgs+PREARGS_START+NumPreArgs];</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>   <span class="comment">// Copy over args.</span></div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != <a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83">getNumArgs</a>()+PREARGS_START+NumPreArgs; ++i)</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>     NewSubExprs[i] = SubExprs[i];</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>   <span class="comment">// Null out new args.</span></div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = <a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83">getNumArgs</a>()+PREARGS_START+NumPreArgs;</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>        i != NumArgs+PREARGS_START+NumPreArgs; ++i)</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>     NewSubExprs[i] = 0;</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> </div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>   <span class="keywordflow">if</span> (SubExprs) C.<a class="code" href="classclang_1_1ASTContext.html#a2330fd03812b2f8707442f4c8e5da739">Deallocate</a>(SubExprs);</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>   SubExprs = NewSubExprs;</div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>   this->NumArgs = NumArgs;</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> }</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> <span class="comment"></span></div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> <span class="comment">/// isBuiltinCall - If this is a call to a builtin, return the builtin ID.  If</span></div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> <span class="comment">/// not, return 0.</span></div>
+<div class="line"><a name="l01220"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#ab1d8251c5169109b2f6dd3abf238155a"> 1220</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1CallExpr.html#ab1d8251c5169109b2f6dd3abf238155a">CallExpr::isBuiltinCall</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>   <span class="comment">// All simple function calls (e.g. func()) are implicitly cast to pointer to</span></div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>   <span class="comment">// function. As a result, we try and obtain the DeclRefExpr from the</span></div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>   <span class="comment">// ImplicitCastExpr.</span></div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *ICE = dyn_cast<<a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a>>(<a class="code" href="classclang_1_1CallExpr.html#a3a2b7cbceb661c81f0d6eb937610eb75">getCallee</a>());</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>   <span class="keywordflow">if</span> (!ICE) <span class="comment">// FIXME: deal with more complex calls (e.g. (func)(), (*func)()).</span></div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> </div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *DRE = dyn_cast<<a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>>(ICE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>());</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>   <span class="keywordflow">if</span> (!DRE)</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> </div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FDecl = dyn_cast<<a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a>>(DRE-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>());</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>   <span class="keywordflow">if</span> (!FDecl)</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> </div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>   <span class="keywordflow">if</span> (!FDecl-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>())</div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>     <span class="keywordflow">return</span> 0;</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="keywordflow">return</span> FDecl-><a class="code" href="classclang_1_1FunctionDecl.html#afe9c9c5ac9a47620d9f61d7f4d99f147" title="Returns a value indicating whether this function corresponds to a builtin function.">getBuiltinID</a>();</div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> }</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span> </div>
+<div class="line"><a name="l01242"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a5215eff85fa3335ac4eb6eb9817e0d10"> 1242</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CallExpr.html#a5215eff85fa3335ac4eb6eb9817e0d10" title="Returns true if this is a call to a builtin which does not evaluate side-effects within its arguments...">CallExpr::isUnevaluatedBuiltinCall</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> &Ctx)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>   <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span> BI = <a class="code" href="classclang_1_1CallExpr.html#ab1d8251c5169109b2f6dd3abf238155a">isBuiltinCall</a>())</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>     <span class="keywordflow">return</span> Ctx.<a class="code" href="classclang_1_1ASTContext.html#a502181c4f5710068dddb1b4fc3233238">BuiltinInfo</a>.<a class="code" href="classclang_1_1Builtin_1_1Context.html#af9a28afb14d7555a609a47fa41b6dd78" title="Returns true if this builtin does not perform the side-effects of its arguments.">isUnevaluated</a>(BI);</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> }</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> </div>
+<div class="line"><a name="l01248"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#abacb26ed953d3bdb1f8bb67cdeaba298"> 1248</a></span> <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1CallExpr.html#abacb26ed953d3bdb1f8bb67cdeaba298">CallExpr::getCallReturnType</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> CalleeType = <a class="code" href="classclang_1_1CallExpr.html#a3a2b7cbceb661c81f0d6eb937610eb75">getCallee</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1PointerType.html">PointerType</a> *FnTypePtr = CalleeType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1PointerType.html">PointerType</a>>())</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>     CalleeType = FnTypePtr-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BlockPointerType.html">BlockPointerType</a> *BPT = CalleeType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1BlockPointerType.html">BlockPointerType</a>>())</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>     CalleeType = BPT-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (CalleeType-><a class="code" href="classclang_1_1Type.html#a80b3787c8d9aeec27c0ea48131a306ab" title="isSpecificPlaceholderType - Test for a specific placeholder type.">isSpecificPlaceholderType</a>(BuiltinType::BoundMember))</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>     <span class="comment">// This should never be overloaded and so should never return null.</span></div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>     CalleeType = <a class="code" href="classclang_1_1Expr.html#a264da990f2d0d3fc324029187b6cb87d" title="Given an expression of bound-member type, find the type of the member. Returns null if this is an ove...">Expr::findBoundMemberType</a>(<a class="code" href="classclang_1_1CallExpr.html#a3a2b7cbceb661c81f0d6eb937610eb75">getCallee</a>());</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="keyword">const</span> <a class="code" href="classclang_1_1FunctionType.html">FunctionType</a> *FnType = CalleeType-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1FunctionType.html">FunctionType</a>>();</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>   <span class="keywordflow">return</span> FnType-><a class="code" href="classclang_1_1FunctionType.html#aafa453cd7e81a7c3d6c61f261e68afe8">getResultType</a>();</div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> }</div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> </div>
+<div class="line"><a name="l01262"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a4852265598bd0c47f24844f91d0e700c"> 1262</a></span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1CallExpr.html#a4852265598bd0c47f24844f91d0e700c">CallExpr::getLocStart</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>   <span class="keywordflow">if</span> (isa<CXXOperatorCallExpr>(<span class="keyword">this</span>))</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>     <span class="keywordflow">return</span> cast<CXXOperatorCallExpr>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1CallExpr.html#a4852265598bd0c47f24844f91d0e700c">getLocStart</a>();</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> </div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>   <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> begin = <a class="code" href="classclang_1_1CallExpr.html#a3a2b7cbceb661c81f0d6eb937610eb75">getCallee</a>()-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>   <span class="keywordflow">if</span> (begin.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>() && <a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83">getNumArgs</a>() > 0)</div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>     begin = <a class="code" href="classclang_1_1CallExpr.html#aa454d6f1e76623da60451885239f63c6" title="getArg - Return the specified argument.">getArg</a>(0)-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>   <span class="keywordflow">return</span> begin;</div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> }</div>
+<div class="line"><a name="l01271"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a9b37da360400f6d73cc0094ca97b9825"> 1271</a></span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1CallExpr.html#a9b37da360400f6d73cc0094ca97b9825">CallExpr::getLocEnd</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>   <span class="keywordflow">if</span> (isa<CXXOperatorCallExpr>(<span class="keyword">this</span>))</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>     <span class="keywordflow">return</span> cast<CXXOperatorCallExpr>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1CallExpr.html#a9b37da360400f6d73cc0094ca97b9825">getLocEnd</a>();</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> </div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</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> end = <a class="code" href="classclang_1_1CallExpr.html#ae2e04e19f10f2a8e4ea98ef2f03430f5">getRParenLoc</a>();</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>   <span class="keywordflow">if</span> (end.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>() && <a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83">getNumArgs</a>() > 0)</div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>     end = <a class="code" href="classclang_1_1CallExpr.html#aa454d6f1e76623da60451885239f63c6" title="getArg - Return the specified argument.">getArg</a>(<a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83">getNumArgs</a>() - 1)-><a class="code" href="classclang_1_1CallExpr.html#a9b37da360400f6d73cc0094ca97b9825">getLocEnd</a>();</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>   <span class="keywordflow">return</span> end;</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span> }</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> </div>
+<div class="line"><a name="l01281"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#a7ab83bcf654847162a784389232dc001"> 1281</a></span> <a class="code" href="classclang_1_1OffsetOfExpr.html">OffsetOfExpr</a> *<a class="code" href="classclang_1_1OffsetOfExpr.html#a7ab83bcf654847162a784389232dc001">OffsetOfExpr::Create</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="classclang_1_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="l01282"></a><span class="lineno"> 1282</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> OperatorLoc,</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>                                    <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *tsi, </div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>                                    <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<OffsetOfNode></a> comps,</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>                                    <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr*></a> exprs,</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</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> RParenLoc) {</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>   <span class="keywordtype">void</span> *Mem = C.<a class="code" href="classclang_1_1ASTContext.html#a2b0efa9919a08d2fb955f3003c304aa9">Allocate</a>(<span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1OffsetOfExpr.html">OffsetOfExpr</a>) +</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>                          <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfNode</a>) * comps.size() +</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>                          <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1Expr.html">Expr</a>*) * exprs.size());</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span> </div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (Mem) <a class="code" href="classclang_1_1OffsetOfExpr.html">OffsetOfExpr</a>(C, type, OperatorLoc, tsi, comps, exprs,</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>                                 RParenLoc);</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span> }</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span> </div>
+<div class="line"><a name="l01295"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#a427f25c47af5c02a517402bd6d3b51d2"> 1295</a></span> <a class="code" href="classclang_1_1OffsetOfExpr.html">OffsetOfExpr</a> *<a class="code" href="classclang_1_1OffsetOfExpr.html#a427f25c47af5c02a517402bd6d3b51d2">OffsetOfExpr::CreateEmpty</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C,</div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>                                         <span class="keywordtype">unsigned</span> numComps, <span class="keywordtype">unsigned</span> numExprs) {</div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>   <span class="keywordtype">void</span> *Mem = C.<a class="code" href="classclang_1_1ASTContext.html#a2b0efa9919a08d2fb955f3003c304aa9">Allocate</a>(<span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1OffsetOfExpr.html">OffsetOfExpr</a>) +</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>                          <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfNode</a>) * numComps +</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>                          <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1Expr.html">Expr</a>*) * numExprs);</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (Mem) <a class="code" href="classclang_1_1OffsetOfExpr.html">OffsetOfExpr</a>(numComps, numExprs);</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> OffsetOfExpr::OffsetOfExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="classclang_1_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="l01304"></a><span class="lineno"> 1304</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> OperatorLoc, <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *tsi,</div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>                            <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<OffsetOfNode></a> comps, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr*></a> exprs,</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</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> RParenLoc)</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>   : <a class="code" href="classclang_1_1Expr.html">Expr</a>(OffsetOfExprClass, type, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>          <span class="comment">/*TypeDependent=*/</span><a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, </div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>          <span class="comment">/*ValueDependent=*/</span>tsi->getType()->isDependentType(),</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>          tsi->getType()->isInstantiationDependentType(),</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>          tsi->getType()->containsUnexpandedParameterPack()),</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>     OperatorLoc(OperatorLoc), RParenLoc(RParenLoc), TSInfo(tsi), </div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>     NumComps(comps.size()), NumExprs(exprs.size())</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> {</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != comps.size(); ++i) {</div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>     <a class="code" href="classclang_1_1OffsetOfExpr.html#ac3062b3b00ec5b1632d10e45a67cc1d3">setComponent</a>(i, comps[i]);</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>   }</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>   </div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != exprs.size(); ++i) {</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>     <span class="keywordflow">if</span> (exprs[i]-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>() || exprs[i]->isValueDependent())</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ValueDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>     <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (exprs[i]-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>())</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ContainsUnexpandedParameterPack = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> </div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>     <a class="code" href="classclang_1_1OffsetOfExpr.html#a7ba06452f6102f626932cc747c6fe1f0">setIndexExpr</a>(i, exprs[i]);</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>   }</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> }</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span> </div>
+<div class="line"><a name="l01329"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ab518d7dc8948f86d5c144e5154103cb4"> 1329</a></span> <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ab518d7dc8948f86d5c144e5154103cb4" title="For a field or identifier offsetof node, returns the name of the field.">OffsetOfExpr::OffsetOfNode::getFieldName</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>   assert(<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a64d4e6c5970c305ce2a9021354bf948a" title="Determine what kind of offsetof node this is.">getKind</a>() == <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa857cf8e702d44631ad43e2e77a7ea307" title="A field.">Field</a> || <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a64d4e6c5970c305ce2a9021354bf948a" title="Determine what kind of offsetof node this is.">getKind</a>() == <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa9dc210a69ad5a5f8dcaf9fedaba33747" title="A field in a dependent type, known only by its name.">Identifier</a>);</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a64d4e6c5970c305ce2a9021354bf948a" title="Determine what kind of offsetof node this is.">getKind</a>() == <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa857cf8e702d44631ad43e2e77a7ea307" title="A field.">Field</a>)</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a6a0d18d6fc8e8c5d21f25a30abef92bc" title="For a field offsetof node, returns the field.">getField</a>()-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>();</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>   </div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>   <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *<span class="keyword">></span> (Data & ~(uintptr_t)Mask);</div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> }</div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> </div>
+<div class="line"><a name="l01337"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a12623f4cf10f73976348ee71d29f44bb"> 1337</a></span> <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *<a class="code" href="classclang_1_1MemberExpr.html#a12623f4cf10f73976348ee71d29f44bb">MemberExpr::Create</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="classclang_1_1Expr.html">Expr</a> *base, <span class="keywordtype">bool</span> isarrow,</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>                                <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> QualifierLoc,</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</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> TemplateKWLoc,</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>                                <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *memberdecl,</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>                                <a class="code" href="classclang_1_1DeclAccessPair.html">DeclAccessPair</a> founddecl,</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>                                <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> nameinfo,</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>                                <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentListInfo.html">TemplateArgumentListInfo</a> *targs,</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>                                <a class="code" href="classclang_1_1QualType.html">QualType</a> ty,</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</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="l01346"></a><span class="lineno"> 1346</span>                                <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> ok) {</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>   <a class="code" href="stddef_8h.html#aa9d55e2f20e580b7445617d0d12fff6e">std::size_t</a> Size = <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a>);</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span> </div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>   <span class="keywordtype">bool</span> hasQualOrFound = (QualifierLoc ||</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>                          founddecl.<a class="code" href="classclang_1_1DeclAccessPair.html#abdbe07a49035d36a858f3253412f2d5a">getDecl</a>() != memberdecl ||</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>                          founddecl.<a class="code" href="classclang_1_1DeclAccessPair.html#a18421736490c0827e91213e6bb6e7dc5">getAccess</a>() != memberdecl-><a class="code" href="classclang_1_1Decl.html#a81e82461f69e9a50e129ef4bfac42987">getAccess</a>());</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>   <span class="keywordflow">if</span> (hasQualOrFound)</div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>     Size += <span class="keyword">sizeof</span>(MemberNameQualifier);</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> </div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>   <span class="keywordflow">if</span> (targs)</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>     Size += <a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html#aad31d15ecc2f14993f69bff79cbe3260">ASTTemplateKWAndArgsInfo::sizeFor</a>(targs-><a class="code" href="classclang_1_1TemplateArgumentListInfo.html#aa7dc7d042c01adf26f0bd58e1623d3f4">size</a>());</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (TemplateKWLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>())</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>     Size += <a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html#aad31d15ecc2f14993f69bff79cbe3260">ASTTemplateKWAndArgsInfo::sizeFor</a>(0);</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span> </div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>   <span class="keywordtype">void</span> *Mem = C.<a class="code" href="classclang_1_1ASTContext.html#a2b0efa9919a08d2fb955f3003c304aa9">Allocate</a>(Size, llvm::alignOf<MemberExpr>());</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>   <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *E = <span class="keyword">new</span> (Mem) <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a>(base, isarrow, memberdecl, nameinfo,</div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>                                        ty, vk, ok);</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span> </div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>   <span class="keywordflow">if</span> (hasQualOrFound) {</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>     <span class="comment">// FIXME: Wrong. We should be looking at the member declaration we found.</span></div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>     <span class="keywordflow">if</span> (QualifierLoc && QualifierLoc.<a class="code" href="classclang_1_1NestedNameSpecifierLoc.html#a5654a95772981f5a91f100b767604af9" title="Retrieve the nested-name-specifier to which this instance refers.">getNestedNameSpecifier</a>()-><a class="code" href="classclang_1_1NestedNameSpecifier.html#a860eb5e746ef604d75f0beae5634ca91" title="Whether this nested name specifier refers to a dependent type or not.">isDependent</a>()) {</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>       E-><a class="code" href="classclang_1_1Expr.html#ac52ec8c4d8cec61888c51d0ac9cd262e" title="Set whether this expression is value-dependent or not.">setValueDependent</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>       E-><a class="code" href="classclang_1_1Expr.html#aa993c3c46bada5633ca2b5c12e324b9f" title="Set whether this expression is type-dependent or not.">setTypeDependent</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>       E-><a class="code" href="classclang_1_1Expr.html#a9e43b98d0b30200eb9082dbfc213c855" title="Set whether this expression is instantiation-dependent or not.">setInstantiationDependent</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>     } </div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (QualifierLoc && </div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>              QualifierLoc.<a class="code" href="classclang_1_1NestedNameSpecifierLoc.html#a5654a95772981f5a91f100b767604af9" title="Retrieve the nested-name-specifier to which this instance refers.">getNestedNameSpecifier</a>()-><a class="code" href="classclang_1_1NestedNameSpecifier.html#a57df6be553fe7b3bff9142aa881acad3" title="Whether this nested name specifier involves a template parameter.">isInstantiationDependent</a>()) </div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>       E-><a class="code" href="classclang_1_1Expr.html#a9e43b98d0b30200eb9082dbfc213c855" title="Set whether this expression is instantiation-dependent or not.">setInstantiationDependent</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>     </div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>     E->HasQualifierOrFoundDecl = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span> </div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>     MemberNameQualifier *NQ = E->getMemberQualifier();</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>     NQ->QualifierLoc = QualifierLoc;</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>     NQ->FoundDecl = founddecl;</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>   }</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span> </div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>   E->HasTemplateKWAndArgsInfo = (targs || TemplateKWLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>());</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> </div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>   <span class="keywordflow">if</span> (targs) {</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>     <span class="keywordtype">bool</span> Dependent = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>     <span class="keywordtype">bool</span> InstantiationDependent = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>     <span class="keywordtype">bool</span> ContainsUnexpandedParameterPack = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>     E-><a class="code" href="classclang_1_1MemberExpr.html#aa144dbf063c47297e9ca4cd641ec567b" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>()-><a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html#a19deea08ea01b47c337422efa7337d25">initializeFrom</a>(TemplateKWLoc, *targs,</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>                                                   Dependent,</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>                                                   InstantiationDependent,</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>                                              ContainsUnexpandedParameterPack);</div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>     <span class="keywordflow">if</span> (InstantiationDependent)</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>       E-><a class="code" href="classclang_1_1Expr.html#a9e43b98d0b30200eb9082dbfc213c855" title="Set whether this expression is instantiation-dependent or not.">setInstantiationDependent</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (TemplateKWLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>()) {</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>     E-><a class="code" href="classclang_1_1MemberExpr.html#aa144dbf063c47297e9ca4cd641ec567b" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>()-><a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html#a19deea08ea01b47c337422efa7337d25">initializeFrom</a>(TemplateKWLoc);</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="keywordflow">return</span> E;</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> }</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> </div>
+<div class="line"><a name="l01401"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a953274ed8890ef4f77ea5ab572f035dd"> 1401</a></span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1MemberExpr.html#a953274ed8890ef4f77ea5ab572f035dd">MemberExpr::getLocStart</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>   <span class="keywordflow">if</span> (isImplicitAccess()) {</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>     <span class="keywordflow">if</span> (hasQualifier())</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>       <span class="keywordflow">return</span> getQualifierLoc().getBeginLoc();</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>     <span class="keywordflow">return</span> MemberLoc;</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>   }</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> </div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>   <span class="comment">// FIXME: We don't want this to happen. Rather, we should be able to</span></div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>   <span class="comment">// detect all kinds of implicit accesses more cleanly.</span></div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</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> BaseStartLoc = getBase()->getLocStart();</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>   <span class="keywordflow">if</span> (BaseStartLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>())</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>     <span class="keywordflow">return</span> BaseStartLoc;</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>   <span class="keywordflow">return</span> MemberLoc;</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span> }</div>
+<div class="line"><a name="l01415"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#aff51aa5057fbf1d7121ff208cc46371f"> 1415</a></span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1MemberExpr.html#aff51aa5057fbf1d7121ff208cc46371f">MemberExpr::getLocEnd</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</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 = getMemberNameInfo().getEndLoc();</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>   <span class="keywordflow">if</span> (hasExplicitTemplateArgs())</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>     EndLoc = getRAngleLoc();</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (EndLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>())</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>     EndLoc = getBase()->getLocEnd();</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>   <span class="keywordflow">return</span> EndLoc;</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> }</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span> </div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> <span class="keywordtype">void</span> CastExpr::CheckCastConsistency()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>   <span class="keywordflow">switch</span> (getCastKind()) {</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca73a268da1a2e05cdf1ace06c46412caa">CK_DerivedToBase</a>:</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caafe5fe4f044e3c17524af98993c8b058">CK_UncheckedDerivedToBase</a>:</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca82cc4f2178c9c3b36d0790c155939350">CK_DerivedToBaseMemberPointer</a>:</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cacf9d54607fb757633eea67b88cd432b8">CK_BaseToDerived</a>:</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3c6a5409bb52618fc54e2a1b7fea53e8">CK_BaseToDerivedMemberPointer</a>:</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>     assert(!path_empty() && <span class="stringliteral">"Cast kind should have a base path!"</span>);</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>     <span class="keywordflow">break</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>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cacc999b93239de9e4bc022719ddd96159">CK_CPointerToObjCPointerCast</a>:</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>     assert(<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isObjCObjectPointerType());</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>     assert(getSubExpr()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isPointerType());</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>     <span class="keywordflow">goto</span> CheckNoBasePath;</div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span> </div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca90f41f80fbcffc5e47ac9c9b448f5c00">CK_BlockPointerToObjCPointerCast</a>:</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>     assert(<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isObjCObjectPointerType());</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>     assert(getSubExpr()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isBlockPointerType());</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>     <span class="keywordflow">goto</span> CheckNoBasePath;</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span> </div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafe996870a0a2acb7913b2dfff4514961">CK_ReinterpretMemberPointer</a>:</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>     assert(<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isMemberPointerType());</div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>     assert(getSubExpr()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isMemberPointerType());</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>     <span class="keywordflow">goto</span> CheckNoBasePath;</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>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca183b8948b82911a415cc54446ddcb3ab">CK_BitCast</a>:</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>     <span class="comment">// Arbitrary casts to C pointer types count as bitcasts.</span></div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>     <span class="comment">// Otherwise, we should only have block and ObjC pointer casts</span></div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>     <span class="comment">// here if they stay within the type kind.</span></div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isPointerType()) {</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>       assert(<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isObjCObjectPointerType() == </div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>              getSubExpr()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isObjCObjectPointerType());</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>       assert(<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isBlockPointerType() == </div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>              getSubExpr()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isBlockPointerType());</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>     }</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>     <span class="keywordflow">goto</span> CheckNoBasePath;</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">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cac5436c20ce687d8a80eac6656ccd4053">CK_AnyPointerToBlockPointerCast</a>:</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>     assert(<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isBlockPointerType());</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>     assert(getSubExpr()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isAnyPointerType() &&</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>            !getSubExpr()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isBlockPointerType());</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>     <span class="keywordflow">goto</span> CheckNoBasePath;</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> </div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3d6e9ee43c0dc11f3efca79e7c563a20" title="Causes a block literal to by copied to the heap and then autoreleased.">CK_CopyAndAutoreleaseBlockObject</a>:</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>     assert(<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isBlockPointerType());</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>     assert(getSubExpr()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isBlockPointerType());</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>     <span class="keywordflow">goto</span> CheckNoBasePath;</div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span> </div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab98f67d90bd9e115f96916271318fe71">CK_FunctionToPointerDecay</a>:</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>     assert(<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isPointerType());</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>     assert(getSubExpr()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isFunctionType());</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>     <span class="keywordflow">goto</span> CheckNoBasePath;</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> </div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>   <span class="comment">// These should not have an inheritance path.</span></div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca256751070614007fb6d4b82e48460a97" title="CK_Dynamic - A C++ dynamic_cast.">CK_Dynamic</a>:</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca8ea0e009738649ecec9ae75302358e8a">CK_ToUnion</a>:</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca966388c17db29effd052ff1f5da7f64f">CK_ArrayToPointerDecay</a>:</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca26ac11778b8142c489add68f63bb6dde">CK_NullToMemberPointer</a>:</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca69507b9309c485f20be46a41f657630c">CK_NullToPointer</a>:</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad2d52a3df80ffd6ed33b81af15c872b0">CK_ConstructorConversion</a>:</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca25161f0bbb6d2b99bd5fbbf9c19ef751">CK_IntegralToPointer</a>:</div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca71a69f66ffd32b22a11ee92d49359612">CK_PointerToIntegral</a>:</div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cac5d34b62fbc611f2f762ff5c72845fa5">CK_ToVoid</a>:</div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad92f354774050cdc155c425c4268c701">CK_VectorSplat</a>:</div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad71cad80dd5957bfc6e8aa8f3a36f814">CK_IntegralCast</a>:</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca2cf53b5b93effb16c027b884ed149c8d">CK_IntegralToFloating</a>:</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca0d5ae3f886d5297b84191286796cff35">CK_FloatingToIntegral</a>:</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab482ba41f148596616a763a65f09584c">CK_FloatingCast</a>:</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca49cdf8abcaeac51e47994305a998f3bd" title="Converting between two Objective-C object types, which can occur when performing reference binding to...">CK_ObjCObjectLValueCast</a>:</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca1cad6c2d96d3c0f2af106f2b1368492e" title="A conversion of a floating point real to a floating point complex of the original type...">CK_FloatingRealToComplex</a>:</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cae5c5fd1deef6203422d504a5f8bdc6ce" title="Converts a floating point complex to floating point real of the source's element type. Just discards the imaginary component. _Complex long double -> long double.">CK_FloatingComplexToReal</a>:</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca4afeb9e95e7e3b7306549eadbdbe9c80" title="Converts between different floating point complex types. _Complex float -> _Complex double...">CK_FloatingComplexCast</a>:</div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca43029dd8d1bc9710d1e43b8c0d294e71" title="Converts from a floating complex to an integral complex. _Complex float -> _Complex int...">CK_FloatingComplexToIntegralComplex</a>:</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca5cbf9648982576f016ac45aeb4ff06a1" title="Converts from an integral real to an integral complex whose element type matches the source...">CK_IntegralRealToComplex</a>:</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca354a7827d46025f132fd402f609f1e85" title="Converts an integral complex to an integral real of the source's element type by discarding the imagi...">CK_IntegralComplexToReal</a>:</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab716d5bd471b943dda830dd2659cacce" title="Converts between different integral complex types. _Complex char -> _Complex long long _Complex unsig...">CK_IntegralComplexCast</a>:</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab4da0cbf1af3ba6fc7b47af7c548ff31" title="Converts from an integral complex to a floating complex. _Complex unsigned -> _Complex float...">CK_IntegralComplexToFloatingComplex</a>:</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca9f5583b92f81ac9a5b9fb5ad43e8435c" title="[ARC] Produces a retainable object pointer so that it may be consumed, e.g. by being passed to a cons...">CK_ARCProduceObject</a>:</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cabd5bc09cee26b551eb8174e32f1239cf" title="[ARC] Consumes a retainable object pointer that has just been produced, e.g. as the return value of a...">CK_ARCConsumeObject</a>:</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca54bc1edcd89f791f8516abeea370fa49" title="[ARC] Reclaim a retainable object pointer object that may have been produced and autoreleased as part...">CK_ARCReclaimReturnedObject</a>:</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca88a24e1d8c6ee42652b389edc898488f" title="[ARC] Causes a value of block type to be copied to the heap, if it is not already there...">CK_ARCExtendBlockObject</a>:</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca8e560e545d9c0c051691299879d30932">CK_ZeroToOCLEvent</a>:</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>     assert(!<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="BoolAssignmentChecker_8cpp.html#afa05b88a09e4f5025bb09db77f4b3a48">isBooleanType</a>() && <span class="stringliteral">"unheralded conversion to bool"</span>);</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>     <span class="keywordflow">goto</span> CheckNoBasePath;</div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span> </div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca083127f65375358e525293ded6aa20ff">CK_Dependent</a>:</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a>:</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>:</div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafb2f9da9740fb15b339767da2bcedc8a" title="Converts from _Atomic(T) to T.">CK_AtomicToNonAtomic</a>:</div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab2c34ae82486ed6cd94d5cea5ef51704" title="Converts from T to _Atomic(T).">CK_NonAtomicToAtomic</a>:</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca2aba1f25bc41c5f972576e6b3aff5d3c">CK_PointerToBoolean</a>:</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca10227766dc73da8ee82588b158be3ec5">CK_IntegralToBoolean</a>:</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca51c66fc8d55bbf9fbbe237705b1d01aa">CK_FloatingToBoolean</a>:</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca71aec4768318edbbc08dbe65bc4f0e8d">CK_MemberPointerToBoolean</a>:</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca2bd6941fcc6aebca94562ecd98a7024e" title="Converts a floating point complex to bool by comparing against 0+0i.">CK_FloatingComplexToBoolean</a>:</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca8e687c96123e650206d3feb3aba3ff5a" title="Converts an integral complex to bool by comparing against 0+0i.">CK_IntegralComplexToBoolean</a>:</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca26d313dc7aa71eb9a90dba577004ecdd">CK_LValueBitCast</a>:            <span class="comment">// -> bool&</span></div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca84fedc22426b7cd5db4e84d590522adb">CK_UserDefinedConversion</a>:    <span class="comment">// operator bool()</span></div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caac03ac448a686cc808b1b7490e2e696a">CK_BuiltinFnToFnPtr</a>:</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>   CheckNoBasePath:</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>     assert(path_empty() && <span class="stringliteral">"Cast kind should not have a base path!"</span>);</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>   }</div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span> }</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span> </div>
+<div class="line"><a name="l01529"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a9fd23c353ac60bb1657c21b0ee632614"> 1529</a></span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1CastExpr.html#a9fd23c353ac60bb1657c21b0ee632614">CastExpr::getCastKindName</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>   <span class="keywordflow">switch</span> (getCastKind()) {</div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca083127f65375358e525293ded6aa20ff">CK_Dependent</a>:</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>     <span class="keywordflow">return</span> <span class="stringliteral">"Dependent"</span>;</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca183b8948b82911a415cc54446ddcb3ab">CK_BitCast</a>:</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>     <span class="keywordflow">return</span> <span class="stringliteral">"BitCast"</span>;</div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca26d313dc7aa71eb9a90dba577004ecdd">CK_LValueBitCast</a>:</div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>     <span class="keywordflow">return</span> <span class="stringliteral">"LValueBitCast"</span>;</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a>:</div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>     <span class="keywordflow">return</span> <span class="stringliteral">"LValueToRValue"</span>;</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>:</div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>     <span class="keywordflow">return</span> <span class="stringliteral">"NoOp"</span>;</div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cacf9d54607fb757633eea67b88cd432b8">CK_BaseToDerived</a>:</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>     <span class="keywordflow">return</span> <span class="stringliteral">"BaseToDerived"</span>;</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca73a268da1a2e05cdf1ace06c46412caa">CK_DerivedToBase</a>:</div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>     <span class="keywordflow">return</span> <span class="stringliteral">"DerivedToBase"</span>;</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caafe5fe4f044e3c17524af98993c8b058">CK_UncheckedDerivedToBase</a>:</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>     <span class="keywordflow">return</span> <span class="stringliteral">"UncheckedDerivedToBase"</span>;</div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca256751070614007fb6d4b82e48460a97" title="CK_Dynamic - A C++ dynamic_cast.">CK_Dynamic</a>:</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>     <span class="keywordflow">return</span> <span class="stringliteral">"Dynamic"</span>;</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca8ea0e009738649ecec9ae75302358e8a">CK_ToUnion</a>:</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>     <span class="keywordflow">return</span> <span class="stringliteral">"ToUnion"</span>;</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca966388c17db29effd052ff1f5da7f64f">CK_ArrayToPointerDecay</a>:</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>     <span class="keywordflow">return</span> <span class="stringliteral">"ArrayToPointerDecay"</span>;</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab98f67d90bd9e115f96916271318fe71">CK_FunctionToPointerDecay</a>:</div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>     <span class="keywordflow">return</span> <span class="stringliteral">"FunctionToPointerDecay"</span>;</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca26ac11778b8142c489add68f63bb6dde">CK_NullToMemberPointer</a>:</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>     <span class="keywordflow">return</span> <span class="stringliteral">"NullToMemberPointer"</span>;</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca69507b9309c485f20be46a41f657630c">CK_NullToPointer</a>:</div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>     <span class="keywordflow">return</span> <span class="stringliteral">"NullToPointer"</span>;</div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3c6a5409bb52618fc54e2a1b7fea53e8">CK_BaseToDerivedMemberPointer</a>:</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>     <span class="keywordflow">return</span> <span class="stringliteral">"BaseToDerivedMemberPointer"</span>;</div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca82cc4f2178c9c3b36d0790c155939350">CK_DerivedToBaseMemberPointer</a>:</div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>     <span class="keywordflow">return</span> <span class="stringliteral">"DerivedToBaseMemberPointer"</span>;</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafe996870a0a2acb7913b2dfff4514961">CK_ReinterpretMemberPointer</a>:</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>     <span class="keywordflow">return</span> <span class="stringliteral">"ReinterpretMemberPointer"</span>;</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca84fedc22426b7cd5db4e84d590522adb">CK_UserDefinedConversion</a>:</div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>     <span class="keywordflow">return</span> <span class="stringliteral">"UserDefinedConversion"</span>;</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad2d52a3df80ffd6ed33b81af15c872b0">CK_ConstructorConversion</a>:</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>     <span class="keywordflow">return</span> <span class="stringliteral">"ConstructorConversion"</span>;</div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca25161f0bbb6d2b99bd5fbbf9c19ef751">CK_IntegralToPointer</a>:</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>     <span class="keywordflow">return</span> <span class="stringliteral">"IntegralToPointer"</span>;</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca71a69f66ffd32b22a11ee92d49359612">CK_PointerToIntegral</a>:</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>     <span class="keywordflow">return</span> <span class="stringliteral">"PointerToIntegral"</span>;</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca2aba1f25bc41c5f972576e6b3aff5d3c">CK_PointerToBoolean</a>:</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>     <span class="keywordflow">return</span> <span class="stringliteral">"PointerToBoolean"</span>;</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cac5d34b62fbc611f2f762ff5c72845fa5">CK_ToVoid</a>:</div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>     <span class="keywordflow">return</span> <span class="stringliteral">"ToVoid"</span>;</div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad92f354774050cdc155c425c4268c701">CK_VectorSplat</a>:</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>     <span class="keywordflow">return</span> <span class="stringliteral">"VectorSplat"</span>;</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad71cad80dd5957bfc6e8aa8f3a36f814">CK_IntegralCast</a>:</div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>     <span class="keywordflow">return</span> <span class="stringliteral">"IntegralCast"</span>;</div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca10227766dc73da8ee82588b158be3ec5">CK_IntegralToBoolean</a>:</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>     <span class="keywordflow">return</span> <span class="stringliteral">"IntegralToBoolean"</span>;</div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca2cf53b5b93effb16c027b884ed149c8d">CK_IntegralToFloating</a>:</div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>     <span class="keywordflow">return</span> <span class="stringliteral">"IntegralToFloating"</span>;</div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca0d5ae3f886d5297b84191286796cff35">CK_FloatingToIntegral</a>:</div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>     <span class="keywordflow">return</span> <span class="stringliteral">"FloatingToIntegral"</span>;</div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab482ba41f148596616a763a65f09584c">CK_FloatingCast</a>:</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>     <span class="keywordflow">return</span> <span class="stringliteral">"FloatingCast"</span>;</div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca51c66fc8d55bbf9fbbe237705b1d01aa">CK_FloatingToBoolean</a>:</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>     <span class="keywordflow">return</span> <span class="stringliteral">"FloatingToBoolean"</span>;</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca71aec4768318edbbc08dbe65bc4f0e8d">CK_MemberPointerToBoolean</a>:</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>     <span class="keywordflow">return</span> <span class="stringliteral">"MemberPointerToBoolean"</span>;</div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cacc999b93239de9e4bc022719ddd96159">CK_CPointerToObjCPointerCast</a>:</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>     <span class="keywordflow">return</span> <span class="stringliteral">"CPointerToObjCPointerCast"</span>;</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca90f41f80fbcffc5e47ac9c9b448f5c00">CK_BlockPointerToObjCPointerCast</a>:</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>     <span class="keywordflow">return</span> <span class="stringliteral">"BlockPointerToObjCPointerCast"</span>;</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cac5436c20ce687d8a80eac6656ccd4053">CK_AnyPointerToBlockPointerCast</a>:</div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>     <span class="keywordflow">return</span> <span class="stringliteral">"AnyPointerToBlockPointerCast"</span>;</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca49cdf8abcaeac51e47994305a998f3bd" title="Converting between two Objective-C object types, which can occur when performing reference binding to...">CK_ObjCObjectLValueCast</a>:</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>     <span class="keywordflow">return</span> <span class="stringliteral">"ObjCObjectLValueCast"</span>;</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca1cad6c2d96d3c0f2af106f2b1368492e" title="A conversion of a floating point real to a floating point complex of the original type...">CK_FloatingRealToComplex</a>:</div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>     <span class="keywordflow">return</span> <span class="stringliteral">"FloatingRealToComplex"</span>;</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cae5c5fd1deef6203422d504a5f8bdc6ce" title="Converts a floating point complex to floating point real of the source's element type. Just discards the imaginary component. _Complex long double -> long double.">CK_FloatingComplexToReal</a>:</div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>     <span class="keywordflow">return</span> <span class="stringliteral">"FloatingComplexToReal"</span>;</div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca2bd6941fcc6aebca94562ecd98a7024e" title="Converts a floating point complex to bool by comparing against 0+0i.">CK_FloatingComplexToBoolean</a>:</div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>     <span class="keywordflow">return</span> <span class="stringliteral">"FloatingComplexToBoolean"</span>;</div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca4afeb9e95e7e3b7306549eadbdbe9c80" title="Converts between different floating point complex types. _Complex float -> _Complex double...">CK_FloatingComplexCast</a>:</div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>     <span class="keywordflow">return</span> <span class="stringliteral">"FloatingComplexCast"</span>;</div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca43029dd8d1bc9710d1e43b8c0d294e71" title="Converts from a floating complex to an integral complex. _Complex float -> _Complex int...">CK_FloatingComplexToIntegralComplex</a>:</div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>     <span class="keywordflow">return</span> <span class="stringliteral">"FloatingComplexToIntegralComplex"</span>;</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca5cbf9648982576f016ac45aeb4ff06a1" title="Converts from an integral real to an integral complex whose element type matches the source...">CK_IntegralRealToComplex</a>:</div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>     <span class="keywordflow">return</span> <span class="stringliteral">"IntegralRealToComplex"</span>;</div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca354a7827d46025f132fd402f609f1e85" title="Converts an integral complex to an integral real of the source's element type by discarding the imagi...">CK_IntegralComplexToReal</a>:</div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>     <span class="keywordflow">return</span> <span class="stringliteral">"IntegralComplexToReal"</span>;</div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca8e687c96123e650206d3feb3aba3ff5a" title="Converts an integral complex to bool by comparing against 0+0i.">CK_IntegralComplexToBoolean</a>:</div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>     <span class="keywordflow">return</span> <span class="stringliteral">"IntegralComplexToBoolean"</span>;</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab716d5bd471b943dda830dd2659cacce" title="Converts between different integral complex types. _Complex char -> _Complex long long _Complex unsig...">CK_IntegralComplexCast</a>:</div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>     <span class="keywordflow">return</span> <span class="stringliteral">"IntegralComplexCast"</span>;</div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab4da0cbf1af3ba6fc7b47af7c548ff31" title="Converts from an integral complex to a floating complex. _Complex unsigned -> _Complex float...">CK_IntegralComplexToFloatingComplex</a>:</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>     <span class="keywordflow">return</span> <span class="stringliteral">"IntegralComplexToFloatingComplex"</span>;</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cabd5bc09cee26b551eb8174e32f1239cf" title="[ARC] Consumes a retainable object pointer that has just been produced, e.g. as the return value of a...">CK_ARCConsumeObject</a>:</div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>     <span class="keywordflow">return</span> <span class="stringliteral">"ARCConsumeObject"</span>;</div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca9f5583b92f81ac9a5b9fb5ad43e8435c" title="[ARC] Produces a retainable object pointer so that it may be consumed, e.g. by being passed to a cons...">CK_ARCProduceObject</a>:</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>     <span class="keywordflow">return</span> <span class="stringliteral">"ARCProduceObject"</span>;</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca54bc1edcd89f791f8516abeea370fa49" title="[ARC] Reclaim a retainable object pointer object that may have been produced and autoreleased as part...">CK_ARCReclaimReturnedObject</a>:</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>     <span class="keywordflow">return</span> <span class="stringliteral">"ARCReclaimReturnedObject"</span>;</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca88a24e1d8c6ee42652b389edc898488f" title="[ARC] Causes a value of block type to be copied to the heap, if it is not already there...">CK_ARCExtendBlockObject</a>:</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>     <span class="keywordflow">return</span> <span class="stringliteral">"ARCCExtendBlockObject"</span>;</div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafb2f9da9740fb15b339767da2bcedc8a" title="Converts from _Atomic(T) to T.">CK_AtomicToNonAtomic</a>:</div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>     <span class="keywordflow">return</span> <span class="stringliteral">"AtomicToNonAtomic"</span>;</div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab2c34ae82486ed6cd94d5cea5ef51704" title="Converts from T to _Atomic(T).">CK_NonAtomicToAtomic</a>:</div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>     <span class="keywordflow">return</span> <span class="stringliteral">"NonAtomicToAtomic"</span>;</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3d6e9ee43c0dc11f3efca79e7c563a20" title="Causes a block literal to by copied to the heap and then autoreleased.">CK_CopyAndAutoreleaseBlockObject</a>:</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>     <span class="keywordflow">return</span> <span class="stringliteral">"CopyAndAutoreleaseBlockObject"</span>;</div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caac03ac448a686cc808b1b7490e2e696a">CK_BuiltinFnToFnPtr</a>:</div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>     <span class="keywordflow">return</span> <span class="stringliteral">"BuiltinFnToFnPtr"</span>;</div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca8e560e545d9c0c051691299879d30932">CK_ZeroToOCLEvent</a>:</div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>     <span class="keywordflow">return</span> <span class="stringliteral">"ZeroToOCLEvent"</span>;</div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>   }</div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span> </div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>   llvm_unreachable(<span class="stringliteral">"Unhandled cast kind!"</span>);</div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> }</div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> </div>
+<div class="line"><a name="l01644"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a2453b23afa2f820b2d0c113a290f2dd5"> 1644</a></span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1CastExpr.html#a2453b23afa2f820b2d0c113a290f2dd5" title="Retrieve the cast subexpression as it was written in the source code, looking through any implicit ca...">CastExpr::getSubExprAsWritten</a>() {</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *SubExpr = 0;</div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>   <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *E = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>     SubExpr = E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>();</div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span> </div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>     <span class="comment">// Skip through reference binding to temporary.</span></div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *Materialize </div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>                                   = dyn_cast<MaterializeTemporaryExpr>(SubExpr))</div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>       SubExpr = Materialize->GetTemporaryExpr();</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>     <span class="comment">// Skip any temporary bindings; they're implicit.</span></div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXBindTemporaryExpr.html" title="Represents binding an expression to a temporary.">CXXBindTemporaryExpr</a> *Binder = dyn_cast<CXXBindTemporaryExpr>(SubExpr))</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>       SubExpr = Binder->getSubExpr();</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>     <span class="comment">// Conversions by constructor and conversion functions have a</span></div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>     <span class="comment">// subexpression describing the call; strip it off.</span></div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad2d52a3df80ffd6ed33b81af15c872b0">CK_ConstructorConversion</a>)</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>       SubExpr = cast<CXXConstructExpr>(SubExpr)->getArg(0);</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca84fedc22426b7cd5db4e84d590522adb">CK_UserDefinedConversion</a>)</div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>       SubExpr = cast<CXXMemberCallExpr>(SubExpr)->getImplicitObjectArgument();</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>     </div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>     <span class="comment">// If the subexpression we're left with is an implicit cast, look</span></div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>     <span class="comment">// through that, too.</span></div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>   } <span class="keywordflow">while</span> ((E = dyn_cast<ImplicitCastExpr>(SubExpr)));  </div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>   </div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>   <span class="keywordflow">return</span> SubExpr;</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span> }</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span> </div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span> <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> **CastExpr::path_buffer() {</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>()) {</div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span> <span class="preprocessor">#define ABSTRACT_STMT(x)</span></div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span> <span class="preprocessor"></span><span class="preprocessor">#define CASTEXPR(Type, Base) \</span></div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span> <span class="preprocessor">  case Stmt::Type##Class: \</span></div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span> <span class="preprocessor">    return reinterpret_cast<CXXBaseSpecifier**>(static_cast<Type*>(this)+1);</span></div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span> <span class="preprocessor"></span><span class="preprocessor">#define STMT(Type, Base)</span></div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span> <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="StmtNodes_8inc.html">clang/AST/StmtNodes.inc</a>"</span></div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>   <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>     llvm_unreachable(<span class="stringliteral">"non-cast expressions not possible here"</span>);</div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>   }</div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span> }</div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span> </div>
+<div class="line"><a name="l01686"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#aa267ead18e32d75579fb8181b5379947"> 1686</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CastExpr.html#aa267ead18e32d75579fb8181b5379947">CastExpr::setCastPath</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVector.html">CXXCastPath</a> &Path) {</div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>   assert(Path.size() == path_size());</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>   memcpy(path_buffer(), Path.data(), Path.size() * <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a>*));</div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span> }</div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span> </div>
+<div class="line"><a name="l01691"></a><span class="lineno"><a class="code" href="classclang_1_1ImplicitCastExpr.html#a08f7e43e99be4593f4e430f88f2fafdf"> 1691</a></span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *<a class="code" href="classclang_1_1ImplicitCastExpr.html#a08f7e43e99be4593f4e430f88f2fafdf">ImplicitCastExpr::Create</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>                                            <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>, <a class="code" href="classclang_1_1Expr.html">Expr</a> *Operand,</div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>                                            <span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVector.html">CXXCastPath</a> *BasePath,</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</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="l01695"></a><span class="lineno"> 1695</span>   <span class="keywordtype">unsigned</span> PathSize = (BasePath ? BasePath->size() : 0);</div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>   <span class="keywordtype">void</span> *Buffer =</div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>     C.<a class="code" href="classclang_1_1ASTContext.html#a2b0efa9919a08d2fb955f3003c304aa9">Allocate</a>(<span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a>) + PathSize * <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a>*));</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>   <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *E =</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>     <span class="keyword">new</span> (Buffer) <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a>(T, Kind, Operand, PathSize, VK);</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>   <span class="keywordflow">if</span> (PathSize) E-><a class="code" href="classclang_1_1CastExpr.html#aa267ead18e32d75579fb8181b5379947">setCastPath</a>(*BasePath);</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>   <span class="keywordflow">return</span> E;</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span> }</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span> </div>
+<div class="line"><a name="l01704"></a><span class="lineno"><a class="code" href="classclang_1_1ImplicitCastExpr.html#aa57bd0b3fede159d2934907650bdd018"> 1704</a></span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *<a class="code" href="classclang_1_1ImplicitCastExpr.html#aa57bd0b3fede159d2934907650bdd018">ImplicitCastExpr::CreateEmpty</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C,</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>                                                 <span class="keywordtype">unsigned</span> PathSize) {</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>   <span class="keywordtype">void</span> *Buffer =</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>     C.<a class="code" href="classclang_1_1ASTContext.html#a2b0efa9919a08d2fb955f3003c304aa9">Allocate</a>(<span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a>) + PathSize * <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a>*));</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (Buffer) <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a>(), PathSize);</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span> }</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span> </div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span> </div>
+<div class="line"><a name="l01712"></a><span class="lineno"><a class="code" href="classclang_1_1CStyleCastExpr.html#af9768e1a44c0fd51f808b72ae4c28441"> 1712</a></span> <a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a> *<a class="code" href="classclang_1_1CStyleCastExpr.html#af9768e1a44c0fd51f808b72ae4c28441">CStyleCastExpr::Create</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>                                        <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> K, <a class="code" href="classclang_1_1Expr.html">Expr</a> *Op,</div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>                                        <span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVector.html">CXXCastPath</a> *BasePath,</div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>                                        <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *WrittenTy,</div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</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> L, <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> R) {</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>   <span class="keywordtype">unsigned</span> PathSize = (BasePath ? BasePath->size() : 0);</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>   <span class="keywordtype">void</span> *Buffer =</div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>     C.<a class="code" href="classclang_1_1ASTContext.html#a2b0efa9919a08d2fb955f3003c304aa9">Allocate</a>(<span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a>) + PathSize * <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a>*));</div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>   <a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a> *E =</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>     <span class="keyword">new</span> (Buffer) <a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a>(T, VK, K, Op, PathSize, WrittenTy, L, R);</div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>   <span class="keywordflow">if</span> (PathSize) E-><a class="code" href="classclang_1_1CastExpr.html#aa267ead18e32d75579fb8181b5379947">setCastPath</a>(*BasePath);</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>   <span class="keywordflow">return</span> E;</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span> }</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span> </div>
+<div class="line"><a name="l01726"></a><span class="lineno"><a class="code" href="classclang_1_1CStyleCastExpr.html#aeceb2c349412113b508d8bf8fb91d8b8"> 1726</a></span> <a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a> *<a class="code" href="classclang_1_1CStyleCastExpr.html#aeceb2c349412113b508d8bf8fb91d8b8">CStyleCastExpr::CreateEmpty</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C,</div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>                                             <span class="keywordtype">unsigned</span> PathSize) {</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>   <span class="keywordtype">void</span> *Buffer =</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>     C.<a class="code" href="classclang_1_1ASTContext.html#a2b0efa9919a08d2fb955f3003c304aa9">Allocate</a>(<span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a>) + PathSize * <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a>*));</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (Buffer) <a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a>(), PathSize);</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> }</div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span> <span class="comment"></span></div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span> <span class="comment">/// getOpcodeStr - Turn an Opcode enum value into the punctuation char it</span></div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span> <span class="comment">/// corresponds to, e.g. "<<=".</span></div>
+<div class="line"><a name="l01735"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a839c4ea97f1ac89e09226b54d2310e43"> 1735</a></span> <span class="comment"></span>StringRef <a class="code" href="classclang_1_1BinaryOperator.html#a073b48f58b7b49f43e296caf254e61b0">BinaryOperator::getOpcodeStr</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Op) {</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>   <span class="keywordflow">switch</span> (Op) {</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a31e63255bd536c2d74a66ac47160ed53">BO_PtrMemD</a>:   <span class="keywordflow">return</span> <span class="stringliteral">".*"</span>;</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae432d0b89cd5293af333b8854e20fd40">BO_PtrMemI</a>:   <span class="keywordflow">return</span> <span class="stringliteral">"->*"</span>;</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a8e23022cab4ed3bcb24b7acd01f623e9">BO_Mul</a>:       <span class="keywordflow">return</span> <span class="stringliteral">"*"</span>;</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a58e04dd371aa4ff24af1f1ebc04739a5">BO_Div</a>:       <span class="keywordflow">return</span> <span class="stringliteral">"/"</span>;</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a91a7868de509af06d04ef1c6e21383be">BO_Rem</a>:       <span class="keywordflow">return</span> <span class="stringliteral">"%"</span>;</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abe63fd1a02a7d1191c3b2fd102b983bd">BO_Add</a>:       <span class="keywordflow">return</span> <span class="stringliteral">"+"</span>;</div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af84c54a9c8a061371180b3e8b25d4c3f">BO_Sub</a>:       <span class="keywordflow">return</span> <span class="stringliteral">"-"</span>;</div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a2a7b3ad7ff838b9d313312f2dde50cb0">BO_Shl</a>:       <span class="keywordflow">return</span> <span class="stringliteral">"<<"</span>;</div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a05544609a9c447c91873ed3fb1fec26c">BO_Shr</a>:       <span class="keywordflow">return</span> <span class="stringliteral">">>"</span>;</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a34afd641c1839b1ebdf5b96779becc5e">BO_LT</a>:        <span class="keywordflow">return</span> <span class="stringliteral">"<"</span>;</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a9ff57a80bfff7f4a29cfc5ea9525ed6f">BO_GT</a>:        <span class="keywordflow">return</span> <span class="stringliteral">">"</span>;</div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab1b013f11421020dffa959a6c1ed45af">BO_LE</a>:        <span class="keywordflow">return</span> <span class="stringliteral">"<="</span>;</div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a49c5777674892e127aeeb0746b18a1e2">BO_GE</a>:        <span class="keywordflow">return</span> <span class="stringliteral">">="</span>;</div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a69f29b9100be3ced416f394df1b8387d">BO_EQ</a>:        <span class="keywordflow">return</span> <span class="stringliteral">"=="</span>;</div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a>:        <span class="keywordflow">return</span> <span class="stringliteral">"!="</span>;</div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1add0a26702b466b3820e0032922751589">BO_And</a>:       <span class="keywordflow">return</span> <span class="stringliteral">"&"</span>;</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a01db02868a5b622d647d2a3f7d7d0c5a">BO_Xor</a>:       <span class="keywordflow">return</span> <span class="stringliteral">"^"</span>;</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a0bbf9a36f955dba18422f3c8800443d1">BO_Or</a>:        <span class="keywordflow">return</span> <span class="stringliteral">"|"</span>;</div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a30e5536f851a7efedefd1ca23a295741">BO_LAnd</a>:      <span class="keywordflow">return</span> <span class="stringliteral">"&&"</span>;</div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a7bc0171ddbb52333099a4774326d72c9">BO_LOr</a>:       <span class="keywordflow">return</span> <span class="stringliteral">"||"</span>;</div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af0f6693357ca6bc7488c1d4de4cbe303">BO_Assign</a>:    <span class="keywordflow">return</span> <span class="stringliteral">"="</span>;</div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae54f31f3a3a80606d1570d18fd3e2aa5">BO_MulAssign</a>: <span class="keywordflow">return</span> <span class="stringliteral">"*="</span>;</div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af6f0e4f3b441322d5d3e662929e03e5c">BO_DivAssign</a>: <span class="keywordflow">return</span> <span class="stringliteral">"/="</span>;</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad745afa80b49821a17085fb374a5f1af">BO_RemAssign</a>: <span class="keywordflow">return</span> <span class="stringliteral">"%="</span>;</div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af2474871202242b544a408e208f2399e">BO_AddAssign</a>: <span class="keywordflow">return</span> <span class="stringliteral">"+="</span>;</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abc31e47183ba44dc8fc651c06cce3277">BO_SubAssign</a>: <span class="keywordflow">return</span> <span class="stringliteral">"-="</span>;</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a8039f4b36186fda6134f233fd7f45ce3">BO_ShlAssign</a>: <span class="keywordflow">return</span> <span class="stringliteral">"<<="</span>;</div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a604ed36a5eeadd90dc085a248eca4374">BO_ShrAssign</a>: <span class="keywordflow">return</span> <span class="stringliteral">">>="</span>;</div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab40fb7aa73ca8472468f2623a6339759">BO_AndAssign</a>: <span class="keywordflow">return</span> <span class="stringliteral">"&="</span>;</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a51df4970d4b108c4481cb80eeb47f436">BO_XorAssign</a>: <span class="keywordflow">return</span> <span class="stringliteral">"^="</span>;</div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a7dd0c189f68df30c2b390bb99d140cbf">BO_OrAssign</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"|="</span>;</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae3c9652c3c01080bd794e8e03988e278">BO_Comma</a>:     <span class="keywordflow">return</span> <span class="stringliteral">","</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> </div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>   llvm_unreachable(<span class="stringliteral">"Invalid OpCode!"</span>);</div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span> }</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span> </div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">BinaryOperatorKind</a></div>
+<div class="line"><a name="l01775"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#ae394f72a1fce1435a47e79f816297329"> 1775</a></span> <a class="code" href="classclang_1_1BinaryOperator.html#ae394f72a1fce1435a47e79f816297329" title="Retrieve the binary opcode that corresponds to the given overloaded operator.">BinaryOperator::getOverloadedOpcode</a>(<a class="code" href="namespaceclang.html#ad937c281bb5b868d30a72c9bf137baf6" title="Enumeration specifying the different kinds of C++ overloaded operators.">OverloadedOperatorKind</a> OO) {</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>   <span class="keywordflow">switch</span> (OO) {</div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>   <span class="keywordflow">default</span>: llvm_unreachable(<span class="stringliteral">"Not an overloadable binary operator"</span>);</div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>   <span class="keywordflow">case</span> OO_Plus: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abe63fd1a02a7d1191c3b2fd102b983bd">BO_Add</a>;</div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>   <span class="keywordflow">case</span> OO_Minus: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af84c54a9c8a061371180b3e8b25d4c3f">BO_Sub</a>;</div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>   <span class="keywordflow">case</span> OO_Star: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a8e23022cab4ed3bcb24b7acd01f623e9">BO_Mul</a>;</div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>   <span class="keywordflow">case</span> OO_Slash: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a58e04dd371aa4ff24af1f1ebc04739a5">BO_Div</a>;</div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>   <span class="keywordflow">case</span> OO_Percent: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a91a7868de509af06d04ef1c6e21383be">BO_Rem</a>;</div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>   <span class="keywordflow">case</span> OO_Caret: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a01db02868a5b622d647d2a3f7d7d0c5a">BO_Xor</a>;</div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>   <span class="keywordflow">case</span> OO_Amp: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1add0a26702b466b3820e0032922751589">BO_And</a>;</div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>   <span class="keywordflow">case</span> OO_Pipe: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a0bbf9a36f955dba18422f3c8800443d1">BO_Or</a>;</div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>   <span class="keywordflow">case</span> OO_Equal: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af0f6693357ca6bc7488c1d4de4cbe303">BO_Assign</a>;</div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>   <span class="keywordflow">case</span> OO_Less: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a34afd641c1839b1ebdf5b96779becc5e">BO_LT</a>;</div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>   <span class="keywordflow">case</span> OO_Greater: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a9ff57a80bfff7f4a29cfc5ea9525ed6f">BO_GT</a>;</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>   <span class="keywordflow">case</span> OO_PlusEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af2474871202242b544a408e208f2399e">BO_AddAssign</a>;</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>   <span class="keywordflow">case</span> OO_MinusEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abc31e47183ba44dc8fc651c06cce3277">BO_SubAssign</a>;</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>   <span class="keywordflow">case</span> OO_StarEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae54f31f3a3a80606d1570d18fd3e2aa5">BO_MulAssign</a>;</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>   <span class="keywordflow">case</span> OO_SlashEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af6f0e4f3b441322d5d3e662929e03e5c">BO_DivAssign</a>;</div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>   <span class="keywordflow">case</span> OO_PercentEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad745afa80b49821a17085fb374a5f1af">BO_RemAssign</a>;</div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>   <span class="keywordflow">case</span> OO_CaretEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a51df4970d4b108c4481cb80eeb47f436">BO_XorAssign</a>;</div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>   <span class="keywordflow">case</span> OO_AmpEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab40fb7aa73ca8472468f2623a6339759">BO_AndAssign</a>;</div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>   <span class="keywordflow">case</span> OO_PipeEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a7dd0c189f68df30c2b390bb99d140cbf">BO_OrAssign</a>;</div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>   <span class="keywordflow">case</span> OO_LessLess: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a2a7b3ad7ff838b9d313312f2dde50cb0">BO_Shl</a>;</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>   <span class="keywordflow">case</span> OO_GreaterGreater: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a05544609a9c447c91873ed3fb1fec26c">BO_Shr</a>;</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>   <span class="keywordflow">case</span> OO_LessLessEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a8039f4b36186fda6134f233fd7f45ce3">BO_ShlAssign</a>;</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>   <span class="keywordflow">case</span> OO_GreaterGreaterEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a604ed36a5eeadd90dc085a248eca4374">BO_ShrAssign</a>;</div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>   <span class="keywordflow">case</span> OO_EqualEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a69f29b9100be3ced416f394df1b8387d">BO_EQ</a>;</div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>   <span class="keywordflow">case</span> OO_ExclaimEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a>;</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>   <span class="keywordflow">case</span> OO_LessEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab1b013f11421020dffa959a6c1ed45af">BO_LE</a>;</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>   <span class="keywordflow">case</span> OO_GreaterEqual: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a49c5777674892e127aeeb0746b18a1e2">BO_GE</a>;</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>   <span class="keywordflow">case</span> OO_AmpAmp: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a30e5536f851a7efedefd1ca23a295741">BO_LAnd</a>;</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>   <span class="keywordflow">case</span> OO_PipePipe: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a7bc0171ddbb52333099a4774326d72c9">BO_LOr</a>;</div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>   <span class="keywordflow">case</span> OO_Comma: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae3c9652c3c01080bd794e8e03988e278">BO_Comma</a>;</div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>   <span class="keywordflow">case</span> OO_ArrowStar: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae432d0b89cd5293af333b8854e20fd40">BO_PtrMemI</a>;</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> }</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span> </div>
+<div class="line"><a name="l01812"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a15ed7ff7091fec4f6bc86f02fcb3410d"> 1812</a></span> <a class="code" href="namespaceclang.html#ad937c281bb5b868d30a72c9bf137baf6" title="Enumeration specifying the different kinds of C++ overloaded operators.">OverloadedOperatorKind</a> <a class="code" href="classclang_1_1BinaryOperator.html#a15ed7ff7091fec4f6bc86f02fcb3410d" title="Retrieve the overloaded operator kind that corresponds to the given binary opcode.">BinaryOperator::getOverloadedOperator</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) {</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>   <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespaceclang.html#ad937c281bb5b868d30a72c9bf137baf6" title="Enumeration specifying the different kinds of C++ overloaded operators.">OverloadedOperatorKind</a> OverOps[] = {</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>     <span class="comment">/* .* Cannot be overloaded */</span><a class="code" href="namespaceclang.html#ad937c281bb5b868d30a72c9bf137baf6ab5e4155cb2b1833efc118f076a44014e" title="Not an overloaded operator.">OO_None</a>, OO_ArrowStar,</div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>     OO_Star, OO_Slash, OO_Percent,</div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>     OO_Plus, OO_Minus,</div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>     OO_LessLess, OO_GreaterGreater,</div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>     OO_Less, OO_Greater, OO_LessEqual, OO_GreaterEqual,</div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>     OO_EqualEqual, OO_ExclaimEqual,</div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>     OO_Amp,</div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>     OO_Caret,</div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>     OO_Pipe,</div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>     OO_AmpAmp,</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>     OO_PipePipe,</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>     OO_Equal, OO_StarEqual,</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>     OO_SlashEqual, OO_PercentEqual,</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>     OO_PlusEqual, OO_MinusEqual,</div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>     OO_LessLessEqual, OO_GreaterGreaterEqual,</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>     OO_AmpEqual, OO_CaretEqual,</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>     OO_PipeEqual,</div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>     OO_Comma</div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>   };</div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>   <span class="keywordflow">return</span> OverOps[Opc];</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span> }</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span> </div>
+<div class="line"><a name="l01836"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a172dccccf043225f6f3fecc4b9e68af5"> 1836</a></span> <a class="code" href="classclang_1_1InitListExpr.html#a172dccccf043225f6f3fecc4b9e68af5">InitListExpr::InitListExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> lbraceloc,</div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>                            <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr*></a> initExprs, <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> rbraceloc)</div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>   : <a class="code" href="classclang_1_1Expr.html">Expr</a>(InitListExprClass, <a class="code" href="classclang_1_1QualType.html">QualType</a>(), <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>,</div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>          <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>     InitExprs(C, initExprs.size()),</div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>     LBraceLoc(lbraceloc), RBraceLoc(rbraceloc), AltForm(0, <a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>)</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> {</div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>   <a class="code" href="classclang_1_1InitListExpr.html#aee458af383f333d3a251e8af5d6aaddd">sawArrayRangeDesignator</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0; I != initExprs.size(); ++I) {</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>     <span class="keywordflow">if</span> (initExprs[I]-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>())</div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.TypeDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>     <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (initExprs[I]-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>())</div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ValueDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>     <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (initExprs[I]-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>())</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>     <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (initExprs[I]-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>())</div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ContainsUnexpandedParameterPack = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>   }</div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>       </div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>   InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a39057847733da40148a7b34e2549b31c">insert</a>(C, InitExprs.<a class="code" href="classclang_1_1ASTVector.html#ab8c57fad9e502348dfe3b7429a8d11de">end</a>(), initExprs.begin(), initExprs.end());</div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</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"><a class="code" href="classclang_1_1InitListExpr.html#afe2e0226dfe11b843b3ee311dfefeaa1"> 1858</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitListExpr.html#afe2e0226dfe11b843b3ee311dfefeaa1" title="Reserve space for some number of initializers.">InitListExpr::reserveInits</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <span class="keywordtype">unsigned</span> NumInits) {</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>   <span class="keywordflow">if</span> (NumInits > InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a91c5d64d94979c7d6cf707c8ab167545">size</a>())</div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>     InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a5f74ffc117f765ac9cc0c5dc1fb1bd10">reserve</a>(C, NumInits);</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> </div>
+<div class="line"><a name="l01863"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a53e837eb4723c032fe96aa58bb7e8931"> 1863</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitListExpr.html#a53e837eb4723c032fe96aa58bb7e8931" title="Specify the number of initializers.">InitListExpr::resizeInits</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <span class="keywordtype">unsigned</span> NumInits) {</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>   InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a17fc96f55c0c233dcf968ed833750540">resize</a>(C, NumInits, 0);</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"><a class="code" href="classclang_1_1InitListExpr.html#a8736c08fc15eded5b30c34b997fd2d8f"> 1867</a></span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<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...">InitListExpr::updateInit</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <span class="keywordtype">unsigned</span> Init, <a class="code" href="classclang_1_1Expr.html">Expr</a> *expr) {</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>   <span class="keywordflow">if</span> (Init >= InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a91c5d64d94979c7d6cf707c8ab167545">size</a>()) {</div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>     InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a39057847733da40148a7b34e2549b31c">insert</a>(C, InitExprs.<a class="code" href="classclang_1_1ASTVector.html#ab8c57fad9e502348dfe3b7429a8d11de">end</a>(), Init - InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a91c5d64d94979c7d6cf707c8ab167545">size</a>() + 1, 0);</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>     InitExprs.<a class="code" href="classclang_1_1ASTVector.html#adb96809e46f2d7026d28db002c1a7e0c">back</a>() = <a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>;</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>   }</div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span> </div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *Result = cast_or_null<Expr>(InitExprs[Init]);</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>   InitExprs[Init] = <a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>;</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span> }</div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span> </div>
+<div class="line"><a name="l01879"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a927c5587d39f8871c42c174515a45420"> 1879</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitListExpr.html#a927c5587d39f8871c42c174515a45420">InitListExpr::setArrayFiller</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *filler) {</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>   assert(!<a class="code" href="classclang_1_1InitListExpr.html#a707cde0d050f6ab1ddd2d263fae0920b" title="Return true if this is an array initializer and its array "filler" has been set.">hasArrayFiller</a>() && <span class="stringliteral">"Filler already set!"</span>);</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>   ArrayFillerOrUnionFieldInit = filler;</div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>   <span class="comment">// Fill out any "holes" in the array due to designated initializers.</span></div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> **inits = <a class="code" href="classclang_1_1InitListExpr.html#a9c8e3b94a698c856190bffa2127fe46a" title="Retrieve the set of initializers.">getInits</a>();</div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = <a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>(); i != e; ++i)</div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>     <span class="keywordflow">if</span> (inits[i] == 0)</div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>       inits[i] = filler;</div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span> }</div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span> </div>
+<div class="line"><a name="l01889"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a5b5af73a0bd066a4d484ad409e3ebefc"> 1889</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1InitListExpr.html#a5b5af73a0bd066a4d484ad409e3ebefc">InitListExpr::isStringLiteralInit</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() != 1)</div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *AT = <a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ae2ffc12f9601382aa216450a2d33c823">getAsArrayTypeUnsafe</a>();</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>   <span class="keywordflow">if</span> (!AT || !AT-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>()-><a class="code" href="classclang_1_1Type.html#a8bde7a56623fd89e9efafde792c56dac">isIntegerType</a>())</div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init = <a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(0)-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>   <span class="keywordflow">return</span> isa<StringLiteral>(Init) || isa<ObjCEncodeExpr>(Init);</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span> }</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span> </div>
+<div class="line"><a name="l01899"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd"> 1899</a></span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">InitListExpr::getLocStart</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *SyntacticForm = <a class="code" href="classclang_1_1InitListExpr.html#a802842fde8e9d55098e4d6c5dba68ff8">getSyntacticForm</a>())</div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>     <span class="keywordflow">return</span> SyntacticForm->getLocStart();</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</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> Beg = LBraceLoc;</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>   <span class="keywordflow">if</span> (Beg.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>()) {</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>     <span class="comment">// Find the first non-null initializer.</span></div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1Stmt.html">InitExprsTy::const_iterator</a> I = InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a2a3333e56642da27e62a83be9219ba2f">begin</a>(),</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>                                      E = InitExprs.<a class="code" href="classclang_1_1ASTVector.html#ab8c57fad9e502348dfe3b7429a8d11de">end</a>(); </div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>       I != E; ++I) {</div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a> = *I) {</div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>         Beg = <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>->getLocStart();</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>       }  </div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>     }</div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>   }</div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>   <span class="keywordflow">return</span> Beg;</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"><a class="code" href="classclang_1_1InitListExpr.html#af6f6f4be77b3490277f43b11d7e2797c"> 1917</a></span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1InitListExpr.html#af6f6f4be77b3490277f43b11d7e2797c">InitListExpr::getLocEnd</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *SyntacticForm = <a class="code" href="classclang_1_1InitListExpr.html#a802842fde8e9d55098e4d6c5dba68ff8">getSyntacticForm</a>())</div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>     <span class="keywordflow">return</span> SyntacticForm->getLocEnd();</div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</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> End = RBraceLoc;</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>   <span class="keywordflow">if</span> (End.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>()) {</div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>     <span class="comment">// Find the first non-null initializer from the end.</span></div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ASTVector.html#a35886aee911d388c26dca43b8f2e3e01">InitExprsTy::const_reverse_iterator</a> I = InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a2c6afe48552563d91d104425cdeeff8a">rbegin</a>(),</div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>          E = InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a624ba9eef50bd40c9ba71dd9bd8ee64f">rend</a>();</div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>          I != E; ++I) {</div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a> = *I) {</div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>         End = <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>->getLocEnd();</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>       }</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>     }</div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>   }</div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>   <span class="keywordflow">return</span> End;</div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span> }</div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span> <span class="comment"></span></div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span> <span class="comment">/// getFunctionType - Return the underlying function type for this block.</span></div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01937"></a><span class="lineno"><a class="code" href="classclang_1_1BlockExpr.html#a085364850b28c1b3ad42940a5c1a0772"> 1937</a></span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *<a class="code" href="classclang_1_1BlockExpr.html#a085364850b28c1b3ad42940a5c1a0772" title="getFunctionType - Return the underlying function type for this block.">BlockExpr::getFunctionType</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>   <span class="comment">// The block pointer is never sugared, but the function type might be.</span></div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>   <span class="keywordflow">return</span> cast<BlockPointerType>(<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>())</div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>            ->getPointeeType()-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a>>();</div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span> }</div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span> </div>
+<div class="line"><a name="l01943"></a><span class="lineno"><a class="code" href="classclang_1_1BlockExpr.html#a800735c615adf5dbcc69fd932492e689"> 1943</a></span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1BlockExpr.html#a800735c615adf5dbcc69fd932492e689">BlockExpr::getCaretLocation</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BlockExpr.html#a65d6457c153dabd2a2b47abdb4433b60">TheBlock</a>-><a class="code" href="classclang_1_1BlockDecl.html#a7a4dfb0817f448f21557c6797c310957">getCaretLocation</a>();</div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span> }</div>
+<div class="line"><a name="l01946"></a><span class="lineno"><a class="code" href="classclang_1_1BlockExpr.html#aa5194699808c24cd2fa3ccf9d9a76301"> 1946</a></span> <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="classclang_1_1BlockExpr.html#aa5194699808c24cd2fa3ccf9d9a76301">BlockExpr::getBody</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BlockExpr.html#a65d6457c153dabd2a2b47abdb4433b60">TheBlock</a>-><a class="code" href="classclang_1_1BlockDecl.html#ae07a2821ec03192a1628168aaeb34621">getBody</a>();</div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span> }</div>
+<div class="line"><a name="l01949"></a><span class="lineno"><a class="code" href="classclang_1_1BlockExpr.html#aeb845ec7355dad7abf1ac94d4f0fb99d"> 1949</a></span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="classclang_1_1BlockExpr.html#aa5194699808c24cd2fa3ccf9d9a76301">BlockExpr::getBody</a>() {</div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BlockExpr.html#a65d6457c153dabd2a2b47abdb4433b60">TheBlock</a>-><a class="code" href="classclang_1_1BlockDecl.html#ae07a2821ec03192a1628168aaeb34621">getBody</a>();</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span> }</div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span> </div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span> </div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span> <span class="comment">// Generic Expression Routines</span></div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span> <span class="comment"></span></div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span> <span class="comment">/// isUnusedResultAWarning - Return true if this immediate expression should</span></div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span> <span class="comment">/// be warned about if the result is unused.  If so, fill in Loc and Ranges</span></div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span> <span class="comment">/// with location to warn on and the source range[s] to report with the</span></div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span> <span class="comment">/// warning.</span></div>
+<div class="line"><a name="l01962"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c"> 1962</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">Expr::isUnusedResultAWarning</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *&WarnE, <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="l01963"></a><span class="lineno"> 1963</span>                                   <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> &R1, <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> &R2,</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</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> &Ctx)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>   <span class="comment">// Don't warn if the expr is type dependent. The type could end up</span></div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>   <span class="comment">// instantiating to void.</span></div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>())</div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</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>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>()) {</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>   <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isVoidType())</div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>     WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>     Loc = <a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>();</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>     R1 = <a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</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>   <span class="keywordflow">case</span> ParenExprClass:</div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>     <span class="keywordflow">return</span> cast<ParenExpr>(<span class="keyword">this</span>)->getSubExpr()-></div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>       <a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx);</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>   <span class="keywordflow">case</span> GenericSelectionExprClass:</div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>     <span class="keywordflow">return</span> cast<GenericSelectionExpr>(<span class="keyword">this</span>)->getResultExpr()-></div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>       <a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx);</div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>   <span class="keywordflow">case</span> ChooseExprClass:</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>     <span class="keywordflow">return</span> cast<ChooseExpr>(<span class="keyword">this</span>)->getChosenSubExpr()-></div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>       <a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx);</div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>   <span class="keywordflow">case</span> UnaryOperatorClass: {</div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *UO = cast<UnaryOperator>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span> </div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>     <span class="keywordflow">switch</span> (UO-><a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b">getOpcode</a>()) {</div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa3663aba90ba0dd36bff0db1db1e20a5e">UO_Plus</a>:</div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffad2b935758542a3bd7ecec931517483fb">UO_Minus</a>:</div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa74539ddfc7ac7056cfaeeca1deed46be">UO_AddrOf</a>:</div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa5f894bd8f3c3c88a605992b6d59fab6a">UO_Not</a>:</div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffab236f32b7261ecbeb4da53fedab54d4b">UO_LNot</a>:</div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa7fa8b49244d53a4c50b7d8e63257449e">UO_Deref</a>:</div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa6d908d314a5f7c26833ffc0c453b9a40">UO_PostInc</a>:</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa5cd3ab72d62411d215161f9f852cc589">UO_PostDec</a>:</div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa8e13dc1c94cb3c4aec9526575bdd424d">UO_PreInc</a>:</div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffade6bd9d0cc5c62a832da915f7e837562">UO_PreDec</a>:                 <span class="comment">// ++/--</span></div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;  <span class="comment">// Not a warning.</span></div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa8e61d989a095d6d34c4fa6325233dab7">UO_Real</a>:</div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa27e6ce45ef7fa78a3a6d6a7700d1802d">UO_Imag</a>:</div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>       <span class="comment">// accessing a piece of a volatile complex is a side-effect.</span></div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>       <span class="keywordflow">if</span> (Ctx.<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>(UO-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>())</div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>           .isVolatileQualified())</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>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffadc9189ae28cc27f4b3170faeb8ea61b5">UO_Extension</a>:</div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>       <span class="keywordflow">return</span> UO-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx);</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>     }</div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>     WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>     Loc = UO-><a class="code" href="classclang_1_1UnaryOperator.html#a0fa25f2d735fdc9ee601228c5bd4ad68" title="getOperatorLoc - Return the location of the operator.">getOperatorLoc</a>();</div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>     R1 = UO-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>()-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>   }</div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>   <span class="keywordflow">case</span> BinaryOperatorClass: {</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *BO = cast<BinaryOperator>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>     <span class="keywordflow">switch</span> (BO-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()) {</div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>       <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>       <span class="comment">// Consider the RHS of comma for side effects. LHS was checked by</span></div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>       <span class="comment">// Sema::CheckCommaOperands.</span></div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae3c9652c3c01080bd794e8e03988e278">BO_Comma</a>:</div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>         <span class="comment">// ((foo = <blah>), 0) is an idiom for hiding the result (and</span></div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>         <span class="comment">// lvalue-ness) of an assignment written in a macro.</span></div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a> *IE =</div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>               dyn_cast<IntegerLiteral>(BO-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>()))</div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>           <span class="keywordflow">if</span> (IE->getValue() == 0)</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>             <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>         <span class="keywordflow">return</span> BO-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx);</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>       <span class="comment">// Consider '||', '&&' to have side effects if the LHS or RHS does.</span></div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a30e5536f851a7efedefd1ca23a295741">BO_LAnd</a>:</div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a7bc0171ddbb52333099a4774326d72c9">BO_LOr</a>:</div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>         <span class="keywordflow">if</span> (!BO-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx) ||</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>             !BO-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx))</div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>           <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>     }</div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>     <span class="keywordflow">if</span> (BO-><a class="code" href="classclang_1_1BinaryOperator.html#abf2f15561ec6d790031ec82974924690">isAssignmentOp</a>())</div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>     WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>     Loc = BO-><a class="code" href="classclang_1_1BinaryOperator.html#a0b017effb7b1d6ca87b78bd28f6be9ad">getOperatorLoc</a>();</div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>     R1 = BO-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>     R2 = BO-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>   }</div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>   <span class="keywordflow">case</span> CompoundAssignOperatorClass:</div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>   <span class="keywordflow">case</span> VAArgExprClass:</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>   <span class="keywordflow">case</span> AtomicExprClass:</div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span> </div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>   <span class="keywordflow">case</span> ConditionalOperatorClass: {</div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>     <span class="comment">// If only one of the LHS or RHS is a warning, the operator might</span></div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>     <span class="comment">// be being used for control flow. Only warn if both the LHS and</span></div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>     <span class="comment">// RHS are warnings.</span></div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ConditionalOperator.html">ConditionalOperator</a> *Exp = cast<ConditionalOperator>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>     <span class="keywordflow">if</span> (!Exp-><a class="code" href="classclang_1_1ConditionalOperator.html#a10ae382d760beec138b94003f277ae75">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx))</div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>     <span class="keywordflow">if</span> (!Exp-><a class="code" href="classclang_1_1ConditionalOperator.html#a15ef8acd411290e7d553e858528524f5">getLHS</a>())</div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>     <span class="keywordflow">return</span> Exp-><a class="code" href="classclang_1_1ConditionalOperator.html#a15ef8acd411290e7d553e858528524f5">getLHS</a>()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx);</div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>   }</div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span> </div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>   <span class="keywordflow">case</span> MemberExprClass:</div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>     WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>     Loc = cast<MemberExpr>(<span class="keyword">this</span>)->getMemberLoc();</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>     R1 = <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(Loc, Loc);</div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>     R2 = cast<MemberExpr>(<span class="keyword">this</span>)->getBase()->getSourceRange();</div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span> </div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>   <span class="keywordflow">case</span> ArraySubscriptExprClass:</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>     WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>     Loc = cast<ArraySubscriptExpr>(<span class="keyword">this</span>)->getRBracketLoc();</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>     R1 = cast<ArraySubscriptExpr>(<span class="keyword">this</span>)->getLHS()->getSourceRange();</div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>     R2 = cast<ArraySubscriptExpr>(<span class="keyword">this</span>)->getRHS()->getSourceRange();</div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span> </div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>   <span class="keywordflow">case</span> CXXOperatorCallExprClass: {</div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>     <span class="comment">// We warn about operator== and operator!= even when user-defined operator</span></div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>     <span class="comment">// overloads as there is no reasonable way to define these such that they</span></div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>     <span class="comment">// have non-trivial, desirable side-effects. See the -Wunused-comparison</span></div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>     <span class="comment">// warning: these operators are commonly typo'ed, and so warning on them</span></div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>     <span class="comment">// provides additional value as well. If this list is updated,</span></div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>     <span class="comment">// DiagnoseUnusedComparison should be as well.</span></div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXOperatorCallExpr.html" title="A call to an overloaded operator written using operator syntax.">CXXOperatorCallExpr</a> *Op = cast<CXXOperatorCallExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>     <span class="keywordflow">if</span> (Op-><a class="code" href="classclang_1_1CXXOperatorCallExpr.html#a9ef5857ec69acb9ea1eef9983becf253" title="Returns the kind of overloaded operator that this expression refers to.">getOperator</a>() == OO_EqualEqual ||</div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>         Op-><a class="code" href="classclang_1_1CXXOperatorCallExpr.html#a9ef5857ec69acb9ea1eef9983becf253" title="Returns the kind of overloaded operator that this expression refers to.">getOperator</a>() == OO_ExclaimEqual) {</div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>       WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>       Loc = Op-><a class="code" href="classclang_1_1CXXOperatorCallExpr.html#a11a675ef264d6704aeaaa46051c218af" title="Returns the location of the operator symbol in the expression.">getOperatorLoc</a>();</div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>       R1 = Op-><a class="code" href="classclang_1_1CXXOperatorCallExpr.html#aa27d217cc9b3c069d1a43e5a0d2df4c4">getSourceRange</a>();</div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>     }</div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span> </div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>     <span class="comment">// Fallthrough for generic call handling.</span></div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>   }</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>   <span class="keywordflow">case</span> CallExprClass:</div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>   <span class="keywordflow">case</span> CXXMemberCallExprClass:</div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>   <span class="keywordflow">case</span> UserDefinedLiteralClass: {</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>     <span class="comment">// If this is a direct call, get the callee.</span></div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CallExpr.html">CallExpr</a> *CE = cast<CallExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *FD = CE-><a class="code" href="classclang_1_1CallExpr.html#a68507440cf707685b486b1f446d28f53">getCalleeDecl</a>()) {</div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>       <span class="comment">// If the callee has attribute pure, const, or warn_unused_result, warn</span></div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>       <span class="comment">// about it. void foo() { strlen("bar"); } should warn.</span></div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>       <span class="comment">// Note: If new cases are added here, DiagnoseUnusedExprResult should be</span></div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>       <span class="comment">// updated to match for QoI.</span></div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>       <span class="keywordflow">if</span> (FD->getAttr<<a class="code" href="classclang_1_1WarnUnusedResultAttr.html">WarnUnusedResultAttr</a>>() ||</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>           FD->getAttr<<a class="code" href="classclang_1_1PureAttr.html">PureAttr</a>>() || FD->getAttr<<a class="code" href="classclang_1_1ConstAttr.html">ConstAttr</a>>()) {</div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>         WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>         Loc = CE-><a class="code" href="classclang_1_1CallExpr.html#a3a2b7cbceb661c81f0d6eb937610eb75">getCallee</a>()-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>         R1 = CE-><a class="code" href="classclang_1_1CallExpr.html#a3a2b7cbceb661c81f0d6eb937610eb75">getCallee</a>()-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span> </div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>         <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span> NumArgs = CE-><a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83">getNumArgs</a>())</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>           R2 = <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(CE-><a class="code" href="classclang_1_1CallExpr.html#aa454d6f1e76623da60451885239f63c6" title="getArg - Return the specified argument.">getArg</a>(0)-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>                            CE-><a class="code" href="classclang_1_1CallExpr.html#aa454d6f1e76623da60451885239f63c6" title="getArg - Return the specified argument.">getArg</a>(NumArgs-1)-><a class="code" href="classclang_1_1Stmt.html#acdd36e45abff718e8134873f9b7448ef">getLocEnd</a>());</div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>       }</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>     }</div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</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> </div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>   <span class="comment">// If we don't know precisely what we're looking at, let's not warn.</span></div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>   <span class="keywordflow">case</span> UnresolvedLookupExprClass:</div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>   <span class="keywordflow">case</span> CXXUnresolvedConstructExprClass:</div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span> </div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>   <span class="keywordflow">case</span> CXXTemporaryObjectExprClass:</div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>   <span class="keywordflow">case</span> CXXConstructExprClass: {</div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Type = <a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a7dc6c3dbc192ad98871c3cc484376b9a" title="Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or beca...">getAsCXXRecordDecl</a>()) {</div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>       <span class="keywordflow">if</span> (Type->hasAttr<<a class="code" href="classclang_1_1WarnUnusedAttr.html">WarnUnusedAttr</a>>()) {</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>         WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>         Loc = <a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>         R1 = <a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>       }</div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>     }</div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>   }</div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span> </div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>   <span class="keywordflow">case</span> ObjCMessageExprClass: {</div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMessageExpr.html" title="An expression that sends a message to the given Objective-C object or class.">ObjCMessageExpr</a> *ME = cast<ObjCMessageExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>     <span class="keywordflow">if</span> (Ctx.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>         ME-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a9bfb141a70fa8553d0f5a970189e629b" title="Determine whether this is an instance message to either a computed object or to super.">isInstanceMessage</a>() &&</div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>         !ME-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a0ee6d74a089fe24d755d9cfd8bceef3f">isVoidType</a>() &&</div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>         ME-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a049c6bd967bc71432bf625d2c3a8306b">getMethodFamily</a>() == <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a7749fb8107514089095277752fe75ece">OMF_init</a>) {</div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>       WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>       Loc = <a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>();</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>       R1 = ME-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>     }</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span> </div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MD = ME-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a18c98ce48ed8a78cb0290d74feab687a">getMethodDecl</a>();</div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>     <span class="keywordflow">if</span> (MD && MD-><a class="code" href="classclang_1_1Decl.html#a6a041df02fad17a6fabe51af5de0ea3c">getAttr</a><<a class="code" href="classclang_1_1WarnUnusedResultAttr.html">WarnUnusedResultAttr</a>>()) {</div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>       WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>       Loc = <a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>();</div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>     }</div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>   }</div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> </div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>   <span class="keywordflow">case</span> ObjCPropertyRefExprClass:</div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>     WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>     Loc = <a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>();</div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>     R1 = <a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>     <span class="keywordflow">return</span> <span class="keyword">true</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="keywordflow">case</span> PseudoObjectExprClass: {</div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1PseudoObjectExpr.html">PseudoObjectExpr</a> *PO = cast<PseudoObjectExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span> </div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>     <span class="comment">// Only complain about things that have the form of a getter.</span></div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>     <span class="keywordflow">if</span> (isa<UnaryOperator>(PO-><a class="code" href="classclang_1_1PseudoObjectExpr.html#a4412c8cea58337229e7b417fec34dbd4">getSyntacticForm</a>()) ||</div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>         isa<BinaryOperator>(PO-><a class="code" href="classclang_1_1PseudoObjectExpr.html#a4412c8cea58337229e7b417fec34dbd4">getSyntacticForm</a>()))</div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span> </div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>     WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>     Loc = <a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>();</div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>     R1 = <a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>   }</div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span> </div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>   <span class="keywordflow">case</span> StmtExprClass: {</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>     <span class="comment">// Statement exprs don't logically have side effects themselves, but are</span></div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>     <span class="comment">// sometimes used in macros in ways that give them a type that is unused.</span></div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>     <span class="comment">// For example ({ blah; foo(); }) will end up with a type if foo has a type.</span></div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>     <span class="comment">// however, if the result of the stmt expr is dead, we don't want to emit a</span></div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>     <span class="comment">// warning.</span></div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CompoundStmt.html">CompoundStmt</a> *CS = cast<StmtExpr>(<span class="keyword">this</span>)->getSubStmt();</div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>     <span class="keywordflow">if</span> (!CS-><a class="code" href="classclang_1_1CompoundStmt.html#aaa6e2a814202be5f733f679565927819">body_empty</a>()) {</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = dyn_cast<Expr>(CS-><a class="code" href="classclang_1_1CompoundStmt.html#a0e0462c6a95a6cfd54bf73d5cdfa9ba5">body_back</a>()))</div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>         <span class="keywordflow">return</span> E->isUnusedResultAWarning(WarnE, Loc, R1, R2, Ctx);</div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1LabelStmt.html">LabelStmt</a> *Label = dyn_cast<LabelStmt>(CS-><a class="code" href="classclang_1_1CompoundStmt.html#a0e0462c6a95a6cfd54bf73d5cdfa9ba5">body_back</a>()))</div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = dyn_cast<Expr>(Label->getSubStmt()))</div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>           <span class="keywordflow">return</span> E->isUnusedResultAWarning(WarnE, Loc, R1, R2, Ctx);</div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>     }</div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span> </div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isVoidType())</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>     WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>     Loc = cast<StmtExpr>(<span class="keyword">this</span>)->getLParenLoc();</div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>     R1 = <a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>   }</div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>   <span class="keywordflow">case</span> CXXFunctionalCastExprClass:</div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>   <span class="keywordflow">case</span> CStyleCastExprClass: {</div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>     <span class="comment">// Ignore an explicit cast to void unless the operand is a non-trivial</span></div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>     <span class="comment">// volatile lvalue.</span></div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *CE = cast<CastExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>     <span class="keywordflow">if</span> (CE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cac5d34b62fbc611f2f762ff5c72845fa5">CK_ToVoid</a>) {</div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>       <span class="keywordflow">if</span> (CE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>() &&</div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>           CE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>().<a class="code" href="classclang_1_1QualType.html#ace32f56eadc42b2bcf235fccd5a571af" title="Determine whether this type is volatile-qualified.">isVolatileQualified</a>()) {</div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *DRE =</div>
+<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>             dyn_cast<<a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>>(CE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>());</div>
+<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>         <span class="keywordflow">if</span> (!(DRE && isa<VarDecl>(DRE-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>()) &&</div>
+<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>               cast<VarDecl>(DRE-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>())->hasLocalStorage())) {</div>
+<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>           <span class="keywordflow">return</span> CE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc,</div>
+<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>                                                           R1, R2, Ctx);</div>
+<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>         }</div>
+<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>       }</div>
+<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>     }</div>
+<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span> </div>
+<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>     <span class="comment">// If this is a cast to a constructor conversion, check the operand.</span></div>
+<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>     <span class="comment">// Otherwise, the result of the cast is unused.</span></div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>     <span class="keywordflow">if</span> (CE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad2d52a3df80ffd6ed33b81af15c872b0">CK_ConstructorConversion</a>)</div>
+<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>       <span class="keywordflow">return</span> CE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx);</div>
+<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span> </div>
+<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>     WarnE = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXFunctionalCastExpr.html" title="Represents an explicit C++ type conversion that uses "functional" notation (C++ [expr.type.conv]).">CXXFunctionalCastExpr</a> *CXXCE =</div>
+<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>             dyn_cast<CXXFunctionalCastExpr>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>       Loc = CXXCE->getLocStart();</div>
+<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>       R1 = CXXCE->getSubExpr()->getSourceRange();</div>
+<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a> *CStyleCE = cast<CStyleCastExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>       Loc = CStyleCE-><a class="code" href="classclang_1_1CStyleCastExpr.html#aa76922de631c94abd3edfeaa16adbaca">getLParenLoc</a>();</div>
+<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>       R1 = CStyleCE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>();</div>
+<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>     }</div>
+<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>   }</div>
+<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>   <span class="keywordflow">case</span> ImplicitCastExprClass: {</div>
+<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *ICE = cast<ImplicitCastExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span> </div>
+<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>     <span class="comment">// lvalue-to-rvalue conversion on a volatile lvalue is a side-effect.</span></div>
+<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>     <span class="keywordflow">if</span> (ICE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a> &&</div>
+<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>         ICE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>().<a class="code" href="classclang_1_1QualType.html#ace32f56eadc42b2bcf235fccd5a571af" title="Determine whether this type is volatile-qualified.">isVolatileQualified</a>())</div>
+<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span> </div>
+<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>     <span class="keywordflow">return</span> ICE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx);</div>
+<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>   }</div>
+<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>   <span class="keywordflow">case</span> CXXDefaultArgExprClass:</div>
+<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>     <span class="keywordflow">return</span> (cast<CXXDefaultArgExpr>(<span class="keyword">this</span>)</div>
+<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>             ->getExpr()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx));</div>
+<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>   <span class="keywordflow">case</span> CXXDefaultInitExprClass:</div>
+<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>     <span class="keywordflow">return</span> (cast<CXXDefaultInitExpr>(<span class="keyword">this</span>)</div>
+<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>             ->getExpr()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx));</div>
+<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span> </div>
+<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>   <span class="keywordflow">case</span> CXXNewExprClass:</div>
+<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>     <span class="comment">// FIXME: In theory, there might be new expressions that don't have side</span></div>
+<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>     <span class="comment">// effects (e.g. a placement new with an uninitialized POD).</span></div>
+<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>   <span class="keywordflow">case</span> CXXDeleteExprClass:</div>
+<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>   <span class="keywordflow">case</span> CXXBindTemporaryExprClass:</div>
+<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>     <span class="keywordflow">return</span> (cast<CXXBindTemporaryExpr>(<span class="keyword">this</span>)</div>
+<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>             ->getSubExpr()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx));</div>
+<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>   <span class="keywordflow">case</span> ExprWithCleanupsClass:</div>
+<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>     <span class="keywordflow">return</span> (cast<ExprWithCleanups>(<span class="keyword">this</span>)</div>
+<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>             ->getSubExpr()-><a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(WarnE, Loc, R1, R2, Ctx));</div>
+<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>   }</div>
+<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span> }</div>
+<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span> <span class="comment"></span></div>
+<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span> <span class="comment">/// isOBJCGCCandidate - Check if an expression is objc gc'able.</span></div>
+<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span> <span class="comment">/// returns true, if it is; false otherwise.</span></div>
+<div class="line"><a name="l02274"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a35da34a8ae0eff1a6f73b38d7a68a26b"> 2274</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a35da34a8ae0eff1a6f73b38d7a68a26b">Expr::isOBJCGCCandidate</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> &Ctx)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>   <span class="keywordflow">switch</span> (E-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>()) {</div>
+<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>   <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>   <span class="keywordflow">case</span> ObjCIvarRefExprClass:</div>
+<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>   <span class="keywordflow">case</span> Expr::UnaryOperatorClass:</div>
+<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>     <span class="keywordflow">return</span> cast<UnaryOperator>(E)->getSubExpr()->isOBJCGCCandidate(Ctx);</div>
+<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>   <span class="keywordflow">case</span> ImplicitCastExprClass:</div>
+<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>     <span class="keywordflow">return</span> cast<ImplicitCastExpr>(E)->getSubExpr()->isOBJCGCCandidate(Ctx);</div>
+<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>   <span class="keywordflow">case</span> MaterializeTemporaryExprClass:</div>
+<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>     <span class="keywordflow">return</span> cast<MaterializeTemporaryExpr>(E)->GetTemporaryExpr()</div>
+<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>                                                       ->isOBJCGCCandidate(Ctx);</div>
+<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>   <span class="keywordflow">case</span> CStyleCastExprClass:</div>
+<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>     <span class="keywordflow">return</span> cast<CStyleCastExpr>(E)->getSubExpr()->isOBJCGCCandidate(Ctx);</div>
+<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>   <span class="keywordflow">case</span> DeclRefExprClass: {</div>
+<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D = cast<DeclRefExpr>(E)->getDecl();</div>
+<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>         </div>
+<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD = dyn_cast<VarDecl>(D)) {</div>
+<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>       <span class="keywordflow">if</span> (VD->hasGlobalStorage())</div>
+<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> T = VD->getType();</div>
+<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>       <span class="comment">// dereferencing to a  pointer is always a gc'able candidate,</span></div>
+<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>       <span class="comment">// unless it is __weak.</span></div>
+<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>       <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Type.html#a1c0038a55083ee0a292a020038ee04d8">isPointerType</a>() &&</div>
+<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>              (Ctx.<a class="code" href="classclang_1_1ASTContext.html#a96173c1ad2f23e1d8e10b91336d8b2c6" title="Return one of the GCNone, Weak or Strong Objective-C garbage collection attributes.">getObjCGCAttrKind</a>(T) != <a class="code" href="classclang_1_1Qualifiers.html#ac385e8f4b76a81b9668d05335e62308ead5594339da5918c05fdb973cec934f22">Qualifiers::Weak</a>);</div>
+<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>     }</div>
+<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>   }</div>
+<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>   <span class="keywordflow">case</span> MemberExprClass: {</div>
+<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *M = cast<MemberExpr>(E);</div>
+<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>     <span class="keywordflow">return</span> M-><a class="code" href="classclang_1_1MemberExpr.html#ade0c09aefce7fca4cfd671cd96a87083">getBase</a>()-><a class="code" href="classclang_1_1Expr.html#a35da34a8ae0eff1a6f73b38d7a68a26b">isOBJCGCCandidate</a>(Ctx);</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>   <span class="keywordflow">case</span> ArraySubscriptExprClass:</div>
+<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>     <span class="keywordflow">return</span> cast<ArraySubscriptExpr>(E)->getBase()->isOBJCGCCandidate(Ctx);</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> }</div>
+<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span> </div>
+<div class="line"><a name="l02313"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a49884252f356fff776e2ac8ff789f7eb"> 2313</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a49884252f356fff776e2ac8ff789f7eb" title="Returns true if this expression is a bound member function.">Expr::isBoundMemberFunction</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> &Ctx)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>())</div>
+<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#af6cc8465213e82b8f9c3de2521154f54" title="Reasons why an expression might not be an l-value.">ClassifyLValue</a>(Ctx) == <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa64559fb413b0654df8be34ebe9f50b19">Expr::LV_MemberFunction</a>;</div>
+<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span> }</div>
+<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span> </div>
+<div class="line"><a name="l02319"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a264da990f2d0d3fc324029187b6cb87d"> 2319</a></span> <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1Expr.html#a264da990f2d0d3fc324029187b6cb87d" title="Given an expression of bound-member type, find the type of the member. Returns null if this is an ove...">Expr::findBoundMemberType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *expr) {</div>
+<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>   assert(expr-><a class="code" href="classclang_1_1Expr.html#aa6b472c5ff8128dd7b78df4f598fa20b" title="Returns whether this expression has a placeholder type.">hasPlaceholderType</a>(BuiltinType::BoundMember));</div>
+<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span> </div>
+<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>   <span class="comment">// Bound member expressions are always one of these possibilities:</span></div>
+<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>   <span class="comment">//   x->m      x.m      x->*y      x.*y</span></div>
+<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>   <span class="comment">// (possibly parenthesized)</span></div>
+<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span> </div>
+<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>   expr = expr-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *mem = dyn_cast<MemberExpr>(expr)) {</div>
+<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>     assert(isa<CXXMethodDecl>(mem->getMemberDecl()));</div>
+<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>     <span class="keywordflow">return</span> mem->getMemberDecl()->getType();</div>
+<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>   }</div>
+<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span> </div>
+<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *op = dyn_cast<BinaryOperator>(expr)) {</div>
+<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> type = op->getRHS()->getType()-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a>>()</div>
+<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>                       ->getPointeeType();</div>
+<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>     assert(type-><a class="code" href="classclang_1_1Type.html#af0ae1f40cbbc07fabfefc86af91072e3">isFunctionType</a>());</div>
+<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>     <span class="keywordflow">return</span> <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="l02337"></a><span class="lineno"> 2337</span>   }</div>
+<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span> </div>
+<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>   assert(isa<UnresolvedMemberExpr>(expr));</div>
+<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1QualType.html">QualType</a>();</div>
+<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span> }</div>
+<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span> </div>
+<div class="line"><a name="l02343"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8"> 2343</a></span> <a class="code" href="classclang_1_1Expr.html">Expr</a>* <a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">Expr::IgnoreParens</a>() {</div>
+<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a>* E = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ParenExpr.html">ParenExpr</a>* <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = dyn_cast<ParenExpr>(E)) {</div>
+<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>       E = <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->getSubExpr();</div>
+<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>     }</div>
+<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a>* <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = dyn_cast<UnaryOperator>(E)) {</div>
+<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>       <span class="keywordflow">if</span> (<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->getOpcode() == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffadc9189ae28cc27f4b3170faeb8ea61b5">UO_Extension</a>) {</div>
+<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>         E = <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->getSubExpr();</div>
+<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>       }</div>
+<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>     }</div>
+<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1GenericSelectionExpr.html" title="Represents a C11 generic selection.">GenericSelectionExpr</a>* <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = dyn_cast<GenericSelectionExpr>(E)) {</div>
+<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>       <span class="keywordflow">if</span> (!<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->isResultDependent()) {</div>
+<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>         E = <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->getResultExpr();</div>
+<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>       }</div>
+<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>     }</div>
+<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ChooseExpr.html">ChooseExpr</a>* <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = dyn_cast<ChooseExpr>(E)) {</div>
+<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>       <span class="keywordflow">if</span> (!<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->isConditionDependent()) {</div>
+<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>         E = <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->getChosenSubExpr();</div>
+<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>       }</div>
+<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>     }</div>
+<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>     <span class="keywordflow">return</span> E;</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> }</div>
+<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span> <span class="comment"></span></div>
+<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span> <span class="comment">/// IgnoreParenCasts - Ignore parentheses and casts.  Strip off any ParenExpr</span></div>
+<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span> <span class="comment">/// or CastExprs or ImplicitCastExprs, returning their operand.</span></div>
+<div class="line"><a name="l02374"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a397a707d10e0d3ac4a150325eafa4368"> 2374</a></span> <span class="comment"></span><a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a397a707d10e0d3ac4a150325eafa4368">Expr::IgnoreParenCasts</a>() {</div>
+<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>     E = E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = dyn_cast<CastExpr>(E)) {</div>
+<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>       E = <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->getSubExpr();</div>
+<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>     }</div>
+<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *Materialize </div>
+<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>                                       = dyn_cast<MaterializeTemporaryExpr>(E)) {</div>
+<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>       E = Materialize->GetTemporaryExpr();</div>
+<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>     }</div>
+<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SubstNonTypeTemplateParmExpr.html" title="Represents a reference to a non-type template parameter that has been substituted with a template arg...">SubstNonTypeTemplateParmExpr</a> *NTTP</div>
+<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>                                   = dyn_cast<SubstNonTypeTemplateParmExpr>(E)) {</div>
+<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>       E = NTTP->getReplacement();</div>
+<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>     }      </div>
+<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>     <span class="keywordflow">return</span> E;</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="comment"></span></div>
+<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span> <span class="comment">/// IgnoreParenLValueCasts - Ignore parentheses and lvalue-to-rvalue</span></div>
+<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span> <span class="comment">/// casts.  This is intended purely as a temporary workaround for code</span></div>
+<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span> <span class="comment">/// that hasn't yet been rewritten to do the right thing about those</span></div>
+<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span> <span class="comment">/// casts, and may disappear along with the last internal use.</span></div>
+<div class="line"><a name="l02400"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a4a45449c2f4c4fba9abfb8ecd9fe2cfc"> 2400</a></span> <span class="comment"></span><a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a4a45449c2f4c4fba9abfb8ecd9fe2cfc">Expr::IgnoreParenLValueCasts</a>() {</div>
+<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>     E = E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = dyn_cast<CastExpr>(E)) {</div>
+<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>       <span class="keywordflow">if</span> (<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a>) {</div>
+<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>         E = <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->getSubExpr();</div>
+<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>       }</div>
+<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *Materialize </div>
+<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>                                       = dyn_cast<MaterializeTemporaryExpr>(E)) {</div>
+<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>       E = Materialize->GetTemporaryExpr();</div>
+<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SubstNonTypeTemplateParmExpr.html" title="Represents a reference to a non-type template parameter that has been substituted with a template arg...">SubstNonTypeTemplateParmExpr</a> *NTTP</div>
+<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>                                   = dyn_cast<SubstNonTypeTemplateParmExpr>(E)) {</div>
+<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>       E = NTTP->getReplacement();</div>
+<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>     }</div>
+<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>   }</div>
+<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>   <span class="keywordflow">return</span> E;</div>
+<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span> }</div>
+<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span> </div>
+<div class="line"><a name="l02423"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#af64aa21b7ace12995b752999e500a1da"> 2423</a></span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#af64aa21b7ace12995b752999e500a1da" title="Ignore parentheses and derived-to-base casts.">Expr::ignoreParenBaseCasts</a>() {</div>
+<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>     E = E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *CE = dyn_cast<CastExpr>(E)) {</div>
+<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>       <span class="keywordflow">if</span> (CE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca73a268da1a2e05cdf1ace06c46412caa">CK_DerivedToBase</a> ||</div>
+<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>           CE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caafe5fe4f044e3c17524af98993c8b058">CK_UncheckedDerivedToBase</a> ||</div>
+<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>           CE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>) {</div>
+<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>         E = CE->getSubExpr();</div>
+<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>         <span class="keywordflow">continue</span>;</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> </div>
+<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>     <span class="keywordflow">return</span> E;</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"><a class="code" href="classclang_1_1Expr.html#a54036c75e73ecdf081729210fa53e582"> 2440</a></span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a54036c75e73ecdf081729210fa53e582">Expr::IgnoreParenImpCasts</a>() {</div>
+<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>     E = E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = dyn_cast<ImplicitCastExpr>(E)) {</div>
+<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>       E = <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->getSubExpr();</div>
+<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>     }</div>
+<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *Materialize </div>
+<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>                                       = dyn_cast<MaterializeTemporaryExpr>(E)) {</div>
+<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>       E = Materialize->GetTemporaryExpr();</div>
+<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>     }</div>
+<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SubstNonTypeTemplateParmExpr.html" title="Represents a reference to a non-type template parameter that has been substituted with a template arg...">SubstNonTypeTemplateParmExpr</a> *NTTP</div>
+<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>                                   = dyn_cast<SubstNonTypeTemplateParmExpr>(E)) {</div>
+<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>       E = NTTP->getReplacement();</div>
+<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>     }</div>
+<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>     <span class="keywordflow">return</span> E;</div>
+<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>   }</div>
+<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span> }</div>
+<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span> </div>
+<div class="line"><a name="l02462"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a94b56550f658f522dbf1798bc2eddc45"> 2462</a></span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a94b56550f658f522dbf1798bc2eddc45">Expr::IgnoreConversionOperator</a>() {</div>
+<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXMemberCallExpr.html">CXXMemberCallExpr</a> *MCE = dyn_cast<CXXMemberCallExpr>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>     <span class="keywordflow">if</span> (MCE->getMethodDecl() && isa<CXXConversionDecl>(MCE->getMethodDecl()))</div>
+<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>       <span class="keywordflow">return</span> MCE->getImplicitObjectArgument();</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">return</span> <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span> }</div>
+<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span> <span class="comment"></span></div>
+<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span> <span class="comment">/// IgnoreParenNoopCasts - Ignore parentheses and casts that do not change the</span></div>
+<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span> <span class="comment">/// value (including ptr->int casts of the same size).  Strip off any</span></div>
+<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span> <span class="comment">/// ParenExpr or CastExprs, returning their operand.</span></div>
+<div class="line"><a name="l02473"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a3ba2c34d95094c419c79ef3aa7be05e8"> 2473</a></span> <span class="comment"></span><a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a3ba2c34d95094c419c79ef3aa7be05e8">Expr::IgnoreParenNoopCasts</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> &Ctx) {</div>
+<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>     E = E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span> </div>
+<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = dyn_cast<CastExpr>(E)) {</div>
+<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>       <span class="comment">// We ignore integer <-> casts that are of the same width, ptr<->ptr and</span></div>
+<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>       <span class="comment">// ptr<->int casts of the same width.  We also ignore all identity casts.</span></div>
+<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>       <a class="code" href="classclang_1_1Expr.html">Expr</a> *SE = <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>->getSubExpr();</div>
+<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span> </div>
+<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>       <span class="keywordflow">if</span> (Ctx.<a class="code" href="classclang_1_1ASTContext.html#a40efa7d4fe133c0a709f0df4b6fcc2bf" title="Determine whether the given types are equivalent after cvr-qualifiers have been removed.">hasSameUnqualifiedType</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), SE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>())) {</div>
+<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>         E = SE;</div>
+<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>       }</div>
+<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span> </div>
+<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>       <span class="keywordflow">if</span> ((E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a1c0038a55083ee0a292a020038ee04d8">isPointerType</a>() ||</div>
+<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>            E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a23a2dd0662d4548e91a663de869ead8d" title="Determine whether this type is an integral type.">isIntegralType</a>(Ctx)) &&</div>
+<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>           (SE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a1c0038a55083ee0a292a020038ee04d8">isPointerType</a>() ||</div>
+<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>            SE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a23a2dd0662d4548e91a663de869ead8d" title="Determine whether this type is an integral type.">isIntegralType</a>(Ctx)) &&</div>
+<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>           Ctx.<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()) == Ctx.<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(SE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>())) {</div>
+<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>         E = SE;</div>
+<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>         <span class="keywordflow">continue</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"> 2496</span>     }</div>
+<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span> </div>
+<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SubstNonTypeTemplateParmExpr.html" title="Represents a reference to a non-type template parameter that has been substituted with a template arg...">SubstNonTypeTemplateParmExpr</a> *NTTP</div>
+<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>                                   = dyn_cast<SubstNonTypeTemplateParmExpr>(E)) {</div>
+<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>       E = NTTP->getReplacement();</div>
+<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>       <span class="keywordflow">continue</span>;</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">return</span> E;</div>
+<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>   }</div>
+<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span> }</div>
+<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span> </div>
+<div class="line"><a name="l02508"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a49201023b2da44bcaf57ac2fcef1ac15"> 2508</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a49201023b2da44bcaf57ac2fcef1ac15" title="Determine whether this expression is a default function argument.">Expr::isDefaultArgument</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *M = dyn_cast<MaterializeTemporaryExpr>(E))</div>
+<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>     E = M->GetTemporaryExpr();</div>
+<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span> </div>
+<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>   <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *ICE = dyn_cast<ImplicitCastExpr>(E))</div>
+<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>     E = ICE->getSubExprAsWritten();</div>
+<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>   </div>
+<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>   <span class="keywordflow">return</span> isa<CXXDefaultArgExpr>(E);</div>
+<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span> }</div>
+<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span> <span class="comment"></span></div>
+<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span> <span class="comment">/// \brief Skip over any no-op casts and any temporary-binding</span></div>
+<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span> <span class="comment">/// expressions.</span></div>
+<div class="line"><a name="l02521"></a><span class="lineno"><a class="code" href="Expr_8cpp.html#ae0f7f31605c186a394ea743eab738daf"> 2521</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="Expr_8cpp.html#ae0f7f31605c186a394ea743eab738daf" title="Skip over any no-op casts and any temporary-binding expressions.">skipTemporaryBindingsNoOpCastsAndParens</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E) {</div>
+<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *M = dyn_cast<MaterializeTemporaryExpr>(E))</div>
+<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>     E = M->GetTemporaryExpr();</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>   <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *ICE = dyn_cast<ImplicitCastExpr>(E)) {</div>
+<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>     <span class="keywordflow">if</span> (ICE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>)</div>
+<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>       E = ICE->getSubExpr();</div>
+<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>   }</div>
+<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span> </div>
+<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>   <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXBindTemporaryExpr.html" title="Represents binding an expression to a temporary.">CXXBindTemporaryExpr</a> *BE = dyn_cast<CXXBindTemporaryExpr>(E))</div>
+<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>     E = BE->getSubExpr();</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">while</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *ICE = dyn_cast<ImplicitCastExpr>(E)) {</div>
+<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>     <span class="keywordflow">if</span> (ICE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>)</div>
+<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>       E = ICE->getSubExpr();</div>
+<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>   }</div>
+<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span> </div>
+<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>   <span class="keywordflow">return</span> E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span> }</div>
+<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span> <span class="comment"></span></div>
+<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span> <span class="comment">/// isTemporaryObject - Determines if this expression produces a</span></div>
+<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span> <span class="comment">/// temporary of the given class type.</span></div>
+<div class="line"><a name="l02547"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a5f329c4e416440b980064951f6980cfa"> 2547</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a5f329c4e416440b980064951f6980cfa" title="Determine whether the result of this expression is a temporary object of the given class type...">Expr::isTemporaryObject</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *TempTy)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>   <span class="keywordflow">if</span> (!C.<a class="code" href="classclang_1_1ASTContext.html#a40efa7d4fe133c0a709f0df4b6fcc2bf" title="Determine whether the given types are equivalent after cvr-qualifiers have been removed.">hasSameUnqualifiedType</a>(<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), C.<a class="code" href="classclang_1_1ASTContext.html#a028b11acbffc8c91facbab289df57771" title="Return the unique reference to the type for the specified type declaration.">getTypeDeclType</a>(TempTy)))</div>
+<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span> </div>
+<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <a class="code" href="Expr_8cpp.html#ae0f7f31605c186a394ea743eab738daf" title="Skip over any no-op casts and any temporary-binding expressions.">skipTemporaryBindingsNoOpCastsAndParens</a>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span> </div>
+<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>   <span class="comment">// Temporaries are by definition pr-values of class type.</span></div>
+<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>   <span class="keywordflow">if</span> (!E-><a class="code" href="classclang_1_1Expr.html#a69226c1509feed27879120d7da683eff" title="Classify - Classify this expression according to the C++11 expression taxonomy.">Classify</a>(C).<a class="code" href="classclang_1_1Expr_1_1Classification.html#a0f89d86e6ff79e82a097c610202dcff6">isPRValue</a>()) {</div>
+<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>     <span class="comment">// In this context, property reference is a message call and is pr-value.</span></div>
+<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>     <span class="keywordflow">if</span> (!isa<ObjCPropertyRefExpr>(E))</div>
+<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>   }</div>
+<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span> </div>
+<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>   <span class="comment">// Black-list a few cases which yield pr-values of class type that don't</span></div>
+<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>   <span class="comment">// refer to temporaries of that type:</span></div>
+<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span> </div>
+<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>   <span class="comment">// - implicit derived-to-base conversions</span></div>
+<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>   <span class="keywordflow">if</span> (isa<ImplicitCastExpr>(E)) {</div>
+<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>     <span class="keywordflow">switch</span> (cast<ImplicitCastExpr>(E)->getCastKind()) {</div>
+<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca73a268da1a2e05cdf1ace06c46412caa">CK_DerivedToBase</a>:</div>
+<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caafe5fe4f044e3c17524af98993c8b058">CK_UncheckedDerivedToBase</a>:</div>
+<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>     }</div>
+<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>   }</div>
+<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span> </div>
+<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>   <span class="comment">// - member expressions (all)</span></div>
+<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>   <span class="keywordflow">if</span> (isa<MemberExpr>(E))</div>
+<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span> </div>
+<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *BO = dyn_cast<BinaryOperator>(E))</div>
+<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>     <span class="keywordflow">if</span> (BO->isPtrMemOp())</div>
+<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>       <span class="keywordflow">return</span> <span class="keyword">false</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="comment">// - opaque values (all)</span></div>
+<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>   <span class="keywordflow">if</span> (isa<OpaqueValueExpr>(E))</div>
+<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span> </div>
+<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span> }</div>
+<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span> </div>
+<div class="line"><a name="l02589"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a708f4067778bd15a94cbca96d179989c"> 2589</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a708f4067778bd15a94cbca96d179989c" title="Whether this expression is an implicit reference to 'this' in C++.">Expr::isImplicitCXXThis</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>   </div>
+<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>   <span class="comment">// Strip away parentheses and casts we don't care about.</span></div>
+<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ParenExpr.html">ParenExpr</a> *<a class="code" href="PPMacroExpansion_8cpp.html#a6a0f90793bb0a61bf701ad3cccc529cca05a296c2c11a24f2a5a52620d2dae620">Paren</a> = dyn_cast<ParenExpr>(E)) {</div>
+<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>       E = <a class="code" href="PPMacroExpansion_8cpp.html#a6a0f90793bb0a61bf701ad3cccc529cca05a296c2c11a24f2a5a52620d2dae620">Paren</a>->getSubExpr();</div>
+<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>     }</div>
+<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>     </div>
+<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *ICE = dyn_cast<ImplicitCastExpr>(E)) {</div>
+<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>       <span class="keywordflow">if</span> (ICE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a> ||</div>
+<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>           ICE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a> ||</div>
+<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>           ICE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca73a268da1a2e05cdf1ace06c46412caa">CK_DerivedToBase</a> || </div>
+<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>           ICE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caafe5fe4f044e3c17524af98993c8b058">CK_UncheckedDerivedToBase</a>) {</div>
+<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>         E = ICE->getSubExpr();</div>
+<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>       }</div>
+<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>     }</div>
+<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>     </div>
+<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a>* UnOp = dyn_cast<UnaryOperator>(E)) {</div>
+<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>       <span class="keywordflow">if</span> (UnOp->getOpcode() == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffadc9189ae28cc27f4b3170faeb8ea61b5">UO_Extension</a>) {</div>
+<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>         E = UnOp->getSubExpr();</div>
+<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>         <span class="keywordflow">continue</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>     </div>
+<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *M</div>
+<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>                                       = dyn_cast<MaterializeTemporaryExpr>(E)) {</div>
+<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>       E = M->GetTemporaryExpr();</div>
+<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02620"></a><span class="lineno"> 2620</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">break</span>;</div>
+<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>   }</div>
+<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>   </div>
+<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXThisExpr.html" title="Represents the this expression in C++.">CXXThisExpr</a> *This = dyn_cast<CXXThisExpr>(E))</div>
+<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>     <span class="keywordflow">return</span> This->isImplicit();</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>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span> }</div>
+<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span> <span class="comment"></span></div>
+<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span> <span class="comment">/// hasAnyTypeDependentArguments - Determines if any of the expressions</span></div>
+<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span> <span class="comment">/// in Exprs is type-dependent.</span></div>
+<div class="line"><a name="l02633"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a7e4cf6838c1cf4095a67f643d56c4426"> 2633</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a7e4cf6838c1cf4095a67f643d56c4426">Expr::hasAnyTypeDependentArguments</a>(<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *></a> Exprs) {</div>
+<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0; I < Exprs.size(); ++I)</div>
+<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>     <span class="keywordflow">if</span> (Exprs[I]-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>())</div>
+<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span> </div>
+<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span> }</div>
+<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span> </div>
+<div class="line"><a name="l02641"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a33582799772f481c8263306463a8ee1b"> 2641</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a33582799772f481c8263306463a8ee1b">Expr::isConstantInitializer</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> &Ctx, <span class="keywordtype">bool</span> IsForRef)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>   <span class="comment">// This function is attempting whether an expression is an initializer</span></div>
+<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>   <span class="comment">// which can be evaluated at compile-time. It very closely parallels</span></div>
+<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>   <span class="comment">// ConstExprEmitter in CGExprConstant.cpp; if they don't match, it</span></div>
+<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>   <span class="comment">// will lead to unexpected results.  Like ConstExprEmitter, it falls back</span></div>
+<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>   <span class="comment">// to isEvaluatable most of the time.</span></div>
+<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>   <span class="comment">// If we ever capture reference-binding directly in the AST, we can</span></div>
+<div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>   <span class="comment">// kill the second parameter.</span></div>
+<div class="line"><a name="l02650"></a><span class="lineno"> 2650</span> </div>
+<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>   <span class="keywordflow">if</span> (IsForRef) {</div>
+<div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>     <a class="code" href="structclang_1_1Expr_1_1EvalResult.html" title="EvalResult is a struct with detailed info about an evaluated expression.">EvalResult</a> Result;</div>
+<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a4fdd26501fbedc9e20e85d48240eb6e0">EvaluateAsLValue</a>(Result, Ctx) && !Result.<a class="code" href="structclang_1_1Expr_1_1EvalStatus.html#ad41b4d6edcf0f4601a63c28779356f3b">HasSideEffects</a>;</div>
+<div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>   }</div>
+<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span> </div>
+<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>()) {</div>
+<div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>   <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>   <span class="keywordflow">case</span> StringLiteralClass:</div>
+<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>   <span class="keywordflow">case</span> ObjCEncodeExprClass:</div>
+<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>   <span class="keywordflow">case</span> CXXTemporaryObjectExprClass:</div>
+<div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>   <span class="keywordflow">case</span> CXXConstructExprClass: {</div>
+<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *CE = cast<CXXConstructExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span> </div>
+<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>     <span class="keywordflow">if</span> (CE-><a class="code" href="classclang_1_1CXXConstructExpr.html#acc1f0a9fee67eb3f6b8592495ff56548">getConstructor</a>()-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>() &&</div>
+<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>         CE-><a class="code" href="classclang_1_1CXXConstructExpr.html#acc1f0a9fee67eb3f6b8592495ff56548">getConstructor</a>()-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>()) {</div>
+<div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>       <span class="comment">// Trivial default constructor</span></div>
+<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>       <span class="keywordflow">if</span> (!CE-><a class="code" href="classclang_1_1CXXConstructExpr.html#aedb07a3612a2df18b4adf0f93bf05c80">getNumArgs</a>()) <span class="keywordflow">return</span> <span class="keyword">true</span>;</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>       <span class="comment">// Trivial copy constructor</span></div>
+<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>       assert(CE-><a class="code" href="classclang_1_1CXXConstructExpr.html#aedb07a3612a2df18b4adf0f93bf05c80">getNumArgs</a>() == 1 && <span class="stringliteral">"trivial ctor with > 1 argument"</span>);</div>
+<div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>       <span class="keywordflow">return</span> CE-><a class="code" href="classclang_1_1CXXConstructExpr.html#a9f460dadf776a2efd0177aafc06f6b50" title="Return the specified argument.">getArg</a>(0)-><a class="code" href="classclang_1_1Expr.html#a33582799772f481c8263306463a8ee1b">isConstantInitializer</a>(Ctx, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>     }</div>
+<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span> </div>
+<div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>   }</div>
+<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>   <span class="keywordflow">case</span> CompoundLiteralExprClass: {</div>
+<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>     <span class="comment">// This handles gcc's extension that allows global initializers like</span></div>
+<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>     <span class="comment">// "struct x {int x;} x = (struct x) {};".</span></div>
+<div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>     <span class="comment">// FIXME: This accepts other cases it shouldn't!</span></div>
+<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Exp = cast<CompoundLiteralExpr>(<span class="keyword">this</span>)->getInitializer();</div>
+<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>     <span class="keywordflow">return</span> Exp-><a class="code" href="classclang_1_1Expr.html#a33582799772f481c8263306463a8ee1b">isConstantInitializer</a>(Ctx, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>   }</div>
+<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>   <span class="keywordflow">case</span> InitListExprClass: {</div>
+<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ILE = cast<InitListExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>     <span class="keywordflow">if</span> (ILE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>()) {</div>
+<div class="line"><a name="l02687"></a><span class="lineno"> 2687</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="l02688"></a><span class="lineno"> 2688</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < numInits; i++) {</div>
+<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>         <span class="keywordflow">if</span> (!ILE-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(i)-><a class="code" href="classclang_1_1Expr.html#a33582799772f481c8263306463a8ee1b">isConstantInitializer</a>(Ctx, <span class="keyword">false</span>))</div>
+<div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>           <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>       }</div>
+<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>     }</div>
+<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span> </div>
+<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>     <span class="keywordflow">if</span> (ILE-><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="l02696"></a><span class="lineno"> 2696</span>       <span class="keywordtype">unsigned</span> ElementNo = 0;</div>
+<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>       <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = 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>>()->getDecl();</div>
+<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> Field = RD-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>            FieldEnd = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>(); Field != FieldEnd; ++Field) {</div>
+<div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>         <span class="comment">// If this is a union, skip all the fields that aren't being initialized.</span></div>
+<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>         <span class="keywordflow">if</span> (RD-><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>() != *Field)</div>
+<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>           <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02703"></a><span class="lineno"> 2703</span> </div>
+<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>         <span class="comment">// Don't emit anonymous bitfields, they just affect layout.</span></div>
+<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>         <span class="keywordflow">if</span> (Field->isUnnamedBitfield())</div>
+<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>           <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span> </div>
+<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>         <span class="keywordflow">if</span> (ElementNo < ILE->getNumInits()) {</div>
+<div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>           <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Elt = ILE-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(ElementNo++);</div>
+<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>           <span class="keywordflow">if</span> (Field->isBitField()) {</div>
+<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>             <span class="comment">// Bitfields have to evaluate to an integer.</span></div>
+<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>             llvm::APSInt ResultTmp;</div>
+<div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>             <span class="keywordflow">if</span> (!Elt-><a class="code" href="classclang_1_1Expr.html#aea5aa4f172677bf59f1a149ee1513c9c">EvaluateAsInt</a>(ResultTmp, Ctx))</div>
+<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>               <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>           } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>             <span class="keywordtype">bool</span> RefType = Field-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>();</div>
+<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>             <span class="keywordflow">if</span> (!Elt-><a class="code" href="classclang_1_1Expr.html#a33582799772f481c8263306463a8ee1b">isConstantInitializer</a>(Ctx, RefType))</div>
+<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>               <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>           }</div>
+<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>         }</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>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>     }</div>
+<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span> </div>
+<div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>   }</div>
+<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>   <span class="keywordflow">case</span> ImplicitValueInitExprClass:</div>
+<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>   <span class="keywordflow">case</span> ParenExprClass:</div>
+<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>     <span class="keywordflow">return</span> cast<ParenExpr>(<span class="keyword">this</span>)->getSubExpr()</div>
+<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>       ->isConstantInitializer(Ctx, IsForRef);</div>
+<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>   <span class="keywordflow">case</span> GenericSelectionExprClass:</div>
+<div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>     <span class="keywordflow">return</span> cast<GenericSelectionExpr>(<span class="keyword">this</span>)->getResultExpr()</div>
+<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>       ->isConstantInitializer(Ctx, IsForRef);</div>
+<div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>   <span class="keywordflow">case</span> ChooseExprClass:</div>
+<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>     <span class="keywordflow">if</span> (cast<ChooseExpr>(<span class="keyword">this</span>)->isConditionDependent())</div>
+<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>     <span class="keywordflow">return</span> cast<ChooseExpr>(<span class="keyword">this</span>)->getChosenSubExpr()</div>
+<div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>       ->isConstantInitializer(Ctx, IsForRef);</div>
+<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>   <span class="keywordflow">case</span> UnaryOperatorClass: {</div>
+<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a>* Exp = cast<UnaryOperator>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>     <span class="keywordflow">if</span> (Exp-><a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b">getOpcode</a>() == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffadc9189ae28cc27f4b3170faeb8ea61b5">UO_Extension</a>)</div>
+<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>       <span class="keywordflow">return</span> Exp-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a33582799772f481c8263306463a8ee1b">isConstantInitializer</a>(Ctx, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>   }</div>
+<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>   <span class="keywordflow">case</span> CXXFunctionalCastExprClass:</div>
+<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>   <span class="keywordflow">case</span> CXXStaticCastExprClass:</div>
+<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>   <span class="keywordflow">case</span> ImplicitCastExprClass:</div>
+<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>   <span class="keywordflow">case</span> CStyleCastExprClass:</div>
+<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>   <span class="keywordflow">case</span> ObjCBridgedCastExprClass:</div>
+<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>   <span class="keywordflow">case</span> CXXDynamicCastExprClass:</div>
+<div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>   <span class="keywordflow">case</span> CXXReinterpretCastExprClass:</div>
+<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>   <span class="keywordflow">case</span> CXXConstCastExprClass: {</div>
+<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *CE = cast<CastExpr>(<span class="keyword">this</span>);</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>     <span class="comment">// Handle misc casts we want to ignore.</span></div>
+<div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>     <span class="keywordflow">if</span> (CE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a> ||</div>
+<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>         CE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a> ||</div>
+<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>         CE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca8ea0e009738649ecec9ae75302358e8a">CK_ToUnion</a> ||</div>
+<div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>         CE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad2d52a3df80ffd6ed33b81af15c872b0">CK_ConstructorConversion</a> ||</div>
+<div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>         CE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab2c34ae82486ed6cd94d5cea5ef51704" title="Converts from T to _Atomic(T).">CK_NonAtomicToAtomic</a> ||</div>
+<div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>         CE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafb2f9da9740fb15b339767da2bcedc8a" title="Converts from _Atomic(T) to T.">CK_AtomicToNonAtomic</a>)</div>
+<div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>       <span class="keywordflow">return</span> CE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a33582799772f481c8263306463a8ee1b">isConstantInitializer</a>(Ctx, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02764"></a><span class="lineno"> 2764</span> </div>
+<div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>   }</div>
+<div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>   <span class="keywordflow">case</span> MaterializeTemporaryExprClass:</div>
+<div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>     <span class="keywordflow">return</span> cast<MaterializeTemporaryExpr>(<span class="keyword">this</span>)->GetTemporaryExpr()</div>
+<div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>                                             ->isConstantInitializer(Ctx, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02770"></a><span class="lineno"> 2770</span> </div>
+<div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>   <span class="keywordflow">case</span> SubstNonTypeTemplateParmExprClass:</div>
+<div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>     <span class="keywordflow">return</span> cast<SubstNonTypeTemplateParmExpr>(<span class="keyword">this</span>)->getReplacement()</div>
+<div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>                                             ->isConstantInitializer(Ctx, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>   <span class="keywordflow">case</span> CXXDefaultArgExprClass:</div>
+<div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>     <span class="keywordflow">return</span> cast<CXXDefaultArgExpr>(<span class="keyword">this</span>)->getExpr()</div>
+<div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>                                             ->isConstantInitializer(Ctx, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>   <span class="keywordflow">case</span> CXXDefaultInitExprClass:</div>
+<div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>     <span class="keywordflow">return</span> cast<CXXDefaultInitExpr>(<span class="keyword">this</span>)->getExpr()</div>
+<div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>                                             ->isConstantInitializer(Ctx, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>   }</div>
+<div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a34ea5af15a7a831d0b9b872ee1faf7ed">isEvaluatable</a>(Ctx);</div>
+<div class="line"><a name="l02782"></a><span class="lineno"> 2782</span> }</div>
+<div class="line"><a name="l02783"></a><span class="lineno"> 2783</span> </div>
+<div class="line"><a name="l02784"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ae87e52ec0e14be11804122a03f8744ed"> 2784</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#ae87e52ec0e14be11804122a03f8744ed">Expr::HasSideEffects</a>(<span class="keyword">const</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> &Ctx)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>())</div>
+<div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02787"></a><span class="lineno"> 2787</span> </div>
+<div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>()) {</div>
+<div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cda3c52fd74f70067fe6e848861ba1bf396">NoStmtClass</a>:</div>
+<div class="line"><a name="l02790"></a><span class="lineno"> 2790</span> <span class="preprocessor">  #define ABSTRACT_STMT(Type)</span></div>
+<div class="line"><a name="l02791"></a><span class="lineno"> 2791</span> <span class="preprocessor"></span><span class="preprocessor">  #define STMT(Type, Base) case Type##Class:</span></div>
+<div class="line"><a name="l02792"></a><span class="lineno"> 2792</span> <span class="preprocessor"></span><span class="preprocessor">  #define EXPR(Type, Base)</span></div>
+<div class="line"><a name="l02793"></a><span class="lineno"> 2793</span> <span class="preprocessor"></span><span class="preprocessor">  #include "<a class="code" href="StmtNodes_8inc.html">clang/AST/StmtNodes.inc</a>"</span></div>
+<div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>     llvm_unreachable(<span class="stringliteral">"unexpected Expr kind"</span>);</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>   <span class="keywordflow">case</span> DependentScopeDeclRefExprClass:</div>
+<div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>   <span class="keywordflow">case</span> CXXUnresolvedConstructExprClass:</div>
+<div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>   <span class="keywordflow">case</span> CXXDependentScopeMemberExprClass:</div>
+<div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>   <span class="keywordflow">case</span> UnresolvedLookupExprClass:</div>
+<div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>   <span class="keywordflow">case</span> UnresolvedMemberExprClass:</div>
+<div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>   <span class="keywordflow">case</span> PackExpansionExprClass:</div>
+<div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>   <span class="keywordflow">case</span> SubstNonTypeTemplateParmPackExprClass:</div>
+<div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>   <span class="keywordflow">case</span> FunctionParmPackExprClass:</div>
+<div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>     llvm_unreachable(<span class="stringliteral">"shouldn't see dependent / unresolved nodes here"</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"> 2806</span>   <span class="keywordflow">case</span> DeclRefExprClass:</div>
+<div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>   <span class="keywordflow">case</span> ObjCIvarRefExprClass:</div>
+<div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>   <span class="keywordflow">case</span> PredefinedExprClass:</div>
+<div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>   <span class="keywordflow">case</span> IntegerLiteralClass:</div>
+<div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>   <span class="keywordflow">case</span> FloatingLiteralClass:</div>
+<div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>   <span class="keywordflow">case</span> ImaginaryLiteralClass:</div>
+<div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>   <span class="keywordflow">case</span> StringLiteralClass:</div>
+<div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>   <span class="keywordflow">case</span> CharacterLiteralClass:</div>
+<div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>   <span class="keywordflow">case</span> OffsetOfExprClass:</div>
+<div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>   <span class="keywordflow">case</span> ImplicitValueInitExprClass:</div>
+<div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>   <span class="keywordflow">case</span> UnaryExprOrTypeTraitExprClass:</div>
+<div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>   <span class="keywordflow">case</span> AddrLabelExprClass:</div>
+<div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>   <span class="keywordflow">case</span> GNUNullExprClass:</div>
+<div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>   <span class="keywordflow">case</span> CXXBoolLiteralExprClass:</div>
+<div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>   <span class="keywordflow">case</span> CXXNullPtrLiteralExprClass:</div>
+<div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>   <span class="keywordflow">case</span> CXXThisExprClass:</div>
+<div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>   <span class="keywordflow">case</span> CXXScalarValueInitExprClass:</div>
+<div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>   <span class="keywordflow">case</span> TypeTraitExprClass:</div>
+<div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>   <span class="keywordflow">case</span> UnaryTypeTraitExprClass:</div>
+<div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>   <span class="keywordflow">case</span> BinaryTypeTraitExprClass:</div>
+<div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>   <span class="keywordflow">case</span> ArrayTypeTraitExprClass:</div>
+<div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>   <span class="keywordflow">case</span> ExpressionTraitExprClass:</div>
+<div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>   <span class="keywordflow">case</span> CXXNoexceptExprClass:</div>
+<div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>   <span class="keywordflow">case</span> SizeOfPackExprClass:</div>
+<div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>   <span class="keywordflow">case</span> ObjCStringLiteralClass:</div>
+<div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>   <span class="keywordflow">case</span> ObjCEncodeExprClass:</div>
+<div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>   <span class="keywordflow">case</span> ObjCBoolLiteralExprClass:</div>
+<div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>   <span class="keywordflow">case</span> CXXUuidofExprClass:</div>
+<div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>   <span class="keywordflow">case</span> OpaqueValueExprClass:</div>
+<div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>     <span class="comment">// These never have a side-effect.</span></div>
+<div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02837"></a><span class="lineno"> 2837</span> </div>
+<div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>   <span class="keywordflow">case</span> CallExprClass:</div>
+<div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>   <span class="keywordflow">case</span> MSPropertyRefExprClass:</div>
+<div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>   <span class="keywordflow">case</span> CompoundAssignOperatorClass:</div>
+<div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>   <span class="keywordflow">case</span> VAArgExprClass:</div>
+<div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>   <span class="keywordflow">case</span> AtomicExprClass:</div>
+<div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>   <span class="keywordflow">case</span> StmtExprClass:</div>
+<div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>   <span class="keywordflow">case</span> CXXOperatorCallExprClass:</div>
+<div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>   <span class="keywordflow">case</span> CXXMemberCallExprClass:</div>
+<div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>   <span class="keywordflow">case</span> UserDefinedLiteralClass:</div>
+<div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>   <span class="keywordflow">case</span> CXXThrowExprClass:</div>
+<div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>   <span class="keywordflow">case</span> CXXNewExprClass:</div>
+<div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>   <span class="keywordflow">case</span> CXXDeleteExprClass:</div>
+<div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>   <span class="keywordflow">case</span> ExprWithCleanupsClass:</div>
+<div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>   <span class="keywordflow">case</span> CXXBindTemporaryExprClass:</div>
+<div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>   <span class="keywordflow">case</span> BlockExprClass:</div>
+<div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>   <span class="keywordflow">case</span> CUDAKernelCallExprClass:</div>
+<div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>     <span class="comment">// These always have a side-effect.</span></div>
+<div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02856"></a><span class="lineno"> 2856</span> </div>
+<div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>   <span class="keywordflow">case</span> ParenExprClass:</div>
+<div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>   <span class="keywordflow">case</span> ArraySubscriptExprClass:</div>
+<div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>   <span class="keywordflow">case</span> MemberExprClass:</div>
+<div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>   <span class="keywordflow">case</span> ConditionalOperatorClass:</div>
+<div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>   <span class="keywordflow">case</span> BinaryConditionalOperatorClass:</div>
+<div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>   <span class="keywordflow">case</span> CompoundLiteralExprClass:</div>
+<div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>   <span class="keywordflow">case</span> ExtVectorElementExprClass:</div>
+<div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>   <span class="keywordflow">case</span> DesignatedInitExprClass:</div>
+<div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>   <span class="keywordflow">case</span> ParenListExprClass:</div>
+<div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>   <span class="keywordflow">case</span> CXXPseudoDestructorExprClass:</div>
+<div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>   <span class="keywordflow">case</span> CXXStdInitializerListExprClass:</div>
+<div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>   <span class="keywordflow">case</span> SubstNonTypeTemplateParmExprClass:</div>
+<div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>   <span class="keywordflow">case</span> MaterializeTemporaryExprClass:</div>
+<div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>   <span class="keywordflow">case</span> ShuffleVectorExprClass:</div>
+<div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>   <span class="keywordflow">case</span> ConvertVectorExprClass:</div>
+<div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>   <span class="keywordflow">case</span> AsTypeExprClass:</div>
+<div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>     <span class="comment">// These have a side-effect if any subexpression does.</span></div>
+<div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>     <span class="keywordflow">break</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"> 2876</span>   <span class="keywordflow">case</span> UnaryOperatorClass:</div>
+<div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>     <span class="keywordflow">if</span> (cast<UnaryOperator>(<span class="keyword">this</span>)->isIncrementDecrementOp())</div>
+<div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02880"></a><span class="lineno"> 2880</span> </div>
+<div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>   <span class="keywordflow">case</span> BinaryOperatorClass:</div>
+<div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>     <span class="keywordflow">if</span> (cast<BinaryOperator>(<span class="keyword">this</span>)->isAssignmentOp())</div>
+<div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02885"></a><span class="lineno"> 2885</span> </div>
+<div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>   <span class="keywordflow">case</span> InitListExprClass:</div>
+<div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>     <span class="comment">// FIXME: The children for an InitListExpr doesn't include the array filler.</span></div>
+<div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = cast<InitListExpr>(<span class="keyword">this</span>)->getArrayFiller())</div>
+<div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>       <span class="keywordflow">if</span> (E->HasSideEffects(Ctx))</div>
+<div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02892"></a><span class="lineno"> 2892</span> </div>
+<div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>   <span class="keywordflow">case</span> GenericSelectionExprClass:</div>
+<div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>     <span class="keywordflow">return</span> cast<GenericSelectionExpr>(<span class="keyword">this</span>)->getResultExpr()-></div>
+<div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>         <a class="code" href="classclang_1_1Expr.html#ae87e52ec0e14be11804122a03f8744ed">HasSideEffects</a>(Ctx);</div>
+<div class="line"><a name="l02896"></a><span class="lineno"> 2896</span> </div>
+<div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>   <span class="keywordflow">case</span> ChooseExprClass:</div>
+<div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>     <span class="keywordflow">return</span> cast<ChooseExpr>(<span class="keyword">this</span>)->getChosenSubExpr()->HasSideEffects(Ctx);</div>
+<div class="line"><a name="l02899"></a><span class="lineno"> 2899</span> </div>
+<div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>   <span class="keywordflow">case</span> CXXDefaultArgExprClass:</div>
+<div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>     <span class="keywordflow">return</span> cast<CXXDefaultArgExpr>(<span class="keyword">this</span>)->getExpr()->HasSideEffects(Ctx);</div>
+<div class="line"><a name="l02902"></a><span class="lineno"> 2902</span> </div>
+<div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>   <span class="keywordflow">case</span> CXXDefaultInitExprClass:</div>
+<div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = cast<CXXDefaultInitExpr>(<span class="keyword">this</span>)->getExpr())</div>
+<div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>       <span class="keywordflow">return</span> E->HasSideEffects(Ctx);</div>
+<div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>     <span class="comment">// If we've not yet parsed the initializer, assume it has side-effects.</span></div>
+<div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02908"></a><span class="lineno"> 2908</span> </div>
+<div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>   <span class="keywordflow">case</span> CXXDynamicCastExprClass: {</div>
+<div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>     <span class="comment">// A dynamic_cast expression has side-effects if it can throw.</span></div>
+<div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDynamicCastExpr.html" title="A C++ dynamic_cast expression (C++ [expr.dynamic.cast]).">CXXDynamicCastExpr</a> *DCE = cast<CXXDynamicCastExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>     <span class="keywordflow">if</span> (DCE-><a class="code" href="classclang_1_1ExplicitCastExpr.html#ac788ee017b63929c45cf3883910c1adb">getTypeAsWritten</a>()-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>() &&</div>
+<div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>         DCE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca256751070614007fb6d4b82e48460a97" title="CK_Dynamic - A C++ dynamic_cast.">CK_Dynamic</a>)</div>
+<div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>   } <span class="comment">// Fall through.</span></div>
+<div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>   <span class="keywordflow">case</span> ImplicitCastExprClass:</div>
+<div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>   <span class="keywordflow">case</span> CStyleCastExprClass:</div>
+<div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>   <span class="keywordflow">case</span> CXXStaticCastExprClass:</div>
+<div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>   <span class="keywordflow">case</span> CXXReinterpretCastExprClass:</div>
+<div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>   <span class="keywordflow">case</span> CXXConstCastExprClass:</div>
+<div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>   <span class="keywordflow">case</span> CXXFunctionalCastExprClass: {</div>
+<div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *CE = cast<CastExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>     <span class="keywordflow">if</span> (CE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a> &&</div>
+<div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>         CE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>().<a class="code" href="classclang_1_1QualType.html#ace32f56eadc42b2bcf235fccd5a571af" title="Determine whether this type is volatile-qualified.">isVolatileQualified</a>())</div>
+<div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>   }</div>
+<div class="line"><a name="l02928"></a><span class="lineno"> 2928</span> </div>
+<div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>   <span class="keywordflow">case</span> CXXTypeidExprClass:</div>
+<div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>     <span class="comment">// typeid might throw if its subexpression is potentially-evaluated, so has</span></div>
+<div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>     <span class="comment">// side-effects in that case whether or not its subexpression does.</span></div>
+<div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>     <span class="keywordflow">return</span> cast<CXXTypeidExpr>(<span class="keyword">this</span>)->isPotentiallyEvaluated();</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>   <span class="keywordflow">case</span> CXXConstructExprClass:</div>
+<div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>   <span class="keywordflow">case</span> CXXTemporaryObjectExprClass: {</div>
+<div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *CE = cast<CXXConstructExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>     <span class="keywordflow">if</span> (!CE-><a class="code" href="classclang_1_1CXXConstructExpr.html#acc1f0a9fee67eb3f6b8592495ff56548">getConstructor</a>()-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>())</div>
+<div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>     <span class="comment">// A trivial constructor does not add any side-effects of its own. Just look</span></div>
+<div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>     <span class="comment">// at its arguments.</span></div>
+<div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>   }</div>
+<div class="line"><a name="l02943"></a><span class="lineno"> 2943</span> </div>
+<div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>   <span class="keywordflow">case</span> LambdaExprClass: {</div>
+<div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1LambdaExpr.html" title="A C++ lambda expression, which produces a function object (of unspecified type) that can be invoked l...">LambdaExpr</a> *LE = cast<LambdaExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1LambdaExpr_1_1Capture.html" title="Describes the capture of a variable or of this, or of a C++1y init-capture.">LambdaExpr::capture_iterator</a> I = LE-><a class="code" href="classclang_1_1LambdaExpr.html#a3d160b0f0924ba8d85b464c5687187a0" title="Retrieve an iterator pointing to the first lambda capture.">capture_begin</a>(),</div>
+<div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>                                       E = LE-><a class="code" href="classclang_1_1LambdaExpr.html#a2a5f53e1c04d111701b8a94940538fa8" title="Retrieve an iterator pointing past the end of the sequence of lambda captures.">capture_end</a>(); I != E; ++I)</div>
+<div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>       <span class="keywordflow">if</span> (I->getCaptureKind() == <a class="code" href="namespaceclang.html#a4302d73c34f84f339015be4a88d5645ea03614b97bf84fe92eeac712bf3c7a8c3" title="Capturing by copy (a.k.a., by value)">LCK_ByCopy</a>)</div>
+<div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>         <span class="comment">// FIXME: Only has a side-effect if the variable is volatile or if</span></div>
+<div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>         <span class="comment">// the copy would invoke a non-trivial copy constructor.</span></div>
+<div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>   }</div>
+<div class="line"><a name="l02954"></a><span class="lineno"> 2954</span> </div>
+<div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>   <span class="keywordflow">case</span> PseudoObjectExprClass: {</div>
+<div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>     <span class="comment">// Only look for side-effects in the semantic form, and look past</span></div>
+<div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>     <span class="comment">// OpaqueValueExpr bindings in that form.</span></div>
+<div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1PseudoObjectExpr.html">PseudoObjectExpr</a> *PO = cast<PseudoObjectExpr>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1PseudoObjectExpr.html#a499c2bea62e3284750aa65047d460b95">PseudoObjectExpr::const_semantics_iterator</a> I = PO-><a class="code" href="classclang_1_1PseudoObjectExpr.html#a455ba1c6b83c289e35c00e77add3b4eb">semantics_begin</a>(),</div>
+<div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>                                                     E = PO-><a class="code" href="classclang_1_1PseudoObjectExpr.html#a1976b4ff176afbd94577feb75431b1d5">semantics_end</a>();</div>
+<div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>          I != E; ++I) {</div>
+<div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Subexpr = *I;</div>
+<div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1OpaqueValueExpr.html">OpaqueValueExpr</a> *OVE = dyn_cast<OpaqueValueExpr>(Subexpr))</div>
+<div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>         Subexpr = OVE->getSourceExpr();</div>
+<div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>       <span class="keywordflow">if</span> (Subexpr-><a class="code" href="classclang_1_1Expr.html#ae87e52ec0e14be11804122a03f8744ed">HasSideEffects</a>(Ctx))</div>
+<div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>     }</div>
+<div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>   }</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>   <span class="keywordflow">case</span> ObjCBoxedExprClass:</div>
+<div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>   <span class="keywordflow">case</span> ObjCArrayLiteralClass:</div>
+<div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>   <span class="keywordflow">case</span> ObjCDictionaryLiteralClass:</div>
+<div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>   <span class="keywordflow">case</span> ObjCMessageExprClass:</div>
+<div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>   <span class="keywordflow">case</span> ObjCSelectorExprClass:</div>
+<div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>   <span class="keywordflow">case</span> ObjCProtocolExprClass:</div>
+<div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>   <span class="keywordflow">case</span> ObjCPropertyRefExprClass:</div>
+<div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>   <span class="keywordflow">case</span> ObjCIsaExprClass:</div>
+<div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>   <span class="keywordflow">case</span> ObjCIndirectCopyRestoreExprClass:</div>
+<div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>   <span class="keywordflow">case</span> ObjCSubscriptRefExprClass:</div>
+<div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>   <span class="keywordflow">case</span> ObjCBridgedCastExprClass:</div>
+<div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>     <span class="comment">// FIXME: Classify these cases better.</span></div>
+<div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>   }</div>
+<div class="line"><a name="l02985"></a><span class="lineno"> 2985</span> </div>
+<div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>   <span class="comment">// Recurse to children.</span></div>
+<div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>   <span class="keywordflow">for</span> (<a class="code" href="structclang_1_1ConstStmtRange.html">const_child_range</a> SubStmts = <a class="code" href="classclang_1_1Stmt.html#a489148e5d234a5a7f00d8b02981bcee5">children</a>(); SubStmts; ++SubStmts)</div>
+<div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a> = *SubStmts)</div>
+<div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>       <span class="keywordflow">if</span> (cast<Expr>(<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>)->HasSideEffects(Ctx))</div>
+<div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>         <span class="keywordflow">return</span> <span class="keyword">true</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">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02993"></a><span class="lineno"> 2993</span> }</div>
+<div class="line"><a name="l02994"></a><span class="lineno"> 2994</span> </div>
+<div class="line"><a name="l02995"></a><span class="lineno"> 2995</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l02996"></a><span class="lineno"> 2996</span> <span class="comment">  /// \brief Look for a call to a non-trivial function within an expression.</span></div>
+<div class="line"><a name="l02997"></a><span class="lineno"> 2997</span> <span class="comment"></span>  <span class="keyword">class </span>NonTrivialCallFinder : <span class="keyword">public</span> <a class="code" href="classclang_1_1EvaluatedExprVisitor.html" title="Given a potentially-evaluated expression, this visitor visits all of its potentially-evaluated subexp...">EvaluatedExprVisitor</a><NonTrivialCallFinder></div>
+<div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>   {</div>
+<div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>     <span class="keyword">typedef</span> <a class="code" href="classclang_1_1EvaluatedExprVisitor.html" title="Given a potentially-evaluated expression, this visitor visits all of its potentially-evaluated subexp...">EvaluatedExprVisitor<NonTrivialCallFinder></a> Inherited;</div>
+<div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>     </div>
+<div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>     <span class="keywordtype">bool</span> NonTrivial;</div>
+<div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>     </div>
+<div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>     <span class="keyword">explicit</span> NonTrivialCallFinder(<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="l03005"></a><span class="lineno"> 3005</span>       : Inherited(Context), NonTrivial(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>) { }</div>
+<div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>     </div>
+<div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>     <span class="keywordtype">bool</span> hasNonTrivialCall()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> NonTrivial; }</div>
+<div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>     </div>
+<div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>     <span class="keywordtype">void</span> VisitCallExpr(<a class="code" href="classclang_1_1CallExpr.html">CallExpr</a> *E) {</div>
+<div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *Method</div>
+<div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>           = dyn_cast_or_null<CXXMethodDecl>(E-><a class="code" href="classclang_1_1CallExpr.html#a68507440cf707685b486b1f446d28f53">getCalleeDecl</a>())) {</div>
+<div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>         <span class="keywordflow">if</span> (Method->isTrivial()) {</div>
+<div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>           <span class="comment">// Recurse to children of the call.</span></div>
+<div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>           Inherited::VisitStmt(E);</div>
+<div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>           <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>         }</div>
+<div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>       }</div>
+<div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>       </div>
+<div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>       NonTrivial = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>     }</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="keywordtype">void</span> VisitCXXConstructExpr(<a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *E) {</div>
+<div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>       <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXConstructExpr.html#acc1f0a9fee67eb3f6b8592495ff56548">getConstructor</a>()-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>()) {</div>
+<div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>         <span class="comment">// Recurse to children of the call.</span></div>
+<div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>         Inherited::VisitStmt(E);</div>
+<div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>         <span class="keywordflow">return</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>       </div>
+<div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>       NonTrivial = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>     }</div>
+<div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>     </div>
+<div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>     <span class="keywordtype">void</span> VisitCXXBindTemporaryExpr(<a class="code" href="classclang_1_1CXXBindTemporaryExpr.html" title="Represents binding an expression to a temporary.">CXXBindTemporaryExpr</a> *E) {</div>
+<div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>       <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXBindTemporaryExpr.html#adef4eac5211f775751b7178963aea42c">getTemporary</a>()-><a class="code" href="classclang_1_1CXXTemporary.html#a7e7fc4c71ab30bc17d7bbf46cdd2fb88">getDestructor</a>()-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>()) {</div>
+<div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>         Inherited::VisitStmt(E);</div>
+<div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>       }</div>
+<div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>       </div>
+<div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>       NonTrivial = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>     }</div>
+<div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>   };</div>
+<div class="line"><a name="l03041"></a><span class="lineno"> 3041</span> }</div>
+<div class="line"><a name="l03042"></a><span class="lineno"> 3042</span> </div>
+<div class="line"><a name="l03043"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#aecb65a74102b1e3b7d9605a7848df272"> 3043</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#aecb65a74102b1e3b7d9605a7848df272" title="Determine whether this expression involves a call to any function that is not trivial.">Expr::hasNonTrivialCall</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> &Ctx) {</div>
+<div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>   NonTrivialCallFinder <a class="code" href="ASTMatchFinder_8cpp.html#a6d0e2e8cc804ce67cb164bd1f635cfdc">Finder</a>(Ctx);</div>
+<div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>   Finder.Visit(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>   <span class="keywordflow">return</span> Finder.hasNonTrivialCall();  </div>
+<div class="line"><a name="l03047"></a><span class="lineno"> 3047</span> }</div>
+<div class="line"><a name="l03048"></a><span class="lineno"> 3048</span> <span class="comment"></span></div>
+<div class="line"><a name="l03049"></a><span class="lineno"> 3049</span> <span class="comment">/// isNullPointerConstant - C99 6.3.2.3p3 - Return whether this is a null </span></div>
+<div class="line"><a name="l03050"></a><span class="lineno"> 3050</span> <span class="comment">/// pointer constant or not, as well as the specific kind of constant detected.</span></div>
+<div class="line"><a name="l03051"></a><span class="lineno"> 3051</span> <span class="comment">/// Null pointer constants can be integer constant expressions with the</span></div>
+<div class="line"><a name="l03052"></a><span class="lineno"> 3052</span> <span class="comment">/// value zero, casts of zero to void*, nullptr (C++0X), or __null</span></div>
+<div class="line"><a name="l03053"></a><span class="lineno"> 3053</span> <span class="comment">/// (a GNU extension).</span></div>
+<div class="line"><a name="l03054"></a><span class="lineno"> 3054</span> <span class="comment"></span><a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5" title="Enumeration used to describe the kind of Null pointer constant returned from isNullPointerConstant()...">Expr::NullPointerConstantKind</a></div>
+<div class="line"><a name="l03055"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ab56d6fd074c831a3e63b45f4f226b35a"> 3055</a></span> <a class="code" href="classclang_1_1Expr.html#ab56d6fd074c831a3e63b45f4f226b35a">Expr::isNullPointerConstant</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> &Ctx,</div>
+<div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>                             <a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67" title="Enumeration used to describe how isNullPointerConstant() should cope with value-dependent expressions...">NullPointerConstantValueDependence</a> NPC)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>() &&</div>
+<div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>       (!Ctx.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().CPlusPlus11 || Ctx.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().MicrosoftMode)) {</div>
+<div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>     <span class="keywordflow">switch</span> (NPC) {</div>
+<div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67a2e70655e166db6a25cc77365db79b7b3" title="Specifies that the expression should never be value-dependent.">NPC_NeverValueDependent</a>:</div>
+<div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>       llvm_unreachable(<span class="stringliteral">"Unexpected value dependent expression!"</span>);</div>
+<div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67a06279741aa9bc21d0a6d5be7aa7f06e7" title="Specifies that a value-dependent expression of integral or dependent type should be considered a null...">NPC_ValueDependentIsNull</a>:</div>
+<div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>() || <a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isIntegralType(Ctx))</div>
+<div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>         <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5a28a570648444554687512aa087625912" title="Expression is a Null pointer constant built from a zero integer expression that is not a simple...">NPCK_ZeroExpression</a>;</div>
+<div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>         <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aec64d16ea295463d7320d531eed287b2" title="Expression is not a Null pointer constant.">NPCK_NotNull</a>;</div>
+<div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>         </div>
+<div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67a859ff929282c6409dedca4d3e3c5ab8c" title="Specifies that a value-dependent expression should be considered to never be a null pointer constant...">NPC_ValueDependentIsNotNull</a>:</div>
+<div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aec64d16ea295463d7320d531eed287b2" title="Expression is not a Null pointer constant.">NPCK_NotNull</a>;</div>
+<div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>     }</div>
+<div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>   }</div>
+<div class="line"><a name="l03072"></a><span class="lineno"> 3072</span> </div>
+<div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>   <span class="comment">// Strip off a cast to void*, if it exists. Except in C++.</span></div>
+<div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ExplicitCastExpr.html">ExplicitCastExpr</a> *CE = dyn_cast<ExplicitCastExpr>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>     <span class="keywordflow">if</span> (!Ctx.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().CPlusPlus) {</div>
+<div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>       <span class="comment">// Check that it is a cast to void*.</span></div>
+<div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1PointerType.html">PointerType</a> *PT = CE->getType()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1PointerType.html">PointerType</a>>()) {</div>
+<div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>         <a class="code" href="classclang_1_1QualType.html">QualType</a> Pointee = PT-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>         <span class="keywordflow">if</span> (!Pointee.<a class="code" href="classclang_1_1QualType.html#ac6e66316dff8ddb3bf1b995a3dbcd0a7" title="Determine whether this type has any qualifiers.">hasQualifiers</a>() &&</div>
+<div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>             Pointee-><a class="code" href="classclang_1_1Type.html#a0ee6d74a089fe24d755d9cfd8bceef3f">isVoidType</a>() &&                              <span class="comment">// to void*</span></div>
+<div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>             CE->getSubExpr()->getType()->isIntegerType())         <span class="comment">// from int.</span></div>
+<div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>           <span class="keywordflow">return</span> CE->getSubExpr()->isNullPointerConstant(Ctx, NPC);</div>
+<div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>       }</div>
+<div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>     }</div>
+<div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *ICE = dyn_cast<ImplicitCastExpr>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>     <span class="comment">// Ignore the ImplicitCastExpr type entirely.</span></div>
+<div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>     <span class="keywordflow">return</span> ICE->getSubExpr()->isNullPointerConstant(Ctx, NPC);</div>
+<div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ParenExpr.html">ParenExpr</a> *PE = dyn_cast<ParenExpr>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>     <span class="comment">// Accept ((void*)0) as a null pointer constant, as many other</span></div>
+<div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>     <span class="comment">// implementations do.</span></div>
+<div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>     <span class="keywordflow">return</span> PE->getSubExpr()->isNullPointerConstant(Ctx, NPC);</div>
+<div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1GenericSelectionExpr.html" title="Represents a C11 generic selection.">GenericSelectionExpr</a> *GE =</div>
+<div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>                dyn_cast<GenericSelectionExpr>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>     <span class="keywordflow">if</span> (GE->isResultDependent())</div>
+<div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aec64d16ea295463d7320d531eed287b2" title="Expression is not a Null pointer constant.">NPCK_NotNull</a>;</div>
+<div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>     <span class="keywordflow">return</span> GE->getResultExpr()->isNullPointerConstant(Ctx, NPC);</div>
+<div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ChooseExpr.html">ChooseExpr</a> *CE = dyn_cast<ChooseExpr>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>     <span class="keywordflow">if</span> (CE->isConditionDependent())</div>
+<div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aec64d16ea295463d7320d531eed287b2" title="Expression is not a Null pointer constant.">NPCK_NotNull</a>;</div>
+<div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>     <span class="keywordflow">return</span> CE->getChosenSubExpr()->isNullPointerConstant(Ctx, NPC);</div>
+<div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDefaultArgExpr.html" title="A default argument (C++ [dcl.fct.default]).">CXXDefaultArgExpr</a> *DefaultArg</div>
+<div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>                = dyn_cast<CXXDefaultArgExpr>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>     <span class="comment">// See through default argument expressions.</span></div>
+<div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>     <span class="keywordflow">return</span> DefaultArg->getExpr()->isNullPointerConstant(Ctx, NPC);</div>
+<div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDefaultInitExpr.html" title="A use of a default initializer in a constructor or in aggregate initialization.">CXXDefaultInitExpr</a> *DefaultInit</div>
+<div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>                = dyn_cast<CXXDefaultInitExpr>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>     <span class="comment">// See through default initializer expressions.</span></div>
+<div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>     <span class="keywordflow">return</span> DefaultInit->getExpr()->isNullPointerConstant(Ctx, NPC);</div>
+<div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isa<GNUNullExpr>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>     <span class="comment">// The GNU __null extension is always a null pointer constant.</span></div>
+<div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5ae2d5d1b2a88a55026221e89617b42885" title="Expression is a GNU-style __null constant.">NPCK_GNUNull</a>;</div>
+<div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *M </div>
+<div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>                                    = dyn_cast<MaterializeTemporaryExpr>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>     <span class="keywordflow">return</span> M->GetTemporaryExpr()->isNullPointerConstant(Ctx, NPC);</div>
+<div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1OpaqueValueExpr.html">OpaqueValueExpr</a> *OVE = dyn_cast<OpaqueValueExpr>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Source = OVE->getSourceExpr())</div>
+<div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>       <span class="keywordflow">return</span> Source->isNullPointerConstant(Ctx, NPC);</div>
+<div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>   }</div>
+<div class="line"><a name="l03119"></a><span class="lineno"> 3119</span> </div>
+<div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>   <span class="comment">// C++11 nullptr_t is always a null pointer constant.</span></div>
+<div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isNullPtrType())</div>
+<div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aced738ba36bc5bd1f85b8016533bf372" title="Expression is a C++11 nullptr.">NPCK_CXX11_nullptr</a>;</div>
+<div class="line"><a name="l03123"></a><span class="lineno"> 3123</span> </div>
+<div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *UT = <a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->getAsUnionType())</div>
+<div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>     <span class="keywordflow">if</span> (!Ctx.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().CPlusPlus11 &&</div>
+<div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>         UT && UT->getDecl()->hasAttr<<a class="code" href="classclang_1_1TransparentUnionAttr.html">TransparentUnionAttr</a>>())</div>
+<div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CompoundLiteralExpr.html">CompoundLiteralExpr</a> *CLE = dyn_cast<CompoundLiteralExpr>(<span class="keyword">this</span>)){</div>
+<div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *InitExpr = CLE->getInitializer();</div>
+<div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ILE = dyn_cast<InitListExpr>(InitExpr))</div>
+<div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>           <span class="keywordflow">return</span> ILE->getInit(0)-><a class="code" href="classclang_1_1Expr.html#ab56d6fd074c831a3e63b45f4f226b35a">isNullPointerConstant</a>(Ctx, NPC);</div>
+<div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>       }</div>
+<div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>   <span class="comment">// This expression must be an integer type.</span></div>
+<div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isIntegerType() || </div>
+<div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>       (Ctx.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().CPlusPlus && <a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a1b8eefccd216afd2ff89e2fa71f9f089">isEnumeralType</a>()))</div>
+<div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aec64d16ea295463d7320d531eed287b2" title="Expression is not a Null pointer constant.">NPCK_NotNull</a>;</div>
+<div class="line"><a name="l03136"></a><span class="lineno"> 3136</span> </div>
+<div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>   <span class="keywordflow">if</span> (Ctx.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().CPlusPlus11) {</div>
+<div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>     <span class="comment">// C++11 [conv.ptr]p1: A null pointer constant is an integer literal with</span></div>
+<div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>     <span class="comment">// value zero or a prvalue of type std::nullptr_t.</span></div>
+<div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>     <span class="comment">// Microsoft mode permits C++98 rules reflecting MSVC behavior.</span></div>
+<div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a> *Lit = dyn_cast<<a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a>>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>     <span class="keywordflow">if</span> (Lit && !Lit-><a class="code" href="classclang_1_1APIntStorage.html#a2e483ee266dda1302a3bb4ef6ceab5a9">getValue</a>())</div>
+<div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5ab0deca18f76f01eed006a8acc1400499" title="Expression is a Null pointer constant built from a literal zero.">NPCK_ZeroLiteral</a>;</div>
+<div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!Ctx.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().MicrosoftMode ||</div>
+<div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>              !<a class="code" href="classclang_1_1Expr.html#ad7e9dbdcfe76ee6814d94c0c9863f9f7">isCXX98IntegralConstantExpr</a>(Ctx))</div>
+<div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aec64d16ea295463d7320d531eed287b2" title="Expression is not a Null pointer constant.">NPCK_NotNull</a>;</div>
+<div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>     <span class="comment">// If we have an integer constant expression, we need to *evaluate* it and</span></div>
+<div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>     <span class="comment">// test for the value 0.</span></div>
+<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Expr.html#a9c2d6a6def36088d32a4238a684f37be">isIntegerConstantExpr</a>(Ctx))</div>
+<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aec64d16ea295463d7320d531eed287b2" title="Expression is not a Null pointer constant.">NPCK_NotNull</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="keywordflow">if</span> (<a class="code" href="classclang_1_1Expr.html#a9a303252fadd3163f7349daa10955aa4">EvaluateKnownConstInt</a>(Ctx) != 0)</div>
+<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aec64d16ea295463d7320d531eed287b2" title="Expression is not a Null pointer constant.">NPCK_NotNull</a>;</div>
+<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span> </div>
+<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>   <span class="keywordflow">if</span> (isa<IntegerLiteral>(<span class="keyword">this</span>))</div>
+<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5ab0deca18f76f01eed006a8acc1400499" title="Expression is a Null pointer constant built from a literal zero.">NPCK_ZeroLiteral</a>;</div>
+<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5a28a570648444554687512aa087625912" title="Expression is a Null pointer constant built from a zero integer expression that is not a simple...">NPCK_ZeroExpression</a>;</div>
+<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span> }</div>
+<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span> <span class="comment"></span></div>
+<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span> <span class="comment">/// \brief If this expression is an l-value for an Objective C</span></div>
+<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span> <span class="comment">/// property, find the underlying property reference expression.</span></div>
+<div class="line"><a name="l03164"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ab7d629321799f7f33abda0858033d21b"> 3164</a></span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyRefExpr.html">ObjCPropertyRefExpr</a> *<a class="code" href="classclang_1_1Expr.html#ab7d629321799f7f33abda0858033d21b" title="If this expression is an l-value for an Objective C property, find the underlying property reference ...">Expr::getObjCProperty</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>     assert((E-><a class="code" href="classclang_1_1Expr.html#aacbe243ee99ac093e4eba5e40d6a9edb" title="getValueKind - The value kind that this expression produces.">getValueKind</a>() == <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a> &&</div>
+<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>             E-><a class="code" href="classclang_1_1Expr.html#a6fd3892ddf8334fc9b311daaa93a27f5">getObjectKind</a>() == <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a515e545564007a6528858a9bc912232a">OK_ObjCProperty</a>) &&</div>
+<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>            <span class="stringliteral">"expression is not a property reference"</span>);</div>
+<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>     E = E-><a class="code" href="classclang_1_1Expr.html#a397a707d10e0d3ac4a150325eafa4368">IgnoreParenCasts</a>();</div>
+<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *BO = dyn_cast<BinaryOperator>(E)) {</div>
+<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>       <span class="keywordflow">if</span> (BO->getOpcode() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae3c9652c3c01080bd794e8e03988e278">BO_Comma</a>) {</div>
+<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>         E = BO->getRHS();</div>
+<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>       }</div>
+<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>     }</div>
+<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span> </div>
+<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>   }</div>
+<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span> </div>
+<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>   <span class="keywordflow">return</span> cast<ObjCPropertyRefExpr>(E);</div>
+<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span> }</div>
+<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span> </div>
+<div class="line"><a name="l03184"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a212f92f9b838997038e977cc694953ef"> 3184</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a212f92f9b838997038e977cc694953ef" title="Check if this expression is the ObjC 'self' implicit parameter.">Expr::isObjCSelfExpr</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = <a class="code" href="classclang_1_1Expr.html#a54036c75e73ecdf081729210fa53e582">IgnoreParenImpCasts</a>();</div>
+<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span> </div>
+<div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *DRE = dyn_cast<<a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>>(E);</div>
+<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>   <span class="keywordflow">if</span> (!DRE)</div>
+<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03190"></a><span class="lineno"> 3190</span> </div>
+<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ImplicitParamDecl.html">ImplicitParamDecl</a> *<a class="code" href="SemaOverload_8cpp.html#af465899bf43044df83229078154bc2ed">Param</a> = dyn_cast<<a class="code" href="classclang_1_1ImplicitParamDecl.html">ImplicitParamDecl</a>>(DRE-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>());</div>
+<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>   <span class="keywordflow">if</span> (!Param)</div>
+<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>     <span class="keywordflow">return</span> <span class="keyword">false</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="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *M = dyn_cast<<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a>>(Param-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>());</div>
+<div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>   <span class="keywordflow">if</span> (!M)</div>
+<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span> </div>
+<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>   <span class="keywordflow">return</span> M-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aca5d21d1409956e5d6ba77b0ce4beb0d">getSelfDecl</a>() == <a class="code" href="SemaOverload_8cpp.html#af465899bf43044df83229078154bc2ed">Param</a>;</div>
+<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span> }</div>
+<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span> </div>
+<div class="line"><a name="l03202"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a818d06525fe0aaed33835537135f2884"> 3202</a></span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *<a class="code" href="classclang_1_1Expr.html#a818d06525fe0aaed33835537135f2884" title="If this expression refers to a bit-field, retrieve the declaration of that bit-field.">Expr::getSourceBitField</a>() {</div>
+<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = this-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l03204"></a><span class="lineno"> 3204</span> </div>
+<div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>   <span class="keywordflow">while</span> (<a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *ICE = dyn_cast<ImplicitCastExpr>(E)) {</div>
+<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>     <span class="keywordflow">if</span> (ICE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a> ||</div>
+<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>         (ICE->getValueKind() != <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> && ICE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>))</div>
+<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>       E = ICE->getSubExpr()-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>   }</div>
+<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span> </div>
+<div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *MemRef = dyn_cast<MemberExpr>(E))</div>
+<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = dyn_cast<FieldDecl>(MemRef->getMemberDecl()))</div>
+<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>       <span class="keywordflow">if</span> (Field->isBitField())</div>
+<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>         <span class="keywordflow">return</span> Field;</div>
+<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span> </div>
+<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCIvarRefExpr.html" title="ObjCIvarRefExpr - A reference to an ObjC instance variable.">ObjCIvarRefExpr</a> *IvarRef = dyn_cast<ObjCIvarRefExpr>(E))</div>
+<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Ivar = dyn_cast<FieldDecl>(IvarRef->getDecl()))</div>
+<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>       <span class="keywordflow">if</span> (Ivar->isBitField())</div>
+<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>         <span class="keywordflow">return</span> Ivar;</div>
+<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span> </div>
+<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *DeclRef = dyn_cast<DeclRefExpr>(E))</div>
+<div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = dyn_cast<FieldDecl>(DeclRef->getDecl()))</div>
+<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>       <span class="keywordflow">if</span> (Field->isBitField())</div>
+<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>         <span class="keywordflow">return</span> Field;</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>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *BinOp = dyn_cast<BinaryOperator>(E)) {</div>
+<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>     <span class="keywordflow">if</span> (BinOp->isAssignmentOp() && BinOp->getLHS())</div>
+<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>       <span class="keywordflow">return</span> BinOp->getLHS()-><a class="code" href="classclang_1_1Expr.html#a818d06525fe0aaed33835537135f2884" title="If this expression refers to a bit-field, retrieve the declaration of that bit-field.">getSourceBitField</a>();</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="keywordflow">if</span> (BinOp->getOpcode() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae3c9652c3c01080bd794e8e03988e278">BO_Comma</a> && BinOp->getRHS())</div>
+<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>       <span class="keywordflow">return</span> BinOp->getRHS()->getSourceBitField();</div>
+<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>   }</div>
+<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span> </div>
+<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span> }</div>
+<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span> </div>
+<div class="line"><a name="l03239"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a5a7264c21e63624f6438ee1a377abb4f"> 3239</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a5a7264c21e63624f6438ee1a377abb4f" title="Returns whether this expression refers to a vector element.">Expr::refersToVectorElement</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = this-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</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="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *ICE = dyn_cast<ImplicitCastExpr>(E)) {</div>
+<div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>     <span class="keywordflow">if</span> (ICE->getValueKind() != <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="l03244"></a><span class="lineno"> 3244</span>         ICE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>)</div>
+<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>       E = ICE->getSubExpr()-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>   }</div>
+<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>   </div>
+<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ArraySubscriptExpr.html" title="ArraySubscriptExpr - [C99 6.5.2.1] Array Subscripting.">ArraySubscriptExpr</a> *ASE = dyn_cast<ArraySubscriptExpr>(E))</div>
+<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>     <span class="keywordflow">return</span> ASE->getBase()-><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="l03252"></a><span class="lineno"> 3252</span> </div>
+<div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>   <span class="keywordflow">if</span> (isa<ExtVectorElementExpr>(E))</div>
+<div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l03255"></a><span class="lineno"> 3255</span> </div>
+<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span> }</div>
+<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span> <span class="comment"></span></div>
+<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span> <span class="comment">/// isArrow - Return true if the base expression is a pointer to vector,</span></div>
+<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span> <span class="comment">/// return false if the base expression is a vector.</span></div>
+<div class="line"><a name="l03261"></a><span class="lineno"><a class="code" href="classclang_1_1ExtVectorElementExpr.html#ac0277f87f737b15372e208542b91713d"> 3261</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ExtVectorElementExpr.html#ac0277f87f737b15372e208542b91713d">ExtVectorElementExpr::isArrow</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ExtVectorElementExpr.html#a28e57f22fc58890b985214c797dacadf">getBase</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a1c0038a55083ee0a292a020038ee04d8">isPointerType</a>();</div>
+<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span> }</div>
+<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span> </div>
+<div class="line"><a name="l03265"></a><span class="lineno"><a class="code" href="classclang_1_1ExtVectorElementExpr.html#a5ed34e1135670b8bd8a6cc73152b5967"> 3265</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1ExtVectorElementExpr.html#a5ed34e1135670b8bd8a6cc73152b5967" title="getNumElements - Get the number of components being selected.">ExtVectorElementExpr::getNumElements</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1VectorType.html">VectorType</a> *VT = <a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->getAs<VectorType>())</div>
+<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>     <span class="keywordflow">return</span> VT->getNumElements();</div>
+<div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>   <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span> }</div>
+<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span> <span class="comment"></span></div>
+<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span> <span class="comment">/// containsDuplicateElements - Return true if any element access is repeated.</span></div>
+<div class="line"><a name="l03272"></a><span class="lineno"><a class="code" href="classclang_1_1ExtVectorElementExpr.html#aa6155ee94eb0476a2bc0ebb90fbff149"> 3272</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ExtVectorElementExpr.html#aa6155ee94eb0476a2bc0ebb90fbff149">ExtVectorElementExpr::containsDuplicateElements</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>   <span class="comment">// FIXME: Refactor this code to an accessor on the AST node which returns the</span></div>
+<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>   <span class="comment">// "type" of component access, and share with code below and in Sema.</span></div>
+<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>   StringRef Comp = Accessor-><a class="code" href="classclang_1_1IdentifierInfo.html#a94caec6a16e508e8ca39eacd278bd2c5" title="Return the actual identifier string.">getName</a>();</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">// Halving swizzles do not contain duplicate elements.</span></div>
+<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>   <span class="keywordflow">if</span> (Comp == <span class="stringliteral">"hi"</span> || Comp == <span class="stringliteral">"lo"</span> || Comp == <span class="stringliteral">"even"</span> || Comp == <span class="stringliteral">"odd"</span>)</div>
+<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span> </div>
+<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>   <span class="comment">// Advance past s-char prefix on hex swizzles.</span></div>
+<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>   <span class="keywordflow">if</span> (Comp[0] == <span class="charliteral">'s'</span> || Comp[0] == <span class="charliteral">'S'</span>)</div>
+<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>     Comp = Comp.substr(1);</div>
+<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span> </div>
+<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Comp.size(); i != e; ++i)</div>
+<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>     <span class="keywordflow">if</span> (Comp.substr(i + 1).find(Comp[i]) != StringRef::npos)</div>
+<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span> </div>
+<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span> }</div>
+<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span> <span class="comment"></span></div>
+<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span> <span class="comment">/// getEncodedElementAccess - We encode the fields as a llvm ConstantArray.</span></div>
+<div class="line"><a name="l03293"></a><span class="lineno"><a class="code" href="classclang_1_1ExtVectorElementExpr.html#a182bf9564a565711571f7d5b9f60a88c"> 3293</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExtVectorElementExpr.html#a182bf9564a565711571f7d5b9f60a88c" title="getEncodedElementAccess - We encode the fields as a llvm ConstantArray.">ExtVectorElementExpr::getEncodedElementAccess</a>(</div>
+<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>                                   <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<unsigned></a> &Elts)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>   StringRef Comp = Accessor-><a class="code" href="classclang_1_1IdentifierInfo.html#a94caec6a16e508e8ca39eacd278bd2c5" title="Return the actual identifier string.">getName</a>();</div>
+<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>   <span class="keywordflow">if</span> (Comp[0] == <span class="charliteral">'s'</span> || Comp[0] == <span class="charliteral">'S'</span>)</div>
+<div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>     Comp = Comp.substr(1);</div>
+<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span> </div>
+<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>   <span class="keywordtype">bool</span> isHi =   Comp == <span class="stringliteral">"hi"</span>;</div>
+<div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>   <span class="keywordtype">bool</span> isLo =   Comp == <span class="stringliteral">"lo"</span>;</div>
+<div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>   <span class="keywordtype">bool</span> isEven = Comp == <span class="stringliteral">"even"</span>;</div>
+<div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>   <span class="keywordtype">bool</span> isOdd  = Comp == <span class="stringliteral">"odd"</span>;</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>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = <a class="code" href="classclang_1_1ExtVectorElementExpr.html#a5ed34e1135670b8bd8a6cc73152b5967" title="getNumElements - Get the number of components being selected.">getNumElements</a>(); i != e; ++i) {</div>
+<div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>     uint64_t Index;</div>
+<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span> </div>
+<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>     <span class="keywordflow">if</span> (isHi)</div>
+<div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>       Index = e + i;</div>
+<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isLo)</div>
+<div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>       Index = i;</div>
+<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isEven)</div>
+<div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>       Index = 2 * i;</div>
+<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isOdd)</div>
+<div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>       Index = 2 * i + 1;</div>
+<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>       Index = <a class="code" href="classclang_1_1ExtVectorType.html#a1562931c7b99241d5e9859fd30219f90">ExtVectorType::getAccessorIdx</a>(Comp[i]);</div>
+<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span> </div>
+<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>     Elts.push_back(Index);</div>
+<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>   }</div>
+<div class="line"><a name="l03320"></a><span class="lineno"> 3320</span> }</div>
+<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span> </div>
+<div class="line"><a name="l03322"></a><span class="lineno"> 3322</span> ObjCMessageExpr::ObjCMessageExpr(<a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l03323"></a><span class="lineno"> 3323</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="l03324"></a><span class="lineno"> 3324</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> LBracLoc,</div>
+<div class="line"><a name="l03325"></a><span class="lineno"> 3325</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> SuperLoc,</div>
+<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>                                  <span class="keywordtype">bool</span> IsInstanceSuper,</div>
+<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>                                  <a class="code" href="classclang_1_1QualType.html">QualType</a> SuperType,</div>
+<div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>                                  <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> Sel, </div>
+<div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>                                  <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<SourceLocation></a> SelLocs,</div>
+<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>                                  <a class="code" href="namespaceclang.html#a0bca8d4a06a5e7175d2177c94788c9b4" title="Whether all locations of the selector identifiers are in a "standard" position.">SelectorLocationsKind</a> SelLocsK,</div>
+<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>                                  <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method,</div>
+<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>                                  <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *></a> <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l03333"></a><span class="lineno"> 3333</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> RBracLoc,</div>
+<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>                                  <span class="keywordtype">bool</span> isImplicit)</div>
+<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>   : <a class="code" href="classclang_1_1Expr.html">Expr</a>(ObjCMessageExprClass, T, VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>          <span class="comment">/*TypeDependent=*/</span><a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <span class="comment">/*ValueDependent=*/</span><a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>,</div>
+<div class=&