[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/CGExprScalar_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprScalar_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprScalar_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprScalar_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,3438 @@
+<!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: CGExprScalar.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_373837989a1dc63be881832a195d38c3.html">CodeGen</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">CGExprScalar.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGExprScalar_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">//===--- CGExprScalar.cpp - Emit LLVM Code for Scalar Exprs ---------------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">// This contains code to emit Expr nodes with scalar LLVM types as LLVM code.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> </div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include "<a class="code" href="CodeGenFunction_8h.html">CodeGenFunction.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="CGCXXABI_8h.html">CGCXXABI.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="CGDebugInfo_8h.html">CGDebugInfo.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="CGObjCRuntime_8h.html">CGObjCRuntime.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="CodeGenModule_8h.html">CodeGenModule.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="ASTContext_8h.html" title="Defines the clang::ASTContext interface.">clang/AST/ASTContext.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="DeclObjC_8h.html">clang/AST/DeclObjC.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="RecordLayout_8h.html">clang/AST/RecordLayout.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="StmtVisitor_8h.html">clang/AST/StmtVisitor.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</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="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="CodeGenOptions_8h.html">clang/Frontend/CodeGenOptions.h</a>"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "llvm/IR/Constants.h"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "llvm/IR/DataLayout.h"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "llvm/IR/Function.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "llvm/IR/GlobalVariable.h"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "llvm/IR/Intrinsics.h"</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "llvm/IR/Module.h"</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "llvm/Support/CFG.h"</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <cstdarg></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">using namespace </span>CodeGen;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">using</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a>;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">//                         Scalar Expression Emitter</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="keyword">struct </span>BinOpInfo {</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *LHS;</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *RHS;</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty;  <span class="comment">// Computation Type.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">BinaryOperator::Opcode</a> Opcode; <span class="comment">// Opcode of BinOp to perform</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keywordtype">bool</span> FPContractable;</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E;      <span class="comment">// Entire expr, for error unsupported.  May not be binop.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> };</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> MustVisitNullValue(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E) {</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="comment">// If a null pointer expression's type is the C++0x nullptr_t, then</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="comment">// it's not necessarily a simple constant and it must be evaluated</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="comment">// for its potential side effects.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keywordflow">return</span> E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac5e1b697b8baa513accaac2f0b1307b9">isNullPtrType</a>();</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> }</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="keyword">class </span>ScalarExprEmitter</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   : <span class="keyword">public</span> <a class="code" href="classclang_1_1StmtVisitor.html">StmtVisitor</a><ScalarExprEmitter, Value*> {</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <a class="code" href="namespaceclang_1_1CodeGen.html#a5b4df39d75df3cedee71cc42402cc621">CGBuilderTy</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordtype">bool</span> IgnoreResultAssign;</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   llvm::LLVMContext &VMContext;</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> </div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   ScalarExprEmitter(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &cgf, <span class="keywordtype">bool</span> ira=<span class="keyword">false</span>)</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     : CGF(cgf), <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>(CGF.<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>), IgnoreResultAssign(ira),</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>       VMContext(cgf.getLLVMContext()) {</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="comment">//===--------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="comment">//                               Utilities</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="comment">//===--------------------------------------------------------------------===//</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="keywordtype">bool</span> TestAndClearIgnoreResultAssign() {</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="keywordtype">bool</span> I = IgnoreResultAssign;</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     IgnoreResultAssign = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="keywordflow">return</span> I;</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   }</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   llvm::Type *ConvertType(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) { <span class="keywordflow">return</span> CGF.ConvertType(T); }</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> EmitLValue(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { <span class="keywordflow">return</span> CGF.EmitLValue(E); }</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> EmitCheckedLValue(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a506527ab7d0b728228596e9a81c811c6" title="Situations in which we might emit a check for the suitability of a pointer or glvalue.">CodeGenFunction::TypeCheckKind</a> TCK) {</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     <span class="keywordflow">return</span> CGF.EmitCheckedLValue(E, TCK);</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> </div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordtype">void</span> EmitBinOpCheck(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Check, <span class="keyword">const</span> BinOpInfo &Info);</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> </div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitLoadOfLValue(<a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc) {</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     <span class="keywordflow">return</span> CGF.EmitLoadOfLValue(LV, Loc).getScalarVal();</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   }</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="comment"></span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment">  /// EmitLoadOfLValue - Given an expression with complex type that represents a</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment">  /// value l-value, this method emits the address of the l-value, then loads</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment">  /// and returns the result.</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="comment"></span>  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitLoadOfLValue(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E) {</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     <span class="keywordflow">return</span> EmitLoadOfLValue(EmitCheckedLValue(E, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a506527ab7d0b728228596e9a81c811c6ad8ff8e321b7ca9aac56195de9ea05d94" title="Checking the operand of a load. Must be suitably sized and aligned.">CodeGenFunction::TCK_Load</a>),</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>                             E-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>());</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> <span class="comment"></span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">  /// EmitConversionToBool - Convert the specified expression value to a</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment">  /// boolean (i1) truth value.  This is equivalent to "Val != 0".</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="comment"></span>  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitConversionToBool(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Src, <a class="code" href="classclang_1_1QualType.html">QualType</a> DstTy);</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="comment"></span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment">  /// \brief Emit a check that a conversion to or from a floating-point type</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment">  /// does not overflow.</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment"></span>  <span class="keywordtype">void</span> EmitFloatConversionCheck(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *OrigSrc, <a class="code" href="classclang_1_1QualType.html">QualType</a> OrigSrcType,</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>                                 <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Src, <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcType,</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>                                 <a class="code" href="classclang_1_1QualType.html">QualType</a> DstType, llvm::Type *DstTy);</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="comment"></span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="comment">  /// EmitScalarConversion - Emit a conversion from the specified type to the</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment">  /// specified destination type, both of which are LLVM scalar types.</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment"></span>  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitScalarConversion(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Src, <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcTy, <a class="code" href="classclang_1_1QualType.html">QualType</a> DstTy);</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment"></span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">  /// EmitComplexToScalarConversion - Emit a conversion from the specified</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment">  /// complex type to the specified destination type, where the destination type</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="comment">  /// is an LLVM scalar type.</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment"></span>  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitComplexToScalarConversion(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae417ed4971c18c5ce0607e1be62ec117">CodeGenFunction::ComplexPairTy</a> Src,</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>                                        <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcTy, <a class="code" href="classclang_1_1QualType.html">QualType</a> DstTy);</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment"></span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment">  /// EmitNullValue - Emit a value that corresponds to null for the given type.</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="comment"></span>  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitNullValue(<a class="code" href="classclang_1_1QualType.html">QualType</a> Ty);</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment"></span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment">  /// EmitFloatToBoolConversion - Perform an FP to boolean conversion.</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment"></span>  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitFloatToBoolConversion(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *V) {</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="comment">// Compare against 0.0 for fp scalars.</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Zero = llvm::Constant::getNullValue(V->getType());</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmpUNE(V, Zero, <span class="stringliteral">"tobool"</span>);</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   }</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment"></span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment">  /// EmitPointerToBoolConversion - Perform a pointer to boolean conversion.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="comment"></span>  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitPointerToBoolConversion(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *V) {</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Zero = llvm::ConstantPointerNull::get(</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>                                       cast<llvm::PointerType>(V->getType()));</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpNE(V, Zero, <span class="stringliteral">"tobool"</span>);</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> </div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitIntToBoolConversion(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *V) {</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     <span class="comment">// Because of the type rules of C, we often end up computing a</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     <span class="comment">// logical value, then zero extending it to int, then wanting it</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="comment">// as a logical value again.  Optimize this common case.</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="keywordflow">if</span> (llvm::ZExtInst *ZI = dyn_cast<llvm::ZExtInst>(V)) {</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       <span class="keywordflow">if</span> (ZI->getOperand(0)->getType() == <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt1Ty()) {</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Result = ZI->getOperand(0);</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>         <span class="comment">// If there aren't any more uses, zap the instruction to save space.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         <span class="comment">// Note that there can be more uses, for example if this</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         <span class="comment">// is the result of an assignment.</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         <span class="keywordflow">if</span> (ZI->use_empty())</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>           ZI->eraseFromParent();</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>         <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>       }</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     }</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateIsNotNull(V, <span class="stringliteral">"tobool"</span>);</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</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>   <span class="comment">//===--------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="comment">//                            Visitor Methods</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="comment">//===--------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Visit(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) {</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1StmtVisitorBase.html#abbf5c352ff111ee7816595709731cc5f">StmtVisitor<ScalarExprEmitter, Value*>::Visit</a>(E);</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> </div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitStmt(<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     S-><a class="code" href="classclang_1_1Stmt.html#a4f15072b37004fbc49a5fe29384c4d6e" title="Dumps the specified AST fragment and all subtrees to llvm::errs().">dump</a>(CGF.getContext().getSourceManager());</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     llvm_unreachable(<span class="stringliteral">"Stmt can't have complex result type!"</span>);</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   }</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitExpr(<a class="code" href="classclang_1_1Expr.html">Expr</a> *S);</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitParenExpr(<a class="code" href="classclang_1_1ParenExpr.html">ParenExpr</a> *PE) {</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     <span class="keywordflow">return</span> Visit(PE-><a class="code" href="classclang_1_1ParenExpr.html#afd9e25d5ae91df9ada9e26b74b60422b">getSubExpr</a>());</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   }</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitSubstNonTypeTemplateParmExpr(<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> *E) {</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     <span class="keywordflow">return</span> Visit(E-><a class="code" href="classclang_1_1SubstNonTypeTemplateParmExpr.html#ae4cf8595c929a3957658a1853549ff3d">getReplacement</a>());</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitGenericSelectionExpr(<a class="code" href="classclang_1_1GenericSelectionExpr.html" title="Represents a C11 generic selection.">GenericSelectionExpr</a> *GE) {</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="keywordflow">return</span> Visit(GE-><a class="code" href="classclang_1_1GenericSelectionExpr.html#a078250182b8dc21030938e8d9125d060">getResultExpr</a>());</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   }</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="comment">// Leaves.</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitIntegerLiteral(<span class="keyword">const</span> <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a> *E) {</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt(E-><a class="code" href="classclang_1_1APIntStorage.html#a2e483ee266dda1302a3bb4ef6ceab5a9">getValue</a>());</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   }</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitFloatingLiteral(<span class="keyword">const</span> <a class="code" href="classclang_1_1FloatingLiteral.html">FloatingLiteral</a> *E) {</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     <span class="keywordflow">return</span> llvm::ConstantFP::get(VMContext, E-><a class="code" href="classclang_1_1FloatingLiteral.html#abd8fbf2605c142c303083b99de2557d3">getValue</a>());</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   }</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCharacterLiteral(<span class="keyword">const</span> <a class="code" href="classclang_1_1CharacterLiteral.html">CharacterLiteral</a> *E) {</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     <span class="keywordflow">return</span> llvm::ConstantInt::get(ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()), E-><a class="code" href="classclang_1_1CharacterLiteral.html#a7cf792977bc8a5b9d1719236e52e350c">getValue</a>());</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   }</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitObjCBoolLiteralExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCBoolLiteralExpr.html">ObjCBoolLiteralExpr</a> *E) {</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     <span class="keywordflow">return</span> llvm::ConstantInt::get(ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()), E-><a class="code" href="classclang_1_1ObjCBoolLiteralExpr.html#aa6a9844a16894eeebe9461b5c2ef0173">getValue</a>());</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   }</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCXXBoolLiteralExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXBoolLiteralExpr.html" title="A boolean literal, per ([C++ lex.bool] Boolean literals).">CXXBoolLiteralExpr</a> *E) {</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     <span class="keywordflow">return</span> llvm::ConstantInt::get(ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()), E-><a class="code" href="classclang_1_1CXXBoolLiteralExpr.html#a1ae712c25664ffbca2317ccdc2fca4c1">getValue</a>());</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCXXScalarValueInitExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXScalarValueInitExpr.html">CXXScalarValueInitExpr</a> *E) {</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     <span class="keywordflow">return</span> EmitNullValue(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   }</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitGNUNullExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1GNUNullExpr.html">GNUNullExpr</a> *E) {</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="keywordflow">return</span> EmitNullValue(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   }</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitOffsetOfExpr(<a class="code" href="classclang_1_1OffsetOfExpr.html">OffsetOfExpr</a> *E);</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryExprOrTypeTraitExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html">UnaryExprOrTypeTraitExpr</a> *E);</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitAddrLabelExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1AddrLabelExpr.html" title="AddrLabelExpr - The GNU address of label extension, representing &&label.">AddrLabelExpr</a> *E) {</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = CGF.GetAddrOfLabel(E-><a class="code" href="classclang_1_1AddrLabelExpr.html#af2951d7c16a37c24ed72ae58c509d9b1">getLabel</a>());</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(V, ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</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> </div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitSizeOfPackExpr(<a class="code" href="classclang_1_1SizeOfPackExpr.html" title="Represents an expression that computes the length of a parameter pack.">SizeOfPackExpr</a> *E) {</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     <span class="keywordflow">return</span> llvm::ConstantInt::get(ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()),E-><a class="code" href="classclang_1_1SizeOfPackExpr.html#ae108b474167cc9cf8bd9e8e7c9a0114e" title="Retrieve the length of the parameter pack.">getPackLength</a>());</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   }</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitPseudoObjectExpr(<a class="code" href="classclang_1_1PseudoObjectExpr.html">PseudoObjectExpr</a> *E) {</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     <span class="keywordflow">return</span> CGF.EmitPseudoObjectRValue(E).getScalarVal();</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   }</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitOpaqueValueExpr(<a class="code" href="classclang_1_1OpaqueValueExpr.html">OpaqueValueExpr</a> *E) {</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>())</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>       <span class="keywordflow">return</span> EmitLoadOfLValue(CGF.getOpaqueLValueMapping(E), E-><a class="code" href="classclang_1_1OpaqueValueExpr.html#af23678fd018a790a4f0e75e65a6ed0c2">getExprLoc</a>());</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     <span class="comment">// Otherwise, assume the mapping is the scalar directly.</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     <span class="keywordflow">return</span> CGF.getOpaqueRValueMapping(E).getScalarVal();</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   }</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> </div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="comment">// l-values.</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitDeclRefExpr(<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="l00229"></a><span class="lineno">  229</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1ConstantEmission.html">CodeGenFunction::ConstantEmission</a> result = CGF.tryEmitAsConstant(E)) {</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>       <span class="keywordflow">if</span> (result.isReference())</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         <span class="keywordflow">return</span> EmitLoadOfLValue(result.getReferenceLValue(CGF, E),</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>                                 E-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>());</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       <span class="keywordflow">return</span> result.getValue();</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="keywordflow">return</span> EmitLoadOfLValue(E);</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   }</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitObjCSelectorExpr(<a class="code" href="classclang_1_1ObjCSelectorExpr.html" title="ObjCSelectorExpr used for @selector in Objective-C.">ObjCSelectorExpr</a> *E) {</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     <span class="keywordflow">return</span> CGF.EmitObjCSelectorExpr(E);</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   }</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitObjCProtocolExpr(<a class="code" href="classclang_1_1ObjCProtocolExpr.html">ObjCProtocolExpr</a> *E) {</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     <span class="keywordflow">return</span> CGF.EmitObjCProtocolExpr(E);</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   }</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitObjCIvarRefExpr(<a class="code" href="classclang_1_1ObjCIvarRefExpr.html" title="ObjCIvarRefExpr - A reference to an ObjC instance variable.">ObjCIvarRefExpr</a> *E) {</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     <span class="keywordflow">return</span> EmitLoadOfLValue(E);</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   }</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitObjCMessageExpr(<a class="code" href="classclang_1_1ObjCMessageExpr.html" title="An expression that sends a message to the given Objective-C object or class.">ObjCMessageExpr</a> *E) {</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a18c98ce48ed8a78cb0290d74feab687a">getMethodDecl</a>() &&</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>         E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a18c98ce48ed8a78cb0290d74feab687a">getMethodDecl</a>()-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>())</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>       <span class="keywordflow">return</span> EmitLoadOfLValue(E);</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     <span class="keywordflow">return</span> CGF.EmitObjCMessageExpr(E).getScalarVal();</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   }</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> </div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitObjCIsaExpr(<a class="code" href="classclang_1_1ObjCIsaExpr.html">ObjCIsaExpr</a> *E) {</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = CGF.EmitObjCIsaExpr(E);</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *V = CGF.EmitLoadOfLValue(LV, E-><a class="code" href="classclang_1_1ObjCIsaExpr.html#a8dd826b7dbec09e9b163b23ab0527641">getExprLoc</a>()).getScalarVal();</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     <span class="keywordflow">return</span> V;</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   }</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitArraySubscriptExpr(<a class="code" href="classclang_1_1ArraySubscriptExpr.html" title="ArraySubscriptExpr - [C99 6.5.2.1] Array Subscripting.">ArraySubscriptExpr</a> *E);</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitShuffleVectorExpr(<a class="code" href="classclang_1_1ShuffleVectorExpr.html">ShuffleVectorExpr</a> *E);</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitConvertVectorExpr(<a class="code" href="classclang_1_1ConvertVectorExpr.html">ConvertVectorExpr</a> *E);</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitMemberExpr(<a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *E);</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitExtVectorElementExpr(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { <span class="keywordflow">return</span> EmitLoadOfLValue(E); }</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCompoundLiteralExpr(<a class="code" href="classclang_1_1CompoundLiteralExpr.html">CompoundLiteralExpr</a> *E) {</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     <span class="keywordflow">return</span> EmitLoadOfLValue(E);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitInitListExpr(<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *E);</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> </div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitImplicitValueInitExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1ImplicitValueInitExpr.html" title="Represents an implicitly-generated value initialization of an object of a given type.">ImplicitValueInitExpr</a> *E) {</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     <span class="keywordflow">return</span> EmitNullValue(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   }</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitExplicitCastExpr(<a class="code" href="classclang_1_1ExplicitCastExpr.html">ExplicitCastExpr</a> *E) {</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</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#ac4d6f4a6e62d6f7d21a8aa082fd68257" title="Whether this type is a variably-modified type (C99 6.7.5).">isVariablyModifiedType</a>())</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       CGF.EmitVariablyModifiedType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     <span class="keywordflow">return</span> VisitCastExpr(E);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCastExpr(<a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *E);</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> </div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCallExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CallExpr.html">CallExpr</a> *E) {</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CallExpr.html#abacb26ed953d3bdb1f8bb67cdeaba298">getCallReturnType</a>()-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>())</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       <span class="keywordflow">return</span> EmitLoadOfLValue(E);</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     <span class="keywordflow">return</span> CGF.EmitCallExpr(E).getScalarVal();</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   }</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitStmtExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1StmtExpr.html">StmtExpr</a> *E);</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>   <span class="comment">// Unary Operators.</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryPostDec(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = EmitLValue(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>());</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     <span class="keywordflow">return</span> EmitScalarPrePostIncDec(E, LV, <span class="keyword">false</span>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   }</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryPostInc(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = EmitLValue(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>());</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     <span class="keywordflow">return</span> EmitScalarPrePostIncDec(E, LV, <span class="keyword">true</span>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   }</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryPreDec(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = EmitLValue(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>());</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     <span class="keywordflow">return</span> EmitScalarPrePostIncDec(E, LV, <span class="keyword">false</span>, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   }</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryPreInc(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = EmitLValue(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>());</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     <span class="keywordflow">return</span> EmitScalarPrePostIncDec(E, LV, <span class="keyword">true</span>, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   }</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EmitAddConsiderOverflowBehavior(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E,</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>                                                <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *InVal,</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>                                                <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NextVal,</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>                                                <span class="keywordtype">bool</span> IsInc);</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> </div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EmitScalarPrePostIncDec(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E, <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV,</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>                                        <span class="keywordtype">bool</span> isInc, <span class="keywordtype">bool</span> isPre);</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> </div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> </div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryAddrOf(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     <span class="keywordflow">if</span> (isa<MemberPointerType>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>())) <span class="comment">// never sugared</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>       <span class="keywordflow">return</span> CGF.CGM.getMemberPointerConstant(E);</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> </div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     <span class="keywordflow">return</span> EmitLValue(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>()).getAddress();</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryDeref(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</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#a0ee6d74a089fe24d755d9cfd8bceef3f">isVoidType</a>())</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>       <span class="keywordflow">return</span> Visit(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>()); <span class="comment">// the actual value should be unused</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     <span class="keywordflow">return</span> EmitLoadOfLValue(E);</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   }</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryPlus(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     <span class="comment">// This differs from gcc, though, most likely due to a bug in gcc.</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     TestAndClearIgnoreResultAssign();</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     <span class="keywordflow">return</span> Visit(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>());</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryMinus    (<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E);</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryNot      (<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E);</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryLNot     (<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E);</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryReal     (<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E);</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryImag     (<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E);</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryExtension(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     <span class="keywordflow">return</span> Visit(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>());</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   }</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> </div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   <span class="comment">// C++</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitMaterializeTemporaryExpr(<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> *E) {</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     <span class="keywordflow">return</span> EmitLoadOfLValue(E);</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   }</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> </div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCXXDefaultArgExpr(<a class="code" href="classclang_1_1CXXDefaultArgExpr.html" title="A default argument (C++ [dcl.fct.default]).">CXXDefaultArgExpr</a> *DAE) {</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     <span class="keywordflow">return</span> Visit(DAE-><a class="code" href="classclang_1_1CXXDefaultArgExpr.html#a6b83957a9f1fdde9130e0970c8d5b30d">getExpr</a>());</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   }</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCXXDefaultInitExpr(<a class="code" href="classclang_1_1CXXDefaultInitExpr.html" title="A use of a default initializer in a constructor or in aggregate initialization.">CXXDefaultInitExpr</a> *DIE) {</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1CXXDefaultInitExprScope.html">CodeGenFunction::CXXDefaultInitExprScope</a> <a class="code" href="classclang_1_1Scope.html">Scope</a>(CGF);</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>     <span class="keywordflow">return</span> Visit(DIE-><a class="code" href="classclang_1_1CXXDefaultInitExpr.html#a6879918eef5f3f76e80427766f6a954c" title="Get the initialization expression that will be used.">getExpr</a>());</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   }</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCXXThisExpr(<a class="code" href="classclang_1_1CXXThisExpr.html" title="Represents the this expression in C++.">CXXThisExpr</a> *TE) {</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     <span class="keywordflow">return</span> CGF.LoadCXXThis();</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   }</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitExprWithCleanups(<a class="code" href="classclang_1_1ExprWithCleanups.html">ExprWithCleanups</a> *E) {</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     CGF.enterFullExpression(E);</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html" title="Enters a new scope for capturing cleanups, all of which will be executed once the scope is exited...">CodeGenFunction::RunCleanupsScope</a> <a class="code" href="classclang_1_1Scope.html">Scope</a>(CGF);</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     <span class="keywordflow">return</span> Visit(E-><a class="code" href="classclang_1_1ExprWithCleanups.html#aea629f8b6da8f66df2207e7efe9a07a0">getSubExpr</a>());</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>   }</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCXXNewExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNewExpr.html" title="Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...">CXXNewExpr</a> *E) {</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keywordflow">return</span> CGF.EmitCXXNewExpr(E);</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   }</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCXXDeleteExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDeleteExpr.html" title="Represents a delete expression for memory deallocation and destructor calls, e.g. "delete[] pArray"...">CXXDeleteExpr</a> *E) {</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>     CGF.EmitCXXDeleteExpr(E);</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   }</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitUnaryTypeTraitExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryTypeTraitExpr.html" title="Represents a GCC or MS unary type trait, as used in the implementation of TR1/C++11 type trait templa...">UnaryTypeTraitExpr</a> *E) {</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt1(E-><a class="code" href="classclang_1_1UnaryTypeTraitExpr.html#a455bba5c99667fc3211da8b02cdf6b53">getValue</a>());</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   }</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> </div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitBinaryTypeTraitExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryTypeTraitExpr.html" title="Represents a GCC or MS binary type trait, as used in the implementation of TR1/C++11 type trait templ...">BinaryTypeTraitExpr</a> *E) {</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     <span class="keywordflow">return</span> llvm::ConstantInt::get(ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()), E-><a class="code" href="classclang_1_1BinaryTypeTraitExpr.html#a22cb7e7dd7e71d96809a85927ac419f4">getValue</a>());</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   }</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitArrayTypeTraitExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayTypeTraitExpr.html" title="An Embarcadero array type trait, as used in the implementation of __array_rank and __array_extent...">ArrayTypeTraitExpr</a> *E) {</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     <span class="keywordflow">return</span> llvm::ConstantInt::get(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32Ty(), E-><a class="code" href="classclang_1_1ArrayTypeTraitExpr.html#a81ed1844459398f0ea927be80a0f0c98">getValue</a>());</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   }</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitExpressionTraitExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1ExpressionTraitExpr.html" title="An expression trait intrinsic.">ExpressionTraitExpr</a> *E) {</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <span class="keywordflow">return</span> llvm::ConstantInt::get(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt1Ty(), E-><a class="code" href="classclang_1_1ExpressionTraitExpr.html#a21cdb4088cedf320255ea21847f51465">getValue</a>());</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   }</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> </div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCXXPseudoDestructorExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXPseudoDestructorExpr.html" title="Represents a C++ pseudo-destructor (C++ [expr.pseudo]).">CXXPseudoDestructorExpr</a> *E) {</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     <span class="comment">// C++ [expr.pseudo]p1:</span></div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     <span class="comment">//   The result shall only be used as the operand for the function call</span></div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     <span class="comment">//   operator (), and the result of such a call has type void. The only</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     <span class="comment">//   effect is the evaluation of the postfix-expression before the dot or</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="comment">//   arrow.</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     CGF.EmitScalarExpr(E-><a class="code" href="classclang_1_1CXXPseudoDestructorExpr.html#a6bc387d054b73015ef372dde83ef1f56">getBase</a>());</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   }</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> </div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCXXNullPtrLiteralExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNullPtrLiteralExpr.html" title="The null pointer literal (C++11 [lex.nullptr])">CXXNullPtrLiteralExpr</a> *E) {</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     <span class="keywordflow">return</span> EmitNullValue(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   }</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span> </div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCXXThrowExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXThrowExpr.html" title="A C++ throw-expression (C++ [except.throw]).">CXXThrowExpr</a> *E) {</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>     CGF.EmitCXXThrowExpr(E);</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>   }</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span> </div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitCXXNoexceptExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNoexceptExpr.html" title="Represents a C++11 noexcept expression (C++ [expr.unary.noexcept]).">CXXNoexceptExpr</a> *E) {</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt1(E-><a class="code" href="classclang_1_1CXXNoexceptExpr.html#a27ce9d70f42ff93761a5fcab966ce542">getValue</a>());</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>   }</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span> </div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>   <span class="comment">// Binary Operators.</span></div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitMul(<span class="keyword">const</span> BinOpInfo &Ops) {</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     <span class="keywordflow">if</span> (Ops.Ty->isSignedIntegerOrEnumerationType()) {</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       <span class="keywordflow">switch</span> (CGF.getLangOpts().getSignedOverflowBehavior()) {</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>       <span class="keywordflow">case</span> <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836faaceab8eb65fa9d8a4c0d22f872a709c8">LangOptions::SOB_Defined</a>:</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>         <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateMul(Ops.LHS, Ops.RHS, <span class="stringliteral">"mul"</span>);</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       <span class="keywordflow">case</span> <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836fa5d16ddadec06d387310026f5a28af2ed">LangOptions::SOB_Undefined</a>:</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>         <span class="keywordflow">if</span> (!CGF.SanOpts->SignedIntegerOverflow)</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>           <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateNSWMul(Ops.LHS, Ops.RHS, <span class="stringliteral">"mul"</span>);</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>         <span class="comment">// Fall through.</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>       <span class="keywordflow">case</span> <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836fa5b02f5b72966fb28394043b2a4a53eac">LangOptions::SOB_Trapping</a>:</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>         <span class="keywordflow">return</span> EmitOverflowCheckedBinOp(Ops);</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>       }</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     }</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> </div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     <span class="keywordflow">if</span> (Ops.Ty->isUnsignedIntegerType() && CGF.SanOpts->UnsignedIntegerOverflow)</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>       <span class="keywordflow">return</span> EmitOverflowCheckedBinOp(Ops);</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span> </div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>     <span class="keywordflow">if</span> (Ops.LHS->getType()->isFPOrFPVectorTy())</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>       <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFMul(Ops.LHS, Ops.RHS, <span class="stringliteral">"mul"</span>);</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateMul(Ops.LHS, Ops.RHS, <span class="stringliteral">"mul"</span>);</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>   }<span class="comment"></span></div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> <span class="comment">  /// Create a binary op that checks for overflow.</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> <span class="comment">  /// Currently only supports +, - and *.</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> <span class="comment"></span>  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitOverflowCheckedBinOp(<span class="keyword">const</span> BinOpInfo &Ops);</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   <span class="comment">// Check for undefined division and modulus behaviors.</span></div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <span class="keywordtype">void</span> EmitUndefinedBehaviorIntegerDivAndRemCheck(<span class="keyword">const</span> BinOpInfo &Ops,</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>                                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Zero,<span class="keywordtype">bool</span> isDiv);</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>   <span class="comment">// Common helper for getting how wide LHS of shift is.</span></div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   <span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *GetWidthMinusOneValue(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>* LHS,<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>* RHS);</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitDiv(<span class="keyword">const</span> BinOpInfo &Ops);</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitRem(<span class="keyword">const</span> BinOpInfo &Ops);</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitAdd(<span class="keyword">const</span> BinOpInfo &Ops);</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitSub(<span class="keyword">const</span> BinOpInfo &Ops);</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitShl(<span class="keyword">const</span> BinOpInfo &Ops);</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitShr(<span class="keyword">const</span> BinOpInfo &Ops);</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitAnd(<span class="keyword">const</span> BinOpInfo &Ops) {</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAnd(Ops.LHS, Ops.RHS, <span class="stringliteral">"and"</span>);</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>   }</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitXor(<span class="keyword">const</span> BinOpInfo &Ops) {</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateXor(Ops.LHS, Ops.RHS, <span class="stringliteral">"xor"</span>);</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>   }</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitOr (<span class="keyword">const</span> BinOpInfo &Ops) {</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateOr(Ops.LHS, Ops.RHS, <span class="stringliteral">"or"</span>);</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>   }</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span> </div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>   BinOpInfo EmitBinOps(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E);</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> EmitCompoundAssignLValue(<span class="keyword">const</span> <a class="code" href="classclang_1_1CompoundAssignOperator.html">CompoundAssignOperator</a> *E,</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *(ScalarExprEmitter::*F)(<span class="keyword">const</span> BinOpInfo &),</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *&Result);</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span> </div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitCompoundAssign(<span class="keyword">const</span> <a class="code" href="classclang_1_1CompoundAssignOperator.html">CompoundAssignOperator</a> *E,</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *(ScalarExprEmitter::*F)(<span class="keyword">const</span> BinOpInfo &));</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span> </div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>   <span class="comment">// Binary operators and binary compound assignment operators.</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno"><a class="code" href="CGExprScalar_8cpp.html#a3a7986fc305580ca6c6fe41bdade5783">  465</a></span> <span class="preprocessor">#define HANDLEBINOP(OP) \</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span> <span class="preprocessor">  Value *VisitBin ## OP(const BinaryOperator *E) {                         \</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span> <span class="preprocessor">    return Emit ## OP(EmitBinOps(E));                                      \</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span> <span class="preprocessor">  }                                                                        \</span></div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span> <span class="preprocessor">  Value *VisitBin ## OP ## Assign(const CompoundAssignOperator *E) {       \</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span> <span class="preprocessor">    return EmitCompoundAssign(E, &ScalarExprEmitter::Emit ## OP);          \</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span> <span class="preprocessor">  }</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span> <span class="preprocessor"></span>  <a class="code" href="CGExprScalar_8cpp.html#a3a7986fc305580ca6c6fe41bdade5783">HANDLEBINOP</a>(Mul)</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7986fc305580ca6c6fe41bdade5783">HANDLEBINOP</a>(Div)</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7986fc305580ca6c6fe41bdade5783">HANDLEBINOP</a>(Rem)</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7986fc305580ca6c6fe41bdade5783">HANDLEBINOP</a>(Add)</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7986fc305580ca6c6fe41bdade5783">HANDLEBINOP</a>(Sub)</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7986fc305580ca6c6fe41bdade5783">HANDLEBINOP</a>(Shl)</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7986fc305580ca6c6fe41bdade5783">HANDLEBINOP</a>(Shr)</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7986fc305580ca6c6fe41bdade5783">HANDLEBINOP</a>(<a class="code" href="namespaceclang_1_1prec.html#a9bfbe31f4770359ea44ad42e7c7ed8ffa9d7a7abf42694a4a2d4f1f322cf62d5c">And</a>)</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7986fc305580ca6c6fe41bdade5783">HANDLEBINOP</a>(Xor)</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7986fc305580ca6c6fe41bdade5783">HANDLEBINOP</a>(Or)</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span> <span class="preprocessor">#undef HANDLEBINOP</span></div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>   <span class="comment">// Comparisons.</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *EmitCompare(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E, <span class="keywordtype">unsigned</span> UICmpOpc,</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>                      <span class="keywordtype">unsigned</span> SICmpOpc, <span class="keywordtype">unsigned</span> FCmpOpc);</div>
+<div class="line"><a name="l00487"></a><span class="lineno"><a class="code" href="CGExprScalar_8cpp.html#aea3cac1e2d2191cf82ae1b63e4db4236">  487</a></span> <span class="preprocessor">#define VISITCOMP(CODE, UI, SI, FP) \</span></div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span> <span class="preprocessor">    Value *VisitBin##CODE(const BinaryOperator *E) { \</span></div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span> <span class="preprocessor">      return EmitCompare(E, llvm::ICmpInst::UI, llvm::ICmpInst::SI, \</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> <span class="preprocessor">                         llvm::FCmpInst::FP); }</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> <span class="preprocessor"></span>  <a class="code" href="CGExprScalar_8cpp.html#aea3cac1e2d2191cf82ae1b63e4db4236">VISITCOMP</a>(LT, ICMP_ULT, ICMP_SLT, FCMP_OLT)</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>   <a class="code" href="CGExprScalar_8cpp.html#aea3cac1e2d2191cf82ae1b63e4db4236">VISITCOMP</a>(GT, ICMP_UGT, ICMP_SGT, FCMP_OGT)</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>   <a class="code" href="CGExprScalar_8cpp.html#aea3cac1e2d2191cf82ae1b63e4db4236">VISITCOMP</a>(LE, ICMP_ULE, ICMP_SLE, FCMP_OLE)</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>   <a class="code" href="CGExprScalar_8cpp.html#aea3cac1e2d2191cf82ae1b63e4db4236">VISITCOMP</a>(GE, ICMP_UGE, ICMP_SGE, FCMP_OGE)</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>   <a class="code" href="CGExprScalar_8cpp.html#aea3cac1e2d2191cf82ae1b63e4db4236">VISITCOMP</a>(EQ, ICMP_EQ , ICMP_EQ , FCMP_OEQ)</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>   <a class="code" href="CGExprScalar_8cpp.html#aea3cac1e2d2191cf82ae1b63e4db4236">VISITCOMP</a>(NE, ICMP_NE , ICMP_NE , FCMP_UNE)</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> <span class="preprocessor">#undef VISITCOMP</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitBinAssign     (<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E);</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span> </div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitBinLAnd       (<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E);</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitBinLOr        (<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E);</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitBinComma      (<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E);</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> </div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitBinPtrMemD(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { <span class="keywordflow">return</span> EmitLoadOfLValue(E); }</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitBinPtrMemI(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { <span class="keywordflow">return</span> EmitLoadOfLValue(E); }</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> </div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>   <span class="comment">// Other Operators.</span></div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitBlockExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1BlockExpr.html">BlockExpr</a> *BE);</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitAbstractConditionalOperator(<span class="keyword">const</span> <a class="code" href="classclang_1_1AbstractConditionalOperator.html">AbstractConditionalOperator</a> *);</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitChooseExpr(<a class="code" href="classclang_1_1ChooseExpr.html">ChooseExpr</a> *CE);</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitVAArgExpr(<a class="code" href="classclang_1_1VAArgExpr.html" title="VAArgExpr, used for the builtin function __builtin_va_arg.">VAArgExpr</a> *VE);</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitObjCStringLiteral(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCStringLiteral.html">ObjCStringLiteral</a> *E) {</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     <span class="keywordflow">return</span> CGF.EmitObjCStringLiteral(E);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitObjCBoxedExpr(<a class="code" href="classclang_1_1ObjCBoxedExpr.html">ObjCBoxedExpr</a> *E) {</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>     <span class="keywordflow">return</span> CGF.EmitObjCBoxedExpr(E);</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>   }</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitObjCArrayLiteral(<a class="code" href="classclang_1_1ObjCArrayLiteral.html">ObjCArrayLiteral</a> *E) {</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     <span class="keywordflow">return</span> CGF.EmitObjCArrayLiteral(E);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitObjCDictionaryLiteral(<a class="code" href="classclang_1_1ObjCDictionaryLiteral.html">ObjCDictionaryLiteral</a> *E) {</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     <span class="keywordflow">return</span> CGF.EmitObjCDictionaryLiteral(E);</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   }</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitAsTypeExpr(<a class="code" href="classclang_1_1AsTypeExpr.html">AsTypeExpr</a> *CE);</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VisitAtomicExpr(<a class="code" href="classclang_1_1AtomicExpr.html">AtomicExpr</a> *AE);</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="comment">// end anonymous namespace.</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span> </div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span> <span class="comment">//                                Utilities</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span> <span class="comment"></span></div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span> <span class="comment">/// EmitConversionToBool - Convert the specified expression value to a</span></div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span> <span class="comment">/// boolean (i1) truth value.  This is equivalent to "Val != 0".</span></div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span> <span class="comment"></span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *ScalarExprEmitter::EmitConversionToBool(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Src, <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcType) {</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>   assert(SrcType.<a class="code" href="classclang_1_1QualType.html#aa63a8e7edb01361c17917a8a865e3077">isCanonical</a>() && <span class="stringliteral">"EmitScalarConversion strips typedefs"</span>);</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span> </div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>   <span class="keywordflow">if</span> (SrcType-><a class="code" href="classclang_1_1Type.html#a1c534c15a8299e5d31f356edb725c31f" title="Floating point categories.">isRealFloatingType</a>())</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     <span class="keywordflow">return</span> EmitFloatToBoolConversion(Src);</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>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT = dyn_cast<MemberPointerType>(SrcType))</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">return</span> CGF.CGM.getCXXABI().EmitMemberPointerIsNotNull(CGF, Src, MPT);</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span> </div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>   assert((SrcType-><a class="code" href="classclang_1_1Type.html#a8bde7a56623fd89e9efafde792c56dac">isIntegerType</a>() || isa<llvm::PointerType>(Src->getType())) &&</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>          <span class="stringliteral">"Unknown scalar type to convert"</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>   <span class="keywordflow">if</span> (isa<llvm::IntegerType>(Src->getType()))</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>     <span class="keywordflow">return</span> EmitIntToBoolConversion(Src);</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span> </div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>   assert(isa<llvm::PointerType>(Src->getType()));</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>   <span class="keywordflow">return</span> EmitPointerToBoolConversion(Src);</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span> }</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span> </div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span> <span class="keywordtype">void</span> ScalarExprEmitter::EmitFloatConversionCheck(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *OrigSrc,</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>                                                  <a class="code" href="classclang_1_1QualType.html">QualType</a> OrigSrcType,</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>                                                  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Src, <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcType,</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>                                                  <a class="code" href="classclang_1_1QualType.html">QualType</a> DstType,</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>                                                  llvm::Type *DstTy) {</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>   <span class="keyword">using</span> llvm::APFloat;</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>   <span class="keyword">using</span> llvm::APSInt;</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>   llvm::Type *SrcTy = Src->getType();</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span> </div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Check = 0;</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>   <span class="keywordflow">if</span> (llvm::IntegerType *IntTy = dyn_cast<llvm::IntegerType>(SrcTy)) {</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     <span class="comment">// Integer to floating-point. This can fail for unsigned short -> __half</span></div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>     <span class="comment">// or unsigned __int128 -> float.</span></div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>     assert(DstType-><a class="code" href="classclang_1_1Type.html#ad8bb17d7b15f3d610afbdfe49e638220">isFloatingType</a>());</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     <span class="keywordtype">bool</span> SrcIsUnsigned = OrigSrcType-><a class="code" href="classclang_1_1Type.html#acd6b7cb40b90681ffc9728b2615e56af">isUnsignedIntegerOrEnumerationType</a>();</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span> </div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     APFloat LargestFloat =</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>       APFloat::getLargest(CGF.getContext().getFloatTypeSemantics(DstType));</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     APSInt LargestInt(IntTy->getBitWidth(), SrcIsUnsigned);</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span> </div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>     <span class="keywordtype">bool</span> IsExact;</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>     <span class="keywordflow">if</span> (LargestFloat.convertToInteger(LargestInt, APFloat::rmTowardZero,</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>                                       &IsExact) != APFloat::opOK)</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>       <span class="comment">// The range of representable values of this floating point type includes</span></div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>       <span class="comment">// all values of this integer type. Don't need an overflow check.</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span> </div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Max = llvm::ConstantInt::get(VMContext, LargestInt);</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>     <span class="keywordflow">if</span> (SrcIsUnsigned)</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>       Check = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpULE(Src, Max);</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>     <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Min = llvm::ConstantInt::get(VMContext, -LargestInt);</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *GE = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpSGE(Src, Min);</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LE = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpSLE(Src, Max);</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>       Check = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAnd(GE, LE);</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>     }</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>     <span class="keyword">const</span> llvm::fltSemantics &SrcSema =</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       CGF.getContext().getFloatTypeSemantics(OrigSrcType);</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>     <span class="keywordflow">if</span> (isa<llvm::IntegerType>(DstTy)) {</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>       <span class="comment">// Floating-point to integer. This has undefined behavior if the source is</span></div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>       <span class="comment">// +-Inf, NaN, or doesn't fit into the destination type (after truncation</span></div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>       <span class="comment">// to an integer).</span></div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>       <span class="keywordtype">unsigned</span> Width = CGF.getContext().getIntWidth(DstType);</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>       <span class="keywordtype">bool</span> Unsigned = DstType-><a class="code" href="classclang_1_1Type.html#acd6b7cb40b90681ffc9728b2615e56af">isUnsignedIntegerOrEnumerationType</a>();</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span> </div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>       APSInt Min = APSInt::getMinValue(Width, Unsigned);</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>       APFloat MinSrc(SrcSema, APFloat::uninitialized);</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       <span class="keywordflow">if</span> (MinSrc.convertFromAPInt(Min, !Unsigned, APFloat::rmTowardZero) &</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>           APFloat::opOverflow)</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>         <span class="comment">// Don't need an overflow check for lower bound. Just check for</span></div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>         <span class="comment">// -Inf/NaN.</span></div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>         MinSrc = APFloat::getInf(SrcSema, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         <span class="comment">// Find the largest value which is too small to represent (before</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>         <span class="comment">// truncation toward zero).</span></div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>         MinSrc.subtract(APFloat(SrcSema, 1), APFloat::rmTowardNegative);</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>       APSInt Max = APSInt::getMaxValue(Width, Unsigned);</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>       APFloat MaxSrc(SrcSema, APFloat::uninitialized);</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>       <span class="keywordflow">if</span> (MaxSrc.convertFromAPInt(Max, !Unsigned, APFloat::rmTowardZero) &</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>           APFloat::opOverflow)</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>         <span class="comment">// Don't need an overflow check for upper bound. Just check for</span></div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>         <span class="comment">// +Inf/NaN.</span></div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>         MaxSrc = APFloat::getInf(SrcSema, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>         <span class="comment">// Find the smallest value which is too large to represent (before</span></div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>         <span class="comment">// truncation toward zero).</span></div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>         MaxSrc.add(APFloat(SrcSema, 1), APFloat::rmTowardPositive);</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span> </div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>       <span class="comment">// If we're converting from __half, convert the range to float to match</span></div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>       <span class="comment">// the type of src.</span></div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>       <span class="keywordflow">if</span> (OrigSrcType-><a class="code" href="classclang_1_1Type.html#adc64f48c3e6a14cca9fed4350d42b045">isHalfType</a>()) {</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>         <span class="keyword">const</span> llvm::fltSemantics &<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> =</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>           CGF.getContext().getFloatTypeSemantics(SrcType);</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>         <span class="keywordtype">bool</span> IsInexact;</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>         MinSrc.convert(Sema, APFloat::rmTowardZero, &IsInexact);</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>         MaxSrc.convert(Sema, APFloat::rmTowardZero, &IsInexact);</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> </div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *GE =</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>         <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmpOGT(Src, llvm::ConstantFP::get(VMContext, MinSrc));</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LE =</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>         <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmpOLT(Src, llvm::ConstantFP::get(VMContext, MaxSrc));</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>       Check = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAnd(GE, LE);</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>       <span class="comment">// FIXME: Maybe split this sanitizer out from float-cast-overflow.</span></div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>       <span class="comment">// Floating-point to floating-point. This has undefined behavior if the</span></div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>       <span class="comment">// source is not in the range of representable values of the destination</span></div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>       <span class="comment">// type. The C and C++ standards are spectacularly unclear here. We</span></div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>       <span class="comment">// diagnose finite out-of-range conversions, but allow infinities and NaNs</span></div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>       <span class="comment">// to convert to the corresponding value in the smaller type.</span></div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>       <span class="comment">// C11 Annex F gives all such conversions defined behavior for IEC 60559</span></div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>       <span class="comment">// conforming implementations. Unfortunately, LLVM's fptrunc instruction</span></div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>       <span class="comment">// does not.</span></div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span> </div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>       <span class="comment">// Converting from a lower rank to a higher rank can never have</span></div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>       <span class="comment">// undefined behavior, since higher-rank types must have a superset</span></div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>       <span class="comment">// of values of lower-rank types.</span></div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>       <span class="keywordflow">if</span> (CGF.getContext().getFloatingTypeOrder(OrigSrcType, DstType) != 1)</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>         <span class="keywordflow">return</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>       assert(!OrigSrcType-><a class="code" href="classclang_1_1Type.html#adc64f48c3e6a14cca9fed4350d42b045">isHalfType</a>() &&</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>              <span class="stringliteral">"should not check conversion from __half, it has the lowest rank"</span>);</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span> </div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>       <span class="keyword">const</span> llvm::fltSemantics &DstSema =</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>         CGF.getContext().getFloatTypeSemantics(DstType);</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>       APFloat MinBad = APFloat::getLargest(DstSema, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>       APFloat MaxBad = APFloat::getInf(DstSema, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span> </div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>       <span class="keywordtype">bool</span> IsInexact;</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>       MinBad.convert(SrcSema, APFloat::rmTowardZero, &IsInexact);</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>       MaxBad.convert(SrcSema, APFloat::rmTowardZero, &IsInexact);</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span> </div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *AbsSrc = CGF.EmitNounwindRuntimeCall(</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>         CGF.CGM.getIntrinsic(<a class="code" href="tgmath_8h.html#aac50d9236b0e64ccb01905b294a1ea86">llvm::Intrinsic::fabs</a>, Src->getType()), Src);</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *GE =</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>         <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmpOGT(AbsSrc, llvm::ConstantFP::get(VMContext, MinBad));</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LE =</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>         <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmpOLT(AbsSrc, llvm::ConstantFP::get(VMContext, MaxBad));</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>       Check = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateNot(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAnd(GE, LE));</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>     }</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>   }</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span> </div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>   <span class="comment">// FIXME: Provide a SourceLocation.</span></div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   llvm::Constant *StaticArgs[] = {</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>     CGF.EmitCheckTypeDescriptor(OrigSrcType),</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>     CGF.EmitCheckTypeDescriptor(DstType)</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   };</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>   CGF.EmitCheck(Check, <span class="stringliteral">"float_cast_overflow"</span>, StaticArgs, OrigSrc,</div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>                 <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4f34b3f7004d2d19c609c90b3a7349daade9f755044677d5aa1ef967325abca54" title="Check supports recovering, allows user to specify which.">CodeGenFunction::CRK_Recoverable</a>);</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span> }</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span> <span class="comment"></span></div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span> <span class="comment">/// EmitScalarConversion - Emit a conversion from the specified type to the</span></div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span> <span class="comment">/// specified destination type, both of which are LLVM scalar types.</span></div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span> <span class="comment"></span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *ScalarExprEmitter::EmitScalarConversion(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Src, <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcType,</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>                                                <a class="code" href="classclang_1_1QualType.html">QualType</a> DstType) {</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>   SrcType = CGF.getContext().<a class="code" href="classclang_1_1QualType.html#abae06108b779ed32a4dc18fe8802fd6e">getCanonicalType</a>(SrcType);</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>   DstType = CGF.getContext().<a class="code" href="classclang_1_1QualType.html#abae06108b779ed32a4dc18fe8802fd6e">getCanonicalType</a>(DstType);</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>   <span class="keywordflow">if</span> (SrcType == DstType) <span class="keywordflow">return</span> Src;</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span> </div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>   <span class="keywordflow">if</span> (DstType-><a class="code" href="classclang_1_1Type.html#a0ee6d74a089fe24d755d9cfd8bceef3f">isVoidType</a>()) <span class="keywordflow">return</span> 0;</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *OrigSrc = Src;</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> OrigSrcType = SrcType;</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>   llvm::Type *SrcTy = Src->getType();</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span> </div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>   <span class="comment">// If casting to/from storage-only half FP, use special intrinsics.</span></div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>   <span class="keywordflow">if</span> (SrcType-><a class="code" href="classclang_1_1Type.html#adc64f48c3e6a14cca9fed4350d42b045">isHalfType</a>() && !CGF.getContext().getLangOpts().NativeHalfType) {</div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     Src = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateCall(CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_from_fp16), Src);</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>     SrcType = CGF.getContext().FloatTy;</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>     SrcTy = CGF.FloatTy;</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>   }</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span> </div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>   <span class="comment">// Handle conversions to bool first, they are special: comparisons against 0.</span></div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   <span class="keywordflow">if</span> (DstType-><a class="code" href="classclang_1_1Type.html#ac16047fbf3b5325d6528d8557803b0cc">isBooleanType</a>())</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     <span class="keywordflow">return</span> EmitConversionToBool(Src, SrcType);</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span> </div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>   llvm::Type *DstTy = ConvertType(DstType);</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span> </div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>   <span class="comment">// Ignore conversions like int -> uint.</span></div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>   <span class="keywordflow">if</span> (SrcTy == DstTy)</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>     <span class="keywordflow">return</span> Src;</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span> </div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>   <span class="comment">// Handle pointer conversions next: pointers can only be converted to/from</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>   <span class="comment">// other pointers and integers. Check for pointer types in terms of LLVM, as</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>   <span class="comment">// some native types (like Obj-C id) may map to a pointer type.</span></div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>   <span class="keywordflow">if</span> (isa<llvm::PointerType>(DstTy)) {</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>     <span class="comment">// The source value may be an integer, or a pointer.</span></div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>     <span class="keywordflow">if</span> (isa<llvm::PointerType>(SrcTy))</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>       <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span> </div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>     assert(SrcType-><a class="code" href="classclang_1_1Type.html#a8bde7a56623fd89e9efafde792c56dac">isIntegerType</a>() && <span class="stringliteral">"Not ptr->ptr or int->ptr conversion?"</span>);</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>     <span class="comment">// First, convert to the correct width so that we control the kind of</span></div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>     <span class="comment">// extension.</span></div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     llvm::Type *MiddleTy = CGF.IntPtrTy;</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     <span class="keywordtype">bool</span> InputSigned = SrcType-><a class="code" href="classclang_1_1Type.html#ac1a93888d84731955cd5e95d6510aea6">isSignedIntegerOrEnumerationType</a>();</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a>* IntResult =</div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>         <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateIntCast(Src, MiddleTy, InputSigned, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>     <span class="comment">// Then, cast to pointer.</span></div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateIntToPtr(IntResult, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>   }</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span> </div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>   <span class="keywordflow">if</span> (isa<llvm::PointerType>(SrcTy)) {</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     <span class="comment">// Must be an ptr to int cast.</span></div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>     assert(isa<llvm::IntegerType>(DstTy) && <span class="stringliteral">"not ptr->int?"</span>);</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreatePtrToInt(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>   }</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span> </div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>   <span class="comment">// A scalar can be splatted to an extended vector of the same element type</span></div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>   <span class="keywordflow">if</span> (DstType-><a class="code" href="classclang_1_1Type.html#aa46cb894fc6f6f4e43d48232b6129d0b">isExtVectorType</a>() && !SrcType-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>()) {</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>     <span class="comment">// Cast the scalar to element type</span></div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> EltTy = DstType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ExtVectorType.html">ExtVectorType</a>>()-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Elt = EmitScalarConversion(Src, SrcType, EltTy);</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span> </div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>     <span class="comment">// Splat the element across to all elements</span></div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>     <span class="keywordtype">unsigned</span> NumElements = cast<llvm::VectorType>(DstTy)->getNumElements();</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateVectorSplat(NumElements, Elt, <span class="stringliteral">"splat"</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">  757</span> </div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span>   <span class="comment">// Allow bitcast from vector to integer/fp of the same size.</span></div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>   <span class="keywordflow">if</span> (isa<llvm::VectorType>(SrcTy) ||</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>       isa<llvm::VectorType>(DstTy))</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span> </div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>   <span class="comment">// Finally, we have the arithmetic types: real int/float.</span></div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Res = <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>   llvm::Type *ResTy = DstTy;</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span> </div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>   <span class="comment">// An overflowing conversion has undefined behavior if either the source type</span></div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>   <span class="comment">// or the destination type is a floating-point type.</span></div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>   <span class="keywordflow">if</span> (CGF.SanOpts->FloatCastOverflow &&</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>       (OrigSrcType-><a class="code" href="classclang_1_1Type.html#ad8bb17d7b15f3d610afbdfe49e638220">isFloatingType</a>() || DstType-><a class="code" href="classclang_1_1Type.html#ad8bb17d7b15f3d610afbdfe49e638220">isFloatingType</a>()))</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>     EmitFloatConversionCheck(OrigSrc, OrigSrcType, Src, SrcType, DstType,</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>                              DstTy);</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span> </div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>   <span class="comment">// Cast to half via float</span></div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>   <span class="keywordflow">if</span> (DstType-><a class="code" href="classclang_1_1Type.html#adc64f48c3e6a14cca9fed4350d42b045">isHalfType</a>() && !CGF.getContext().getLangOpts().NativeHalfType)</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>     DstTy = CGF.FloatTy;</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span> </div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>   <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (isa<llvm::IntegerType>(SrcTy)) {</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>     <span class="keywordtype">bool</span> InputSigned = SrcType-><a class="code" href="classclang_1_1Type.html#ac1a93888d84731955cd5e95d6510aea6">isSignedIntegerOrEnumerationType</a>();</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>     <span class="keywordflow">if</span> (isa<llvm::IntegerType>(DstTy))</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateIntCast(Src, DstTy, InputSigned, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (InputSigned)</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSIToFP(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateUIToFP(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isa<llvm::IntegerType>(DstTy)) {</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>     assert(SrcTy->isFloatingPointTy() && <span class="stringliteral">"Unknown real conversion"</span>);</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>     <span class="keywordflow">if</span> (DstType-><a class="code" href="classclang_1_1Type.html#ac1a93888d84731955cd5e95d6510aea6">isSignedIntegerOrEnumerationType</a>())</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFPToSI(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFPToUI(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>     assert(SrcTy->isFloatingPointTy() && DstTy->isFloatingPointTy() &&</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>            <span class="stringliteral">"Unknown real conversion"</span>);</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     <span class="keywordflow">if</span> (DstTy->getTypeID() < SrcTy->getTypeID())</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFPTrunc(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFPExt(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>   }</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span> </div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>   <span class="keywordflow">if</span> (DstTy != ResTy) {</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>     assert(ResTy->isIntegerTy(16) && <span class="stringliteral">"Only half FP requires extra conversion"</span>);</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>     Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateCall(CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_to_fp16), Res);</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>   }</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span> </div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>   <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span> }</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span> <span class="comment"></span></div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span> <span class="comment">/// EmitComplexToScalarConversion - Emit a conversion from the specified complex</span></div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span> <span class="comment">/// type to the specified destination type, where the destination type is an</span></div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span> <span class="comment">/// LLVM scalar type.</span></div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span> <span class="comment"></span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *ScalarExprEmitter::</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span> EmitComplexToScalarConversion(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae417ed4971c18c5ce0607e1be62ec117">CodeGenFunction::ComplexPairTy</a> Src,</div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>                               <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcTy, <a class="code" href="classclang_1_1QualType.html">QualType</a> DstTy) {</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>   <span class="comment">// Get the source element type.</span></div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>   SrcTy = SrcTy-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1ComplexType.html">ComplexType</a>>()-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span> </div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>   <span class="comment">// Handle conversions to bool first, they are special: comparisons against 0.</span></div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>   <span class="keywordflow">if</span> (DstTy-><a class="code" href="classclang_1_1Type.html#ac16047fbf3b5325d6528d8557803b0cc">isBooleanType</a>()) {</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>     <span class="comment">//  Complex != 0  -> (Real != 0) | (Imag != 0)</span></div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>     Src.first  = EmitScalarConversion(Src.first, SrcTy, DstTy);</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>     Src.second = EmitScalarConversion(Src.second, SrcTy, DstTy);</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateOr(Src.first, Src.second, <span class="stringliteral">"tobool"</span>);</div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>   }</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="comment">// C99 6.3.1.7p2: "When a value of complex type is converted to a real type,</span></div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>   <span class="comment">// the imaginary part of the complex value is discarded and the value of the</span></div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>   <span class="comment">// real part is converted according to the conversion rules for the</span></div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>   <span class="comment">// corresponding real type.</span></div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>   <span class="keywordflow">return</span> EmitScalarConversion(Src.first, SrcTy, DstTy);</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span> }</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span> </div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *ScalarExprEmitter::EmitNullValue(<a class="code" href="classclang_1_1QualType.html">QualType</a> Ty) {</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>   <span class="keywordflow">return</span> CGF.EmitFromMemory(CGF.CGM.EmitNullConstant(Ty), Ty);</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span> }</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span> <span class="comment"></span></div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span> <span class="comment">/// \brief Emit a sanitization check for the given "binary" operation (which</span></div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span> <span class="comment">/// might actually be a unary increment which has been lowered to a binary</span></div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span> <span class="comment">/// operation). The check passes if \p Check, which is an \c i1, is \c true.</span></div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span> <span class="comment"></span><span class="keywordtype">void</span> ScalarExprEmitter::EmitBinOpCheck(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Check, <span class="keyword">const</span> BinOpInfo &Info) {</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>   StringRef CheckName;</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Constant *, 4></a> StaticData;</div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Value *, 2></a> DynamicData;</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span> </div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>   <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">BinaryOperatorKind</a> Opcode = Info.Opcode;</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1BinaryOperator.html#a170ee6f712733d64889024e229c87078">BinaryOperator::isCompoundAssignmentOp</a>(Opcode))</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>     Opcode = <a class="code" href="classclang_1_1BinaryOperator.html#a552d7a7421b4a977315cbb49b93bc38c">BinaryOperator::getOpForCompoundAssignment</a>(Opcode);</div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span> </div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>   StaticData.push_back(CGF.EmitCheckSourceLocation(Info.E->getExprLoc()));</div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *UO = dyn_cast<<a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a>>(Info.E);</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>   <span class="keywordflow">if</span> (UO && UO-><a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b">getOpcode</a>() == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffad2b935758542a3bd7ecec931517483fb">UO_Minus</a>) {</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>     CheckName = <span class="stringliteral">"negate_overflow"</span>;</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     StaticData.push_back(CGF.EmitCheckTypeDescriptor(UO-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     DynamicData.push_back(Info.RHS);</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1BinaryOperator.html#a381f53a5820f86d481f7788d8a70f49a">BinaryOperator::isShiftOp</a>(Opcode)) {</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>       <span class="comment">// Shift LHS negative or too large, or RHS out of bounds.</span></div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>       CheckName = <span class="stringliteral">"shift_out_of_bounds"</span>;</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</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>(Info.E);</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>       StaticData.push_back(</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>         CGF.EmitCheckTypeDescriptor(BO-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>       StaticData.push_back(</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>         CGF.EmitCheckTypeDescriptor(BO-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Opcode == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a58e04dd371aa4ff24af1f1ebc04739a5">BO_Div</a> || Opcode == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a91a7868de509af06d04ef1c6e21383be">BO_Rem</a>) {</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>       <span class="comment">// Divide or modulo by zero, or signed overflow (eg INT_MAX / -1).</span></div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>       CheckName = <span class="stringliteral">"divrem_overflow"</span>;</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>       StaticData.push_back(CGF.EmitCheckTypeDescriptor(Info.Ty));</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>       <span class="comment">// Signed arithmetic overflow (+, -, *).</span></div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>       <span class="keywordflow">switch</span> (Opcode) {</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abe63fd1a02a7d1191c3b2fd102b983bd">BO_Add</a>: CheckName = <span class="stringliteral">"add_overflow"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af84c54a9c8a061371180b3e8b25d4c3f">BO_Sub</a>: CheckName = <span class="stringliteral">"sub_overflow"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a8e23022cab4ed3bcb24b7acd01f623e9">BO_Mul</a>: CheckName = <span class="stringliteral">"mul_overflow"</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>       <span class="keywordflow">default</span>: llvm_unreachable(<span class="stringliteral">"unexpected opcode for bin op check"</span>);</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>       }</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>       StaticData.push_back(CGF.EmitCheckTypeDescriptor(Info.Ty));</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>     }</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>     DynamicData.push_back(Info.LHS);</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>     DynamicData.push_back(Info.RHS);</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>   }</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span> </div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>   CGF.EmitCheck(Check, CheckName, StaticData, DynamicData,</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>                 <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4f34b3f7004d2d19c609c90b3a7349daade9f755044677d5aa1ef967325abca54" title="Check supports recovering, allows user to specify which.">CodeGenFunction::CRK_Recoverable</a>);</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span> }</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span> </div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span> <span class="comment">//                            Visitor Methods</span></div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span> </div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *ScalarExprEmitter::VisitExpr(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) {</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>   CGF.ErrorUnsupported(E, <span class="stringliteral">"scalar expression"</span>);</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</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#a0ee6d74a089fe24d755d9cfd8bceef3f">isVoidType</a>())</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>   <span class="keywordflow">return</span> llvm::UndefValue::get(CGF.ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span> }</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span> </div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *ScalarExprEmitter::VisitShuffleVectorExpr(<a class="code" href="classclang_1_1ShuffleVectorExpr.html">ShuffleVectorExpr</a> *E) {</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>   <span class="comment">// Vector Mask Case</span></div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1ShuffleVectorExpr.html#ad2eac086d9a5b0a4ce131f56b20bbb8a">getNumSubExprs</a>() == 2 ||</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>       (E-><a class="code" href="classclang_1_1ShuffleVectorExpr.html#ad2eac086d9a5b0a4ce131f56b20bbb8a">getNumSubExprs</a>() == 3 && E-><a class="code" href="classclang_1_1ShuffleVectorExpr.html#af7d74eeef9d30e879b7e34077879b7a6" title="getExpr - Return the Expr at the specified index.">getExpr</a>(2)-><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="l00901"></a><span class="lineno">  901</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *LHS = CGF.EmitScalarExpr(E-><a class="code" href="classclang_1_1ShuffleVectorExpr.html#af7d74eeef9d30e879b7e34077879b7a6" title="getExpr - Return the Expr at the specified index.">getExpr</a>(0));</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *RHS = CGF.EmitScalarExpr(E-><a class="code" href="classclang_1_1ShuffleVectorExpr.html#af7d74eeef9d30e879b7e34077879b7a6" title="getExpr - Return the Expr at the specified index.">getExpr</a>(1));</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Mask;</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span> </div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>     llvm::VectorType *LTy = cast<llvm::VectorType>(LHS->getType());</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>     <span class="keywordtype">unsigned</span> LHSElts = LTy->getNumElements();</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span> </div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1ShuffleVectorExpr.html#ad2eac086d9a5b0a4ce131f56b20bbb8a">getNumSubExprs</a>() == 3) {</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>       Mask = CGF.EmitScalarExpr(E-><a class="code" href="classclang_1_1ShuffleVectorExpr.html#af7d74eeef9d30e879b7e34077879b7a6" title="getExpr - Return the Expr at the specified index.">getExpr</a>(2));</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span> </div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>       <span class="comment">// Shuffle LHS & RHS into one input vector.</span></div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>       <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Constant*, 32></a> concat;</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != LHSElts; ++i) {</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>         concat.push_back(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(2*i));</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>         concat.push_back(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(2*i+1));</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>       }</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span> </div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>* CV = llvm::ConstantVector::get(concat);</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>       LHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateShuffleVector(LHS, RHS, CV, <span class="stringliteral">"concat"</span>);</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>       LHSElts *= 2;</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>       Mask = RHS;</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>     }</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span> </div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>     llvm::VectorType *MTy = cast<llvm::VectorType>(Mask->getType());</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>     llvm::Constant* EltMask;</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span> </div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>     EltMask = llvm::ConstantInt::get(MTy->getElementType(),</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>                                      llvm::NextPowerOf2(LHSElts-1)-1);</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span> </div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>     <span class="comment">// Mask off the high bits of each shuffle index.</span></div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *MaskBits = llvm::ConstantVector::getSplat(MTy->getNumElements(),</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>                                                      EltMask);</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>     Mask = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAnd(Mask, MaskBits, <span class="stringliteral">"mask"</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">  936</span>     <span class="comment">// newv = undef</span></div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>     <span class="comment">// mask = mask & maskbits</span></div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>     <span class="comment">// for each elt</span></div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>     <span class="comment">//   n = extract mask i</span></div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>     <span class="comment">//   x = extract val n</span></div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>     <span class="comment">//   newv = insert newv, x, i</span></div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>     llvm::VectorType *RTy = llvm::VectorType::get(LTy->getElementType(),</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>                                                   MTy->getNumElements());</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>* NewV = llvm::UndefValue::get(RTy);</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = MTy->getNumElements(); i != e; ++i) {</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *IIndx = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(i);</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Indx = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateExtractElement(Mask, IIndx, <span class="stringliteral">"shuf_idx"</span>);</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>       Indx = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateZExt(Indx, CGF.Int32Ty, <span class="stringliteral">"idx_zext"</span>);</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span> </div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *VExt = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateExtractElement(LHS, Indx, <span class="stringliteral">"shuf_elt"</span>);</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>       NewV = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInsertElement(NewV, VExt, IIndx, <span class="stringliteral">"shuf_ins"</span>);</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>     }</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>     <span class="keywordflow">return</span> NewV;</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> </div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>* V1 = CGF.EmitScalarExpr(E-><a class="code" href="classclang_1_1ShuffleVectorExpr.html#af7d74eeef9d30e879b7e34077879b7a6" title="getExpr - Return the Expr at the specified index.">getExpr</a>(0));</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>* V2 = CGF.EmitScalarExpr(E-><a class="code" href="classclang_1_1ShuffleVectorExpr.html#af7d74eeef9d30e879b7e34077879b7a6" title="getExpr - Return the Expr at the specified index.">getExpr</a>(1));</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span> </div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Constant*, 32></a> indices;</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 2; i < E-><a class="code" href="classclang_1_1ShuffleVectorExpr.html#ad2eac086d9a5b0a4ce131f56b20bbb8a">getNumSubExprs</a>(); ++i) {</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     llvm::APSInt Idx = E-><a class="code" href="classclang_1_1ShuffleVectorExpr.html#a376ba294198926e6970ba74dcfd12944">getShuffleMaskIdx</a>(CGF.getContext(), i-2);</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>     <span class="comment">// Check for -1 and output it as undef in the IR.</span></div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>     <span class="keywordflow">if</span> (Idx.isSigned() && Idx.isAllOnesValue())</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>       indices.push_back(llvm::UndefValue::get(CGF.Int32Ty));</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>       indices.push_back(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(Idx.getZExtValue()));</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>   }</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span> </div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *SV = llvm::ConstantVector::get(indices);</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateShuffleVector(V1, V2, SV, <span class="stringliteral">"shuffle"</span>);</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span> }</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span> </div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *ScalarExprEmitter::VisitConvertVectorExpr(<a class="code" href="classclang_1_1ConvertVectorExpr.html">ConvertVectorExpr</a> *E) {</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcType = E-><a class="code" href="classclang_1_1ConvertVectorExpr.html#a1cd613a03a7137639665b50a279a5e04" title="getSrcExpr - Return the Expr to be converted.">getSrcExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(),</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>            DstType = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span> </div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Src  = CGF.EmitScalarExpr(E-><a class="code" href="classclang_1_1ConvertVectorExpr.html#a1cd613a03a7137639665b50a279a5e04" title="getSrcExpr - Return the Expr to be converted.">getSrcExpr</a>());</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span> </div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>   SrcType = CGF.getContext().<a class="code" href="classclang_1_1QualType.html#abae06108b779ed32a4dc18fe8802fd6e">getCanonicalType</a>(SrcType);</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>   DstType = CGF.getContext().<a class="code" href="classclang_1_1QualType.html#abae06108b779ed32a4dc18fe8802fd6e">getCanonicalType</a>(DstType);</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>   <span class="keywordflow">if</span> (SrcType == DstType) <span class="keywordflow">return</span> Src;</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span> </div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>   assert(SrcType-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>() &&</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>          <span class="stringliteral">"ConvertVector source type must be a vector"</span>);</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>   assert(DstType-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>() &&</div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>          <span class="stringliteral">"ConvertVector destination type must be a vector"</span>);</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span> </div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>   llvm::Type *SrcTy = Src->getType();</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>   llvm::Type *DstTy = ConvertType(DstType);</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span> </div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>   <span class="comment">// Ignore conversions like int -> uint.</span></div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>   <span class="keywordflow">if</span> (SrcTy == DstTy)</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>     <span class="keywordflow">return</span> Src;</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span> </div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcEltType = SrcType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1VectorType.html">VectorType</a>>()-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>(),</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>            DstEltType = DstType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1VectorType.html">VectorType</a>>()-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span> </div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>   assert(SrcTy->isVectorTy() &&</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>          <span class="stringliteral">"ConvertVector source IR type must be a vector"</span>);</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>   assert(DstTy->isVectorTy() &&</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>          <span class="stringliteral">"ConvertVector destination IR type must be a vector"</span>);</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>   llvm::Type *SrcEltTy = SrcTy->getVectorElementType(),</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>              *DstEltTy = DstTy->getVectorElementType();</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="keywordflow">if</span> (DstEltType->isBooleanType()) {</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>     assert((SrcEltTy->isFloatingPointTy() ||</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>             isa<llvm::IntegerType>(SrcEltTy)) && <span class="stringliteral">"Unknown boolean conversion"</span>);</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> </div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Zero = llvm::Constant::getNullValue(SrcTy);</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>     <span class="keywordflow">if</span> (SrcEltTy->isFloatingPointTy()) {</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>       <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmpUNE(Src, Zero, <span class="stringliteral">"tobool"</span>);</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>       <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpNE(Src, Zero, <span class="stringliteral">"tobool"</span>);</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>   }</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> </div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>   <span class="comment">// We have the arithmetic types: real int/float.</span></div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *Res = <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</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="keywordflow">if</span> (isa<llvm::IntegerType>(SrcEltTy)) {</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>     <span class="keywordtype">bool</span> InputSigned = SrcEltType-><a class="code" href="classclang_1_1Type.html#ac1a93888d84731955cd5e95d6510aea6">isSignedIntegerOrEnumerationType</a>();</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>     <span class="keywordflow">if</span> (isa<llvm::IntegerType>(DstEltTy))</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateIntCast(Src, DstTy, InputSigned, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (InputSigned)</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSIToFP(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateUIToFP(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isa<llvm::IntegerType>(DstEltTy)) {</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     assert(SrcEltTy->isFloatingPointTy() && <span class="stringliteral">"Unknown real conversion"</span>);</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>     <span class="keywordflow">if</span> (DstEltType->isSignedIntegerOrEnumerationType())</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFPToSI(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFPToUI(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>     assert(SrcEltTy->isFloatingPointTy() && DstEltTy->isFloatingPointTy() &&</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>            <span class="stringliteral">"Unknown real conversion"</span>);</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>     <span class="keywordflow">if</span> (DstEltTy->getTypeID() < SrcEltTy->getTypeID())</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFPTrunc(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>       Res = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFPExt(Src, DstTy, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>   }</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> </div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>   <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> }</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> </div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> *ScalarExprEmitter::VisitMemberExpr(<a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *E) {</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>   llvm::APSInt <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>;</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1Expr.html#aea5aa4f172677bf59f1a149ee1513c9c">EvaluateAsInt</a>(Value, CGF.getContext(), <a class="code" href="classclang_1_1Expr.html#a23b0a4ca516270db2d6f6337c3e9b08aa4a1fd43d748564539beecb04f16530c8">Expr::SE_AllowSideEffects</a>)) {</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1MemberExpr.html#a22d0072d3f57ed584f03e37d9dd0dc34">isArrow</a>())</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>       CGF.EmitScalarExpr(E-><a class="code" href="classclang_1_1MemberExpr.html#ade0c09aefce7fca4cfd671cd96a87083">getBase</a>());</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>       EmitLValue(E-><a class="code" href="classclang_1_1MemberExpr.html#ade0c09aefce7fca4cfd671cd96a87083">getBase</a>());</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt(Value);</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>   }</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> </div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>   <span class="keywordflow">return</span> EmitLoadOfLValue(E);</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> }</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> </div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> Value *ScalarExprEmitter::VisitArraySubscriptExpr(<a class="code" href="classclang_1_1ArraySubscriptExpr.html" title="ArraySubscriptExpr - [C99 6.5.2.1] Array Subscripting.">ArraySubscriptExpr</a> *E) {</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>   TestAndClearIgnoreResultAssign();</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> </div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>   <span class="comment">// Emit subscript expressions in rvalue context's.  For most cases, this just</span></div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>   <span class="comment">// loads the lvalue formed by the subscript expr.  However, we have to be</span></div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>   <span class="comment">// careful, because the base of a vector subscript is occasionally an rvalue,</span></div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>   <span class="comment">// so we can't get it as an lvalue.</span></div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>   <span class="keywordflow">if</span> (!E-><a class="code" href="classclang_1_1ArraySubscriptExpr.html#ad303686acb8af8aa3d7169ba7e15f9fd">getBase</a>()-><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="l01068"></a><span class="lineno"> 1068</span>     <span class="keywordflow">return</span> EmitLoadOfLValue(E);</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> </div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>   <span class="comment">// Handle the vector case.  The base must be a vector, the index must be an</span></div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>   <span class="comment">// integer value.</span></div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>   Value *<a class="code" href="classclang_1_1Base.html">Base</a> = Visit(E-><a class="code" href="classclang_1_1ArraySubscriptExpr.html#ad303686acb8af8aa3d7169ba7e15f9fd">getBase</a>());</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>   Value *Idx  = Visit(E-><a class="code" href="classclang_1_1ArraySubscriptExpr.html#acc51394d086143bf3e2c93a73fcc2a85">getIdx</a>());</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> IdxTy = E-><a class="code" href="classclang_1_1ArraySubscriptExpr.html#acc51394d086143bf3e2c93a73fcc2a85">getIdx</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> </div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>   <span class="keywordflow">if</span> (CGF.SanOpts->ArrayBounds)</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>     CGF.EmitBoundsCheck(E, E-><a class="code" href="classclang_1_1ArraySubscriptExpr.html#ad303686acb8af8aa3d7169ba7e15f9fd">getBase</a>(), Idx, IdxTy, <span class="comment">/*Accessed*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> </div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>   <span class="keywordtype">bool</span> IdxSigned = IdxTy-><a class="code" href="classclang_1_1Type.html#ac1a93888d84731955cd5e95d6510aea6">isSignedIntegerOrEnumerationType</a>();</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>   Idx = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateIntCast(Idx, CGF.Int32Ty, IdxSigned, <span class="stringliteral">"vecidxcast"</span>);</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateExtractElement(Base, Idx, <span class="stringliteral">"vecext"</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"><a class="code" href="CGExprScalar_8cpp.html#a45033e908b1514c4fb9e819b38b3eae8"> 1084</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGExprScalar_8cpp.html#a45033e908b1514c4fb9e819b38b3eae8">getMaskElt</a>(llvm::ShuffleVectorInst *SVI, <span class="keywordtype">unsigned</span> Idx,</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>                                   <span class="keywordtype">unsigned</span> Off, llvm::Type *I32Ty) {</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>   <span class="keywordtype">int</span> MV = SVI->getMaskValue(Idx);</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>   <span class="keywordflow">if</span> (MV == -1)</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>     <span class="keywordflow">return</span> llvm::UndefValue::get(I32Ty);</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>   <span class="keywordflow">return</span> llvm::ConstantInt::get(I32Ty, Off+MV);</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> }</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> </div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> Value *ScalarExprEmitter::VisitInitListExpr(<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *E) {</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>   <span class="keywordtype">bool</span> Ignore = TestAndClearIgnoreResultAssign();</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>   (void)Ignore;</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>   assert (Ignore == <span class="keyword">false</span> && <span class="stringliteral">"init list ignored"</span>);</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>   <span class="keywordtype">unsigned</span> NumInitElements = E-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>();</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> </div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1InitListExpr.html#a5deb0e3be271ac96bd9080cf51cd5c27">hadArrayRangeDesignator</a>())</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>     CGF.ErrorUnsupported(E, <span class="stringliteral">"GNU array range designator extension"</span>);</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> </div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>   llvm::VectorType *VType =</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>     dyn_cast<llvm::VectorType>(ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> </div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>   <span class="keywordflow">if</span> (!VType) {</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>     <span class="keywordflow">if</span> (NumInitElements == 0) {</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>       <span class="comment">// C++11 value-initialization for the scalar.</span></div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>       <span class="keywordflow">return</span> EmitNullValue(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>     }</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>     <span class="comment">// We have a scalar in braces. Just use the first element.</span></div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>     <span class="keywordflow">return</span> Visit(E-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(0));</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>   }</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> </div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>   <span class="keywordtype">unsigned</span> ResElts = VType->getNumElements();</div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> </div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>   <span class="comment">// Loop over initializers collecting the Value for each, and remembering</span></div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>   <span class="comment">// whether the source was swizzle (ExtVectorElementExpr).  This will allow</span></div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>   <span class="comment">// us to fold the shuffle for the swizzle into the shuffle for the vector</span></div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>   <span class="comment">// initializer, since LLVM optimizers generally do not want to touch</span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>   <span class="comment">// shuffles.</span></div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>   <span class="keywordtype">unsigned</span> CurIdx = 0;</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>   <span class="keywordtype">bool</span> VIsUndefShuffle = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = llvm::UndefValue::get(VType);</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != NumInitElements; ++i) {</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>     <a class="code" href="classclang_1_1Expr.html">Expr</a> *IE = E-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(i);</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>     Value *Init = Visit(IE);</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Constant*, 16></a> <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>;</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> </div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>     llvm::VectorType *VVT = dyn_cast<llvm::VectorType>(Init->getType());</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> </div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>     <span class="comment">// Handle scalar elements.  If the scalar initializer is actually one</span></div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>     <span class="comment">// element of a different vector of the same width, use shuffle instead of</span></div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>     <span class="comment">// extract+insert.</span></div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>     <span class="keywordflow">if</span> (!VVT) {</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>       <span class="keywordflow">if</span> (isa<ExtVectorElementExpr>(IE)) {</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>         llvm::ExtractElementInst *EI = cast<llvm::ExtractElementInst>(Init);</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span> </div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>         <span class="keywordflow">if</span> (EI->getVectorOperandType()->getNumElements() == ResElts) {</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>           llvm::ConstantInt *C = cast<llvm::ConstantInt>(EI->getIndexOperand());</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>           Value *LHS = 0, *RHS = 0;</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>           <span class="keywordflow">if</span> (CurIdx == 0) {</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>             <span class="comment">// insert into undef -> shuffle (src, undef)</span></div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>             Args.push_back(C);</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>             Args.resize(ResElts, llvm::UndefValue::get(CGF.Int32Ty));</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>             LHS = EI->getVectorOperand();</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>             RHS = V;</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>             VIsUndefShuffle = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>           } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (VIsUndefShuffle) {</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>             <span class="comment">// insert into undefshuffle && size match -> shuffle (v, src)</span></div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>             llvm::ShuffleVectorInst *SVV = cast<llvm::ShuffleVectorInst>(V);</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>             <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j != CurIdx; ++j)</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>               Args.push_back(<a class="code" href="CGExprScalar_8cpp.html#a45033e908b1514c4fb9e819b38b3eae8">getMaskElt</a>(SVV, j, 0, CGF.Int32Ty));</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>             Args.push_back(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(ResElts + C->getZExtValue()));</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>             Args.resize(ResElts, llvm::UndefValue::get(CGF.Int32Ty));</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> </div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>             LHS = cast<llvm::ShuffleVectorInst>(V)->getOperand(0);</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>             RHS = EI->getVectorOperand();</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>             VIsUndefShuffle = <span class="keyword">false</span>;</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>           <span class="keywordflow">if</span> (!Args.empty()) {</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>             llvm::Constant *Mask = llvm::ConstantVector::get(Args);</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>             V = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateShuffleVector(LHS, RHS, Mask);</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>             ++CurIdx;</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>             <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>           }</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>         }</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>       }</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>       V = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInsertElement(V, Init, <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(CurIdx),</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>                                       <span class="stringliteral">"vecinit"</span>);</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>       VIsUndefShuffle = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>       ++CurIdx;</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>     }</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> </div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>     <span class="keywordtype">unsigned</span> InitElts = VVT->getNumElements();</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="comment">// If the initializer is an ExtVecEltExpr (a swizzle), and the swizzle's</span></div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>     <span class="comment">// input is the same width as the vector being constructed, generate an</span></div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>     <span class="comment">// optimized shuffle of the swizzle input into the result.</span></div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>     <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a> = (CurIdx == 0) ? 0 : ResElts;</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>     <span class="keywordflow">if</span> (isa<ExtVectorElementExpr>(IE)) {</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>       llvm::ShuffleVectorInst *SVI = cast<llvm::ShuffleVectorInst>(Init);</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>       Value *SVOp = SVI->getOperand(0);</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>       llvm::VectorType *OpTy = cast<llvm::VectorType>(SVOp->getType());</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span> </div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>       <span class="keywordflow">if</span> (OpTy->getNumElements() == ResElts) {</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j != CurIdx; ++j) {</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>           <span class="comment">// If the current vector initializer is a shuffle with undef, merge</span></div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>           <span class="comment">// this shuffle directly into it.</span></div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>           <span class="keywordflow">if</span> (VIsUndefShuffle) {</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>             Args.push_back(<a class="code" href="CGExprScalar_8cpp.html#a45033e908b1514c4fb9e819b38b3eae8">getMaskElt</a>(cast<llvm::ShuffleVectorInst>(V), j, 0,</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>                                       CGF.Int32Ty));</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>           } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>             Args.push_back(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(j));</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>         }</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0, je = InitElts; j != je; ++j)</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>           Args.push_back(<a class="code" href="CGExprScalar_8cpp.html#a45033e908b1514c4fb9e819b38b3eae8">getMaskElt</a>(SVI, j, Offset, CGF.Int32Ty));</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>         Args.resize(ResElts, llvm::UndefValue::get(CGF.Int32Ty));</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>         <span class="keywordflow">if</span> (VIsUndefShuffle)</div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>           V = cast<llvm::ShuffleVectorInst>(V)->getOperand(0);</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> </div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>         Init = SVOp;</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>       }</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>     }</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span> </div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>     <span class="comment">// Extend init to result vector length, and then shuffle its contribution</span></div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>     <span class="comment">// to the vector initializer into V.</span></div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>     <span class="keywordflow">if</span> (Args.empty()) {</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j != InitElts; ++j)</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>         Args.push_back(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(j));</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>       Args.resize(ResElts, llvm::UndefValue::get(CGF.Int32Ty));</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>       llvm::Constant *Mask = llvm::ConstantVector::get(Args);</div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>       Init = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateShuffleVector(Init, llvm::UndefValue::get(VVT),</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>                                          Mask, <span class="stringliteral">"vext"</span>);</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> </div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>       Args.clear();</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j != CurIdx; ++j)</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>         Args.push_back(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(j));</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j != InitElts; ++j)</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>         Args.push_back(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(j+Offset));</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>       Args.resize(ResElts, llvm::UndefValue::get(CGF.Int32Ty));</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>     }</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> </div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>     <span class="comment">// If V is undef, make sure it ends up on the RHS of the shuffle to aid</span></div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>     <span class="comment">// merging subsequent shuffles into this one.</span></div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>     <span class="keywordflow">if</span> (CurIdx == 0)</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>       std::swap(V, Init);</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>     llvm::Constant *Mask = llvm::ConstantVector::get(Args);</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>     V = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateShuffleVector(V, Init, Mask, <span class="stringliteral">"vecinit"</span>);</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>     VIsUndefShuffle = isa<llvm::UndefValue>(Init);</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>     CurIdx += InitElts;</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>   }</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="comment">// FIXME: evaluate codegen vs. shuffling against constant null vector.</span></div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>   <span class="comment">// Emit remaining default initializers.</span></div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>   llvm::Type *EltTy = VType->getElementType();</div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span> </div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>   <span class="comment">// Emit remaining default initializers</span></div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>   <span class="keywordflow">for</span> (<span class="comment">/* Do not initialize i*/</span>; CurIdx < ResElts; ++CurIdx) {</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>     Value *Idx = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(CurIdx);</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Init = llvm::Constant::getNullValue(EltTy);</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>     V = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInsertElement(V, Init, Idx, <span class="stringliteral">"vecinit"</span>);</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>   }</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>   <span class="keywordflow">return</span> V;</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> }</div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> </div>
+<div class="line"><a name="l01249"></a><span class="lineno"><a class="code" href="CGExprScalar_8cpp.html#ab2a6b8bc7b85a5bbd6d1dfb0ae7caa38"> 1249</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGExprScalar_8cpp.html#ab2a6b8bc7b85a5bbd6d1dfb0ae7caa38">ShouldNullCheckClassCastValue</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *CE) {</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = CE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>();</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> </div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>   <span class="keywordflow">if</span> (CE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caafe5fe4f044e3c17524af98993c8b058">CK_UncheckedDerivedToBase</a>)</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> </div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>   <span class="keywordflow">if</span> (isa<CXXThisExpr>(E)) {</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>     <span class="comment">// We always assume that 'this' is never null.</span></div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>   }</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> </div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</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>(CE)) {</div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>     <span class="comment">// And that glvalue casts are never null.</span></div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</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="l01263"></a><span class="lineno"> 1263</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>   }</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> </div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span> }</div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> </div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> <span class="comment">// VisitCastExpr - Emit code for an explicit or implicit cast.  Implicit casts</span></div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> <span class="comment">// have to handle a more broad range of conversions than explicit casts, as they</span></div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> <span class="comment">// handle things like function to ptr-to-function decay etc.</span></div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> Value *ScalarExprEmitter::VisitCastExpr(<a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *CE) {</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = CE-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>();</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DestTy = CE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</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> = CE-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>();</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span> </div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>   <span class="keywordflow">if</span> (!DestTy-><a class="code" href="classclang_1_1Type.html#a0ee6d74a089fe24d755d9cfd8bceef3f">isVoidType</a>())</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>     TestAndClearIgnoreResultAssign();</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>   <span class="comment">// Since almost all cast kinds apply to scalars, this switch doesn't have</span></div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>   <span class="comment">// a default case, so the compiler will warn on a missing case.  The cases</span></div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>   <span class="comment">// are in the same order as in the CastKind enum.</span></div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>   <span class="keywordflow">switch</span> (Kind) {</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca083127f65375358e525293ded6aa20ff">CK_Dependent</a>: llvm_unreachable(<span class="stringliteral">"dependent cast kind in IR gen!"</span>);</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caac03ac448a686cc808b1b7490e2e696a">CK_BuiltinFnToFnPtr</a>:</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>     llvm_unreachable(<span class="stringliteral">"builtin functions are handled elsewhere"</span>);</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span> </div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca26d313dc7aa71eb9a90dba577004ecdd">CK_LValueBitCast</a>:</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</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="l01290"></a><span class="lineno"> 1290</span>     Value *V = EmitLValue(E).getAddress();</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>     V = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(V,</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>                           ConvertType(CGF.getContext().getPointerType(DestTy)));</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>     <span class="keywordflow">return</span> EmitLoadOfLValue(CGF.MakeNaturalAlignAddrLValue(V, DestTy),</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>                             CE-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>());</div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>   }</div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span> </div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cacc999b93239de9e4bc022719ddd96159">CK_CPointerToObjCPointerCast</a>:</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca90f41f80fbcffc5e47ac9c9b448f5c00">CK_BlockPointerToObjCPointerCast</a>:</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cac5436c20ce687d8a80eac6656ccd4053">CK_AnyPointerToBlockPointerCast</a>:</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca183b8948b82911a415cc54446ddcb3ab">CK_BitCast</a>: {</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>     Value *Src = Visit(const_cast<Expr*>(E));</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(Src, ConvertType(DestTy));</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>   }</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</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="l01305"></a><span class="lineno"> 1305</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="l01306"></a><span class="lineno"> 1306</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>:</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca84fedc22426b7cd5db4e84d590522adb">CK_UserDefinedConversion</a>:</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>     <span class="keywordflow">return</span> Visit(const_cast<Expr*>(E));</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span> </div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cacf9d54607fb757633eea67b88cd432b8">CK_BaseToDerived</a>: {</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *DerivedClassDecl = DestTy-><a class="code" href="classclang_1_1Type.html#a2196920ba6a8f9e9dfa18945722d807a">getPointeeCXXRecordDecl</a>();</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>     assert(DerivedClassDecl && <span class="stringliteral">"BaseToDerived arg isn't a C++ object pointer!"</span>);</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = Visit(E);</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> </div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Derived =</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>       CGF.GetAddressOfDerivedClass(V, DerivedClassDecl,</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>                                    CE-><a class="code" href="classclang_1_1CastExpr.html#a0b21e5af1691cff3b580f3c5f35fe459">path_begin</a>(), CE-><a class="code" href="classclang_1_1CastExpr.html#a8faa0fba2075e167943ea782e86296d4">path_end</a>(),</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>                                    <a class="code" href="CGExprScalar_8cpp.html#ab2a6b8bc7b85a5bbd6d1dfb0ae7caa38">ShouldNullCheckClassCastValue</a>(CE));</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> </div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>     <span class="comment">// C++11 [expr.static.cast]p11: Behavior is undefined if a downcast is</span></div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>     <span class="comment">// performed and the object is not of the derived type.</span></div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>     <span class="keywordflow">if</span> (CGF.SanitizePerformTypeCheck)</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>       CGF.EmitTypeCheck(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a506527ab7d0b728228596e9a81c811c6a1bd605ead5bab3ec286c11990795fcc1">CodeGenFunction::TCK_DowncastPointer</a>, CE-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>(),</div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>                         Derived, DestTy-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>());</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>     <span class="keywordflow">return</span> Derived;</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>   }</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caafe5fe4f044e3c17524af98993c8b058">CK_UncheckedDerivedToBase</a>:</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca73a268da1a2e05cdf1ace06c46412caa">CK_DerivedToBase</a>: {</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *DerivedClassDecl =</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>       E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a2196920ba6a8f9e9dfa18945722d807a">getPointeeCXXRecordDecl</a>();</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>     assert(DerivedClassDecl && <span class="stringliteral">"DerivedToBase arg isn't a C++ object pointer!"</span>);</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span> </div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>     <span class="keywordflow">return</span> CGF.GetAddressOfBaseClass(Visit(E), DerivedClassDecl,</div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>                                      CE-><a class="code" href="classclang_1_1CastExpr.html#a0b21e5af1691cff3b580f3c5f35fe459">path_begin</a>(), CE-><a class="code" href="classclang_1_1CastExpr.html#a8faa0fba2075e167943ea782e86296d4">path_end</a>(),</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>                                      <a class="code" href="CGExprScalar_8cpp.html#ab2a6b8bc7b85a5bbd6d1dfb0ae7caa38">ShouldNullCheckClassCastValue</a>(CE));</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>   }</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>   <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="l01340"></a><span class="lineno"> 1340</span>     Value *V = Visit(const_cast<Expr*>(E));</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</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>(CE);</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>     <span class="keywordflow">return</span> CGF.EmitDynamicCast(V, DCE);</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>   }</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> </div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca966388c17db29effd052ff1f5da7f64f">CK_ArrayToPointerDecay</a>: {</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>     assert(E-><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="l01347"></a><span class="lineno"> 1347</span>            <span class="stringliteral">"Array to pointer decay must have array source type!"</span>);</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>     Value *V = EmitLValue(E).getAddress();  <span class="comment">// Bitfields can't be arrays.</span></div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span> </div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>     <span class="comment">// Note that VLA pointers are always decayed, so we don't need to do</span></div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>     <span class="comment">// anything here.</span></div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</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#af8518d4e36dad6c248aac75a3a169022">isVariableArrayType</a>()) {</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>       assert(isa<llvm::PointerType>(V->getType()) && <span class="stringliteral">"Expected pointer"</span>);</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>       assert(isa<llvm::ArrayType>(cast<llvm::PointerType>(V->getType())</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>                                  -><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>()) &&</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>              <span class="stringliteral">"Expected pointer to array"</span>);</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>       V = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateStructGEP(V, 0, <span class="stringliteral">"arraydecay"</span>);</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>     }</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> </div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>     <span class="comment">// Make sure the array decay ends up being the right type.  This matters if</span></div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>     <span class="comment">// the array type was of an incomplete type.</span></div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>     <span class="keywordflow">return</span> CGF.Builder.CreateBitCast(V, ConvertType(CE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>   }</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab98f67d90bd9e115f96916271318fe71">CK_FunctionToPointerDecay</a>:</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>     <span class="keywordflow">return</span> EmitLValue(E).getAddress();</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> </div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca69507b9309c485f20be46a41f657630c">CK_NullToPointer</a>:</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>     <span class="keywordflow">if</span> (MustVisitNullValue(E))</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>       (void) Visit(E);</div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> </div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>     <span class="keywordflow">return</span> llvm::ConstantPointerNull::get(</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>                                cast<llvm::PointerType>(ConvertType(DestTy)));</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>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca26ac11778b8142c489add68f63bb6dde">CK_NullToMemberPointer</a>: {</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>     <span class="keywordflow">if</span> (MustVisitNullValue(E))</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>       (void) Visit(E);</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span> </div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT = CE-><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_1MemberPointerType.html">MemberPointerType</a>>();</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>     <span class="keywordflow">return</span> CGF.CGM.getCXXABI().EmitNullMemberPointer(MPT);</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> </div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafe996870a0a2acb7913b2dfff4514961">CK_ReinterpretMemberPointer</a>:</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3c6a5409bb52618fc54e2a1b7fea53e8">CK_BaseToDerivedMemberPointer</a>:</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca82cc4f2178c9c3b36d0790c155939350">CK_DerivedToBaseMemberPointer</a>: {</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>     Value *Src = Visit(E);</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> </div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>     <span class="comment">// Note that the AST doesn't distinguish between checked and</span></div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>     <span class="comment">// unchecked member pointer conversions, so we always have to</span></div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>     <span class="comment">// implement checked conversions here.  This is inefficient when</span></div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>     <span class="comment">// actual control flow may be required in order to perform the</span></div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>     <span class="comment">// check, which it is for data member pointers (but not member</span></div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>     <span class="comment">// function pointers on Itanium and ARM).</span></div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>     <span class="keywordflow">return</span> CGF.CGM.getCXXABI().EmitMemberPointerConversion(CGF, CE, Src);</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>   }</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>   <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="l01398"></a><span class="lineno"> 1398</span>     <span class="keywordflow">return</span> CGF.EmitARCRetainScalarExpr(E);</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</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="l01400"></a><span class="lineno"> 1400</span>     <span class="keywordflow">return</span> CGF.EmitObjCConsumeObject(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), Visit(E));</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</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="l01402"></a><span class="lineno"> 1402</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *value = Visit(E);</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>     value = CGF.EmitARCRetainAutoreleasedReturnValue(value);</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>     <span class="keywordflow">return</span> CGF.EmitObjCConsumeObject(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), value);</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>   }</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</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="l01407"></a><span class="lineno"> 1407</span>     <span class="keywordflow">return</span> CGF.EmitARCExtendBlockObject(E);</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> </div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>   <span class="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="l01410"></a><span class="lineno"> 1410</span>     <span class="keywordflow">return</span> CGF.EmitBlockCopyAndAutorelease(Visit(E), E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> </div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</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="l01413"></a><span class="lineno"> 1413</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="l01414"></a><span class="lineno"> 1414</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="l01415"></a><span class="lineno"> 1415</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="l01416"></a><span class="lineno"> 1416</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="l01417"></a><span class="lineno"> 1417</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="l01418"></a><span class="lineno"> 1418</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad2d52a3df80ffd6ed33b81af15c872b0">CK_ConstructorConversion</a>:</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca8ea0e009738649ecec9ae75302358e8a">CK_ToUnion</a>:</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>     llvm_unreachable(<span class="stringliteral">"scalar cast to non-scalar value"</span>);</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> </div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a>:</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>     assert(CGF.getContext().hasSameUnqualifiedType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), DestTy));</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>     assert(E-><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>() && <span class="stringliteral">"lvalue-to-rvalue applied to r-value!"</span>);</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>     <span class="keywordflow">return</span> Visit(const_cast<Expr*>(E));</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> </div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca25161f0bbb6d2b99bd5fbbf9c19ef751">CK_IntegralToPointer</a>: {</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>     Value *Src = Visit(const_cast<Expr*>(E));</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> </div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>     <span class="comment">// First, convert to the correct width so that we control the kind of</span></div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>     <span class="comment">// extension.</span></div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>     llvm::Type *MiddleTy = CGF.IntPtrTy;</div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>     <span class="keywordtype">bool</span> InputSigned = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac1a93888d84731955cd5e95d6510aea6">isSignedIntegerOrEnumerationType</a>();</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a>* IntResult =</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>       <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateIntCast(Src, MiddleTy, InputSigned, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span> </div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateIntToPtr(IntResult, ConvertType(DestTy));</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#aa8bdb68daa57cbb2096f354001e2df8ca71a69f66ffd32b22a11ee92d49359612">CK_PointerToIntegral</a>:</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>     assert(!DestTy-><a class="code" href="classclang_1_1Type.html#ac16047fbf3b5325d6528d8557803b0cc">isBooleanType</a>() && <span class="stringliteral">"bool should use PointerToBool"</span>);</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreatePtrToInt(Visit(E), ConvertType(DestTy));</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> </div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cac5d34b62fbc611f2f762ff5c72845fa5">CK_ToVoid</a>: {</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>     CGF.EmitIgnoredExpr(E);</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>   }</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad92f354774050cdc155c425c4268c701">CK_VectorSplat</a>: {</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>     llvm::Type *DstTy = ConvertType(DestTy);</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>     Value *Elt = Visit(const_cast<Expr*>(E));</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>     Elt = EmitScalarConversion(Elt, E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(),</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>                                DestTy-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1VectorType.html">VectorType</a>>()-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>());</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span> </div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>     <span class="comment">// Splat the element across to all elements</span></div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>     <span class="keywordtype">unsigned</span> NumElements = cast<llvm::VectorType>(DstTy)->getNumElements();</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateVectorSplat(NumElements, Elt, <span class="stringliteral">"splat"</span>);;</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>   }</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> </div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad71cad80dd5957bfc6e8aa8f3a36f814">CK_IntegralCast</a>:</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca2cf53b5b93effb16c027b884ed149c8d">CK_IntegralToFloating</a>:</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca0d5ae3f886d5297b84191286796cff35">CK_FloatingToIntegral</a>:</div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab482ba41f148596616a763a65f09584c">CK_FloatingCast</a>:</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>     <span class="keywordflow">return</span> EmitScalarConversion(Visit(E), E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), DestTy);</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca10227766dc73da8ee82588b158be3ec5">CK_IntegralToBoolean</a>:</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>     <span class="keywordflow">return</span> EmitIntToBoolConversion(Visit(E));</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca2aba1f25bc41c5f972576e6b3aff5d3c">CK_PointerToBoolean</a>:</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>     <span class="keywordflow">return</span> EmitPointerToBoolConversion(Visit(E));</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca51c66fc8d55bbf9fbbe237705b1d01aa">CK_FloatingToBoolean</a>:</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>     <span class="keywordflow">return</span> EmitFloatToBoolConversion(Visit(E));</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca71aec4768318edbbc08dbe65bc4f0e8d">CK_MemberPointerToBoolean</a>: {</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *MemPtr = Visit(E);</div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT = 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_1MemberPointerType.html">MemberPointerType</a>>();</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>     <span class="keywordflow">return</span> CGF.CGM.getCXXABI().EmitMemberPointerIsNotNull(CGF, MemPtr, MPT);</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>   }</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> </div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</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="l01476"></a><span class="lineno"> 1476</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="l01477"></a><span class="lineno"> 1477</span>     <span class="keywordflow">return</span> CGF.EmitComplexExpr(E, <span class="keyword">false</span>, <span class="keyword">true</span>).first;</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> </div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>   <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="l01480"></a><span class="lineno"> 1480</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="l01481"></a><span class="lineno"> 1481</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae417ed4971c18c5ce0607e1be62ec117">CodeGenFunction::ComplexPairTy</a> V = CGF.EmitComplexExpr(E);</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> </div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>     <span class="comment">// TODO: kill this function off, inline appropriate case here</span></div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>     <span class="keywordflow">return</span> EmitComplexToScalarConversion(V, E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), DestTy);</div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>   }</div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> </div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca8e560e545d9c0c051691299879d30932">CK_ZeroToOCLEvent</a>: {</div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>     assert(DestTy-><a class="code" href="classclang_1_1Type.html#aeda57a36edf0df0ff5765a0ce2f2e6c9">isEventT</a>() && <span class="stringliteral">"CK_ZeroToOCLEvent cast on non event type"</span>);</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>     <span class="keywordflow">return</span> llvm::Constant::getNullValue(ConvertType(DestTy));</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>   }</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> </div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>   }</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span> </div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>   llvm_unreachable(<span class="stringliteral">"unknown scalar cast"</span>);</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> }</div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span> </div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span> Value *ScalarExprEmitter::VisitStmtExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1StmtExpr.html">StmtExpr</a> *E) {</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1StmtExprEvaluation.html">CodeGenFunction::StmtExprEvaluation</a> eval(CGF);</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RetAlloca = CGF.EmitCompoundStmt(*E-><a class="code" href="classclang_1_1StmtExpr.html#a0f25641e4a28c9c33580fb2703999958">getSubStmt</a>(),</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>                                                 !E-><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="l01501"></a><span class="lineno"> 1501</span>   <span class="keywordflow">if</span> (!RetAlloca)</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>   <span class="keywordflow">return</span> CGF.EmitLoadOfScalar(CGF.MakeAddrLValue(RetAlloca, E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()),</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>                               E-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>());</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span> }</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span> </div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span> <span class="comment">//                             Unary Operators</span></div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> </div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ScalarExprEmitter::</div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span> EmitAddConsiderOverflowBehavior(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E,</div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>                                 <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *InVal,</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>                                 <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NextVal, <span class="keywordtype">bool</span> IsInc) {</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>   <span class="keywordflow">switch</span> (CGF.getLangOpts().getSignedOverflowBehavior()) {</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836faaceab8eb65fa9d8a4c0d22f872a709c8">LangOptions::SOB_Defined</a>:</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAdd(InVal, NextVal, IsInc ? <span class="stringliteral">"inc"</span> : <span class="stringliteral">"dec"</span>);</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836fa5d16ddadec06d387310026f5a28af2ed">LangOptions::SOB_Undefined</a>:</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>     <span class="keywordflow">if</span> (!CGF.SanOpts->SignedIntegerOverflow)</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>       <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateNSWAdd(InVal, NextVal, IsInc ? <span class="stringliteral">"inc"</span> : <span class="stringliteral">"dec"</span>);</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>     <span class="comment">// Fall through.</span></div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836fa5b02f5b72966fb28394043b2a4a53eac">LangOptions::SOB_Trapping</a>:</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>     BinOpInfo BinOp;</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>     BinOp.LHS = InVal;</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>     BinOp.RHS = NextVal;</div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>     BinOp.Ty = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>     BinOp.Opcode = <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abe63fd1a02a7d1191c3b2fd102b983bd">BO_Add</a>;</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>     BinOp.FPContractable = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>     BinOp.E = E;</div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>     <span class="keywordflow">return</span> EmitOverflowCheckedBinOp(BinOp);</div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>   }</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>   llvm_unreachable(<span class="stringliteral">"Unknown SignedOverflowBehaviorTy"</span>);</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span> }</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span> </div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span> ScalarExprEmitter::EmitScalarPrePostIncDec(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E, <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV,</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>                                            <span class="keywordtype">bool</span> isInc, <span class="keywordtype">bool</span> isPre) {</div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> </div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</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> = E-><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="l01540"></a><span class="lineno"> 1540</span>   llvm::PHINode *atomicPHI = 0;</div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *value;</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *input;</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span> </div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>   <span class="keywordtype">int</span> amount = (isInc ? 1 : -1);</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span> </div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1AtomicType.html">AtomicType</a> *atomicTy = type-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1AtomicType.html">AtomicType</a>>()) {</div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>     type = atomicTy->getValueType();</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>     <span class="keywordflow">if</span> (isInc && type-><a class="code" href="classclang_1_1Type.html#ac16047fbf3b5325d6528d8557803b0cc">isBooleanType</a>()) {</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *True = CGF.EmitToMemory(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getTrue(), <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="l01550"></a><span class="lineno"> 1550</span>       <span class="keywordflow">if</span> (isPre) {</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>         <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.Insert(<span class="keyword">new</span> llvm::StoreInst(True,</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>               LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#ab445c86edb0419fab12ad9aaeff5f6e3">isVolatileQualified</a>(),</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>               LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a2d35987e18fbcfd14728b22c04c04bf4">getAlignment</a>().<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>(),</div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>               llvm::SequentiallyConsistent));</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>         <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getTrue();</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>       }</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>       <span class="comment">// For atomic bool increment, we just store true and return it for</span></div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>       <span class="comment">// preincrement, do an atomic swap with true for postincrement</span></div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>         <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAtomicRMW(llvm::AtomicRMWInst::Xchg,</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>             LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), True, llvm::SequentiallyConsistent);</div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>     }</div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>     <span class="comment">// Special case for atomic increment / decrement on integers, emit</span></div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>     <span class="comment">// atomicrmw instructions.  We skip this if we want to be doing overflow</span></div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>     <span class="comment">// checking, and fall into the slow path with the atomic cmpxchg loop.</span></div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>     <span class="keywordflow">if</span> (!type-><a class="code" href="classclang_1_1Type.html#ac16047fbf3b5325d6528d8557803b0cc">isBooleanType</a>() && type-><a class="code" href="classclang_1_1Type.html#a8bde7a56623fd89e9efafde792c56dac">isIntegerType</a>() &&</div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>         !(type-><a class="code" href="classclang_1_1Type.html#aa82feef1511943cfa01bba0ffc97d22c">isUnsignedIntegerType</a>() &&</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>          CGF.SanOpts->UnsignedIntegerOverflow) &&</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>         CGF.getLangOpts().getSignedOverflowBehavior() !=</div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>          <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836fa5b02f5b72966fb28394043b2a4a53eac">LangOptions::SOB_Trapping</a>) {</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>       llvm::AtomicRMWInst::BinOp aop = isInc ? llvm::AtomicRMWInst::Add :</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>         llvm::AtomicRMWInst::Sub;</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>       llvm::Instruction::BinaryOps op = isInc ? llvm::Instruction::Add :</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>         llvm::Instruction::Sub;</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *amt = CGF.EmitToMemory(</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>           llvm::ConstantInt::get(ConvertType(type), 1, <span class="keyword">true</span>), type);</div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *old = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAtomicRMW(aop,</div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>           LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), amt, llvm::SequentiallyConsistent);</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>       <span class="keywordflow">return</span> isPre ? <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBinOp(op, old, amt) : old;</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>     }</div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>     value = EmitLoadOfLValue(LV, E-><a class="code" href="classclang_1_1UnaryOperator.html#a6ead0bc5f545fb836280f8ff6f2ddcac">getExprLoc</a>());</div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>     input = value;</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>     <span class="comment">// For every other atomic operation, we need to emit a load-op-cmpxchg loop</span></div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>     llvm::BasicBlock *startBB = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>     llvm::BasicBlock *opBB = CGF.createBasicBlock(<span class="stringliteral">"atomic_op"</span>, CGF.CurFn);</div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>     value = CGF.EmitToMemory(value, type);</div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBr(opBB);</div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.SetInsertPoint(opBB);</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>     atomicPHI = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreatePHI(value->getType(), 2);</div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>     atomicPHI->addIncoming(value, startBB);</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>     value = atomicPHI;</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>     value = EmitLoadOfLValue(LV, E-><a class="code" href="classclang_1_1UnaryOperator.html#a6ead0bc5f545fb836280f8ff6f2ddcac">getExprLoc</a>());</div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>     input = value;</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>   }</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span> </div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>   <span class="comment">// Special case of integer increment that we have to check first: bool++.</span></div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>   <span class="comment">// Due to promotion rules, we get:</span></div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>   <span class="comment">//   bool++ -> bool = bool + 1</span></div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>   <span class="comment">//          -> bool = (int)bool + 1</span></div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>   <span class="comment">//          -> bool = ((int)bool + 1 != 0)</span></div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>   <span class="comment">// An interesting aspect of this is that increment is always true.</span></div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>   <span class="comment">// Decrement does not have this property.</span></div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>   <span class="keywordflow">if</span> (isInc && type-><a class="code" href="classclang_1_1Type.html#ac16047fbf3b5325d6528d8557803b0cc">isBooleanType</a>()) {</div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>     value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getTrue();</div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span> </div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>   <span class="comment">// Most common case by far: integer increment.</span></div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-><a class="code" href="classclang_1_1Type.html#a8bde7a56623fd89e9efafde792c56dac">isIntegerType</a>()) {</div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span> </div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *amt = llvm::ConstantInt::get(value->getType(), amount, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> </div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>     <span class="comment">// Note that signed integer inc/dec with width less than int can't</span></div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>     <span class="comment">// overflow because of promotion rules; we're just eliding a few steps here.</span></div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>     <span class="keywordflow">if</span> (value->getType()->getPrimitiveSizeInBits() >=</div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>             CGF.IntTy->getBitWidth() &&</div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>         type-><a class="code" href="classclang_1_1Type.html#ac1a93888d84731955cd5e95d6510aea6">isSignedIntegerOrEnumerationType</a>()) {</div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>       value = EmitAddConsiderOverflowBehavior(E, value, amt, isInc);</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value->getType()->getPrimitiveSizeInBits() >=</div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>                CGF.IntTy->getBitWidth() && type-><a class="code" href="classclang_1_1Type.html#aa82feef1511943cfa01bba0ffc97d22c">isUnsignedIntegerType</a>() &&</div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>                CGF.SanOpts->UnsignedIntegerOverflow) {</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>       BinOpInfo BinOp;</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>       BinOp.LHS = value;</div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>       BinOp.RHS = llvm::ConstantInt::get(value->getType(), 1, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>       BinOp.Ty = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>       BinOp.Opcode = isInc ? <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abe63fd1a02a7d1191c3b2fd102b983bd">BO_Add</a> : <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af84c54a9c8a061371180b3e8b25d4c3f">BO_Sub</a>;</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>       BinOp.FPContractable = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>       BinOp.E = E;</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>       value = EmitOverflowCheckedBinOp(BinOp);</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>     } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>       value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAdd(value, amt, isInc ? <span class="stringliteral">"inc"</span> : <span class="stringliteral">"dec"</span>);</div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span> </div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>   <span class="comment">// Next most common: pointer increment.</span></div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1PointerType.html">PointerType</a> *ptr = type-><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="l01633"></a><span class="lineno"> 1633</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> type = ptr-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> </div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>     <span class="comment">// VLA types don't have constant size.</span></div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1VariableArrayType.html">VariableArrayType</a> *vla</div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>           = CGF.getContext().getAsVariableArrayType(type)) {</div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *numElts = CGF.getVLASize(vla).first;</div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>       <span class="keywordflow">if</span> (!isInc) numElts = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateNSWNeg(numElts, <span class="stringliteral">"vla.negsize"</span>);</div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>       <span class="keywordflow">if</span> (CGF.getLangOpts().isSignedOverflowDefined())</div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>         value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateGEP(value, numElts, <span class="stringliteral">"vla.inc"</span>);</div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>         value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInBoundsGEP(value, numElts, <span class="stringliteral">"vla.inc"</span>);</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> </div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>     <span class="comment">// Arithmetic on function pointers (!) is just +-1.</span></div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-><a class="code" href="classclang_1_1Type.html#af0ae1f40cbbc07fabfefc86af91072e3">isFunctionType</a>()) {</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *amt = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(amount);</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> </div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>       value = CGF.EmitCastToVoidPtr(value);</div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>       <span class="keywordflow">if</span> (CGF.getLangOpts().isSignedOverflowDefined())</div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>         value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateGEP(value, amt, <span class="stringliteral">"incdec.funcptr"</span>);</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>         value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInBoundsGEP(value, amt, <span class="stringliteral">"incdec.funcptr"</span>);</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>       value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(value, input->getType());</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span> </div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>     <span class="comment">// For everything else, we can just do a simple increment.</span></div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *amt = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(amount);</div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>       <span class="keywordflow">if</span> (CGF.getLangOpts().isSignedOverflowDefined())</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>         value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateGEP(value, amt, <span class="stringliteral">"incdec.ptr"</span>);</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>         value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInBoundsGEP(value, amt, <span class="stringliteral">"incdec.ptr"</span>);</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>     }</div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span> </div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>   <span class="comment">// Vector increment/decrement.</span></div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>()) {</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>     <span class="keywordflow">if</span> (type-><a class="code" href="classclang_1_1Type.html#a351ea62eabf17ee5233783fb38aea876" title="Determine whether this type has an integer representation of some sort, e.g., it is an integer type o...">hasIntegerRepresentation</a>()) {</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *amt = llvm::ConstantInt::get(value->getType(), amount);</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>       value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAdd(value, amt, isInc ? <span class="stringliteral">"inc"</span> : <span class="stringliteral">"dec"</span>);</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>       value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFAdd(</div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>                   value,</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>                   llvm::ConstantFP::get(value->getType(), amount),</div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>                   isInc ? <span class="stringliteral">"inc"</span> : <span class="stringliteral">"dec"</span>);</div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>     }</div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span> </div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>   <span class="comment">// Floating point.</span></div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-><a class="code" href="classclang_1_1Type.html#a1c534c15a8299e5d31f356edb725c31f" title="Floating point categories.">isRealFloatingType</a>()) {</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>     <span class="comment">// Add the inc/dec to the real part.</span></div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *amt;</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> </div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>     <span class="keywordflow">if</span> (type-><a class="code" href="classclang_1_1Type.html#adc64f48c3e6a14cca9fed4350d42b045">isHalfType</a>() && !CGF.getContext().getLangOpts().NativeHalfType) {</div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>       <span class="comment">// Another special case: half FP increment should be done via float</span></div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>       value =</div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateCall(CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_from_fp16),</div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>                        input);</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>     }</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>     <span class="keywordflow">if</span> (value->getType()->isFloatTy())</div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>       amt = llvm::ConstantFP::get(VMContext,</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>                                   llvm::APFloat(static_cast<float>(amount)));</div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value->getType()->isDoubleTy())</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>       amt = llvm::ConstantFP::get(VMContext,</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>                                   llvm::APFloat(static_cast<double>(amount)));</div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>     <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>       llvm::APFloat F(static_cast<float>(amount));</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>       <span class="keywordtype">bool</span> ignored;</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>       F.convert(CGF.getTarget().getLongDoubleFormat(),</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>                 llvm::APFloat::rmTowardZero, &ignored);</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>       amt = llvm::ConstantFP::get(VMContext, F);</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>     value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFAdd(value, amt, isInc ? <span class="stringliteral">"inc"</span> : <span class="stringliteral">"dec"</span>);</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span> </div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>     <span class="keywordflow">if</span> (type-><a class="code" href="classclang_1_1Type.html#adc64f48c3e6a14cca9fed4350d42b045">isHalfType</a>() && !CGF.getContext().getLangOpts().NativeHalfType)</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>       value =</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>        <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateCall(CGF.CGM.getIntrinsic(llvm::Intrinsic::convert_to_fp16),</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>                           value);</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>   <span class="comment">// Objective-C pointer types.</span></div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *OPT = type-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>();</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>     value = CGF.EmitCastToVoidPtr(value);</div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span> </div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> size = CGF.getContext().getTypeSizeInChars(OPT-><a class="code" href="classclang_1_1ObjCObjectPointerType.html#abb391d91721464c0dc1eb15f333637a9">getObjectType</a>());</div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>     <span class="keywordflow">if</span> (!isInc) size = -size;</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *sizeValue =</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>       llvm::ConstantInt::get(CGF.SizeTy, size.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>());</div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span> </div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>     <span class="keywordflow">if</span> (CGF.getLangOpts().isSignedOverflowDefined())</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>       value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateGEP(value, sizeValue, <span class="stringliteral">"incdec.objptr"</span>);</div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>       value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInBoundsGEP(value, sizeValue, <span class="stringliteral">"incdec.objptr"</span>);</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>     value = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(value, input->getType());</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>   }</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span> </div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>   <span class="keywordflow">if</span> (atomicPHI) {</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>     llvm::BasicBlock *opBB = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>     llvm::BasicBlock *contBB = CGF.createBasicBlock(<span class="stringliteral">"atomic_cont"</span>, CGF.CurFn);</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *old = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAtomicCmpXchg(LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), atomicPHI,</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>         CGF.EmitToMemory(value, type), llvm::SequentiallyConsistent);</div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>     atomicPHI->addIncoming(old, opBB);</div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *success = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpEQ(old, atomicPHI);</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateCondBr(success, contBB, opBB);</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.SetInsertPoint(contBB);</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>     <span class="keywordflow">return</span> isPre ? value : input;</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>   }</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span> </div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>   <span class="comment">// Store the updated result through the lvalue.</span></div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>   <span class="keywordflow">if</span> (LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8901b8a21b2acf2f4cdd27513824426e">isBitField</a>())</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>     CGF.EmitStoreThroughBitfieldLValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(value), LV, &value);</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>     CGF.EmitStoreThroughLValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(value), LV);</div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span> </div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>   <span class="comment">// If this is a postinc, return the value read from memory, otherwise use the</span></div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>   <span class="comment">// updated value.</span></div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>   <span class="keywordflow">return</span> isPre ? value : input;</div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> }</div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> </div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span> </div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span> </div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span> Value *ScalarExprEmitter::VisitUnaryMinus(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>   TestAndClearIgnoreResultAssign();</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>   <span class="comment">// Emit unary minus with EmitSub so we handle overflow cases etc.</span></div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>   BinOpInfo BinOp;</div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>   BinOp.RHS = Visit(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>());</div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span> </div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>   <span class="keywordflow">if</span> (BinOp.RHS->getType()->isFPOrFPVectorTy())</div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>     BinOp.LHS = llvm::ConstantFP::getZeroValueForNegation(BinOp.RHS->getType());</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>     BinOp.LHS = llvm::Constant::getNullValue(BinOp.RHS->getType());</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>   BinOp.Ty = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>   BinOp.Opcode = <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af84c54a9c8a061371180b3e8b25d4c3f">BO_Sub</a>;</div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>   BinOp.FPContractable = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>   BinOp.E = E;</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>   <span class="keywordflow">return</span> EmitSub(BinOp);</div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span> }</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span> </div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span> Value *ScalarExprEmitter::VisitUnaryNot(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>   TestAndClearIgnoreResultAssign();</div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>   Value *Op = Visit(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>());</div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateNot(Op, <span class="stringliteral">"neg"</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> </div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> Value *ScalarExprEmitter::VisitUnaryLNot(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>   <span class="comment">// Perform vector logical not on comparison with zero vector.</span></div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</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#aa46cb894fc6f6f4e43d48232b6129d0b">isExtVectorType</a>()) {</div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>     Value *Oper = Visit(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>());</div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>     Value *Zero = llvm::Constant::getNullValue(Oper->getType());</div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>     Value *Result;</div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>     <span class="keywordflow">if</span> (Oper->getType()->isFPOrFPVectorTy())</div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>       Result = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmp(llvm::CmpInst::FCMP_OEQ, Oper, Zero, <span class="stringliteral">"cmp"</span>);</div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>       Result = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmp(llvm::CmpInst::ICMP_EQ, Oper, Zero, <span class="stringliteral">"cmp"</span>);</div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSExt(Result, ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()), <span class="stringliteral">"sext"</span>);</div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>   }</div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span> </div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>   <span class="comment">// Compare operand to zero.</span></div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>   Value *BoolVal = CGF.EvaluateExprAsBool(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>());</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span> </div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>   <span class="comment">// Invert value.</span></div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>   <span class="comment">// TODO: Could dynamically modify easy computations here.  For example, if</span></div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>   <span class="comment">// the operand is an icmp ne, turn into icmp eq.</span></div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>   BoolVal = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateNot(BoolVal, <span class="stringliteral">"lnot"</span>);</div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span> </div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>   <span class="comment">// ZExt result to the expr type.</span></div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateZExt(BoolVal, ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()), <span class="stringliteral">"lnot.ext"</span>);</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span> }</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span> </div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span> Value *ScalarExprEmitter::VisitOffsetOfExpr(<a class="code" href="classclang_1_1OffsetOfExpr.html">OffsetOfExpr</a> *E) {</div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>   <span class="comment">// Try folding the offsetof to a constant.</span></div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>   llvm::APSInt <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>;</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1Expr.html#aea5aa4f172677bf59f1a149ee1513c9c">EvaluateAsInt</a>(Value, CGF.getContext()))</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt(Value);</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span> </div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>   <span class="comment">// Loop over the components of the offsetof to compute the value.</span></div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>   <span class="keywordtype">unsigned</span> n = E-><a class="code" href="classclang_1_1OffsetOfExpr.html#a60b308dd07d2995e2e89369865828ed6">getNumComponents</a>();</div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>   llvm::Type* ResultType = ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a>* Result = llvm::Constant::getNullValue(ResultType);</div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> CurrentType = E-><a class="code" href="classclang_1_1OffsetOfExpr.html#af9cbc9c1bfd2718c71897de759a8b712">getTypeSourceInfo</a>()-><a class="code" href="classclang_1_1TypeSourceInfo.html#affbab53588a16a2bc948f2493d93a4e2" title="Return the type wrapped by this type source info.">getType</a>();</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != n; ++i) {</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>     <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfExpr::OffsetOfNode</a> ON = E-><a class="code" href="classclang_1_1OffsetOfExpr.html#acac1a1531e6ae11d202494ab8082f75e">getComponent</a>(i);</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Offset = 0;</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>     <span class="keywordflow">switch</span> (ON.<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a64d4e6c5970c305ce2a9021354bf948a" title="Determine what kind of offsetof node this is.">getKind</a>()) {</div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa0248cc6e1b578faeaf38e1407e7b401f" title="An index into an array.">OffsetOfExpr::OffsetOfNode::Array</a>: {</div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>       <span class="comment">// Compute the index</span></div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>       <a class="code" href="classclang_1_1Expr.html">Expr</a> *IdxExpr = E-><a class="code" href="classclang_1_1OffsetOfExpr.html#aee7f36a552640efa5e67f1c15007932c">getIndexExpr</a>(ON.<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a930c486170f468e14f24531ea7e7a08d" title="For an array element node, returns the index into the array of expressions.">getArrayExprIndex</a>());</div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a>* Idx = CGF.EmitScalarExpr(IdxExpr);</div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>       <span class="keywordtype">bool</span> IdxSigned = IdxExpr-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac1a93888d84731955cd5e95d6510aea6">isSignedIntegerOrEnumerationType</a>();</div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>       Idx = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateIntCast(Idx, ResultType, IdxSigned, <span class="stringliteral">"conv"</span>);</div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span> </div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>       <span class="comment">// Save the element type</span></div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>       CurrentType =</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>           CGF.getContext().getAsArrayType(CurrentType)->getElementType();</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span> </div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>       <span class="comment">// Compute the element size</span></div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a>* ElemSize = llvm::ConstantInt::get(ResultType,</div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>           CGF.getContext().getTypeSizeInChars(CurrentType).getQuantity());</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span> </div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>       <span class="comment">// Multiply out to compute the result</span></div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>       Offset = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateMul(Idx, ElemSize);</div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>     }</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span> </div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa857cf8e702d44631ad43e2e77a7ea307" title="A field.">OffsetOfExpr::OffsetOfNode::Field</a>: {</div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>       <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *MemberDecl = ON.<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a6a0d18d6fc8e8c5d21f25a30abef92bc" title="For a field offsetof node, returns the field.">getField</a>();</div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>       <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = CurrentType-><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="l01838"></a><span class="lineno"> 1838</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> &RL = CGF.getContext().getASTRecordLayout(RD);</div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span> </div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>       <span class="comment">// Compute the index of the field in its parent.</span></div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>       <span class="keywordtype">unsigned</span> i = 0;</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>       <span class="comment">// FIXME: It would be nice if we didn't have to loop here!</span></div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</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="l01844"></a><span class="lineno"> 1844</span>                                       FieldEnd = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>            Field != FieldEnd; ++Field, ++i) {</div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>         <span class="keywordflow">if</span> (*Field == MemberDecl)</div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>       }</div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>       assert(i < RL.<a class="code" href="classclang_1_1ASTRecordLayout.html#adf75393a8f83305b69d4d036bbf9267c" title="getFieldCount - Get the number of fields in the layout.">getFieldCount</a>() && <span class="stringliteral">"offsetof field in wrong type"</span>);</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span> </div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>       <span class="comment">// Compute the offset to the field</span></div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>       int64_t OffsetInt = RL.<a class="code" href="classclang_1_1ASTRecordLayout.html#a5469e46f4a69644ac8747cef95095f3a">getFieldOffset</a>(i) /</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>                           CGF.getContext().getCharWidth();</div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>       Offset = llvm::ConstantInt::get(ResultType, OffsetInt);</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span> </div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>       <span class="comment">// Save the element type.</span></div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>       CurrentType = MemberDecl-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>     }</div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span> </div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa9dc210a69ad5a5f8dcaf9fedaba33747" title="A field in a dependent type, known only by its name.">OffsetOfExpr::OffsetOfNode::Identifier</a>:</div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>       llvm_unreachable(<span class="stringliteral">"dependent __builtin_offsetof"</span>);</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span> </div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa5f2a710e8647367697f9aeccf4d01bcf" title="An implicit indirection through a C++ base class, when the field found is in a base class...">OffsetOfExpr::OffsetOfNode::Base</a>: {</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>       <span class="keywordflow">if</span> (ON.<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ae67b3629af70eaa42b64135e4f74e36e" title="For a base class node, returns the base specifier.">getBase</a>()-><a class="code" href="classclang_1_1CXXBaseSpecifier.html#a052cc9c7e1fb5a7095469c3be012c3a4" title="Determines whether the base class is a virtual base class (or not).">isVirtual</a>()) {</div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>         CGF.ErrorUnsupported(E, <span class="stringliteral">"virtual base in offsetof"</span>);</div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>       }</div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span> </div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>       <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = CurrentType-><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="l01871"></a><span class="lineno"> 1871</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> &RL = CGF.getContext().getASTRecordLayout(RD);</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>       <span class="comment">// Save the element type.</span></div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>       CurrentType = ON.<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ae67b3629af70eaa42b64135e4f74e36e" title="For a base class node, returns the base specifier.">getBase</a>()-><a class="code" href="classclang_1_1CXXBaseSpecifier.html#a4e9241e65b4b20b372902d0873a9d838" title="Retrieves the type of the base class.">getType</a>();</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span> </div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>       <span class="comment">// Compute the offset to the base.</span></div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *BaseRT = CurrentType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>();</div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>       <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *BaseRD = cast<CXXRecordDecl>(BaseRT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>());</div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> OffsetInt = RL.<a class="code" href="classclang_1_1ASTRecordLayout.html#a23d0a748e9b3b4515c23c5f9beabb2d7" title="getBaseClassOffset - Get the offset, in chars, for the given base class.">getBaseClassOffset</a>(BaseRD);</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>       Offset = llvm::ConstantInt::get(ResultType, OffsetInt.getQuantity());</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>     }</div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>     }</div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>     Result = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAdd(Result, Offset);</div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>   }</div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span> }</div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span> <span class="comment"></span></div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span> <span class="comment">/// VisitUnaryExprOrTypeTraitExpr - Return the size or alignment of the type of</span></div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span> <span class="comment">/// argument of the sizeof expression as an integer.</span></div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span> <span class="comment"></span>Value *</div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span> ScalarExprEmitter::VisitUnaryExprOrTypeTraitExpr(</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>                               <span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html">UnaryExprOrTypeTraitExpr</a> *E) {</div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> TypeToSize = E-><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a0569c161451a2b03d39fba40d67e0c77">getTypeOfArgument</a>();</div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#aa2277a3ae31b20bd06f41d6adc1620ef">getKind</a>() == <a class="code" href="namespaceclang.html#a5d73f06594a5ccb763a726bed94a541fab5694f3b82246fb24857d74abfd90edd">UETT_SizeOf</a>) {</div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1VariableArrayType.html">VariableArrayType</a> *VAT =</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>           CGF.getContext().getAsVariableArrayType(TypeToSize)) {</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>       <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ad4754c1823bdc76d1702724674bc8c9e">isArgumentType</a>()) {</div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>         <span class="comment">// sizeof(type) - make sure to emit the VLA size.</span></div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>         CGF.EmitVariablyModifiedType(TypeToSize);</div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>         <span class="comment">// C99 6.5.3.4p2: If the argument is an expression of type</span></div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>         <span class="comment">// VLA, it is evaluated.</span></div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>         CGF.EmitIgnoredExpr(E-><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a32752572fcb378247e114a7e7b5d1e6c">getArgumentExpr</a>());</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>       }</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span> </div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> eltType;</div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *numElts;</div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>       llvm::tie(numElts, eltType) = CGF.getVLASize(VAT);</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span> </div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *size = numElts;</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>       <span class="comment">// Scale the number of non-VLA elements by the non-VLA element size.</span></div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> eltSize = CGF.getContext().getTypeSizeInChars(eltType);</div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>       <span class="keywordflow">if</span> (!eltSize.<a class="code" href="classclang_1_1CharUnits.html#ac02a310fd7d1f2bea9d1a0f0ee8cb9d8" title="isOne - Test whether the quantity equals one.">isOne</a>())</div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>         size = CGF.Builder.CreateNUWMul(CGF.CGM.getSize(eltSize), numElts);</div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span> </div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>       <span class="keywordflow">return</span> size;</div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>     }</div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>   }</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span> </div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>   <span class="comment">// If this isn't sizeof(vla), the result must be constant; use the constant</span></div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>   <span class="comment">// folding logic so we don't have to duplicate it here.</span></div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt(E-><a class="code" href="classclang_1_1Expr.html#a9a303252fadd3163f7349daa10955aa4">EvaluateKnownConstInt</a>(CGF.getContext()));</div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span> }</div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span> </div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span> Value *ScalarExprEmitter::VisitUnaryReal(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *Op = E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>();</div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>   <span class="keywordflow">if</span> (Op-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a292ac10726adf5426212b5c6ee14d9bb">isAnyComplexType</a>()) {</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>     <span class="comment">// If it's an l-value, load through the appropriate subobject l-value.</span></div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>     <span class="comment">// Note that we have to ask E because Op might be an l-value that</span></div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>     <span class="comment">// this won't work for, e.g. an Obj-C property.</span></div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>())</div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>       <span class="keywordflow">return</span> CGF.EmitLoadOfLValue(CGF.EmitLValue(E),</div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>                                   E-><a class="code" href="classclang_1_1UnaryOperator.html#a6ead0bc5f545fb836280f8ff6f2ddcac">getExprLoc</a>()).getScalarVal();</div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span> </div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>     <span class="comment">// Otherwise, calculate and project.</span></div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>     <span class="keywordflow">return</span> CGF.EmitComplexExpr(Op, <span class="keyword">false</span>, <span class="keyword">true</span>).first;</div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>   }</div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span> </div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>   <span class="keywordflow">return</span> Visit(Op);</div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span> }</div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span> </div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span> Value *ScalarExprEmitter::VisitUnaryImag(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) {</div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *Op = E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>();</div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>   <span class="keywordflow">if</span> (Op-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a292ac10726adf5426212b5c6ee14d9bb">isAnyComplexType</a>()) {</div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>     <span class="comment">// If it's an l-value, load through the appropriate subobject l-value.</span></div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>     <span class="comment">// Note that we have to ask E because Op might be an l-value that</span></div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>     <span class="comment">// this won't work for, e.g. an Obj-C property.</span></div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>     <span class="keywordflow">if</span> (Op-><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>())</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>       <span class="keywordflow">return</span> CGF.EmitLoadOfLValue(CGF.EmitLValue(E),</div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>                                   E-><a class="code" href="classclang_1_1UnaryOperator.html#a6ead0bc5f545fb836280f8ff6f2ddcac">getExprLoc</a>()).getScalarVal();</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">// Otherwise, calculate and project.</span></div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>     <span class="keywordflow">return</span> CGF.EmitComplexExpr(Op, <span class="keyword">true</span>, <span class="keyword">false</span>).second;</div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>   }</div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span> </div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>   <span class="comment">// __imag on a scalar returns zero.  Emit the subexpr to ensure side</span></div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>   <span class="comment">// effects are evaluated, but not the actual value.</span></div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>   <span class="keywordflow">if</span> (Op-><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>())</div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>     CGF.EmitLValue(Op);</div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>     CGF.EmitScalarExpr(Op, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>   <span class="keywordflow">return</span> llvm::Constant::getNullValue(ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span> }</div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span> </div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span> <span class="comment">//                           Binary Operators</span></div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span> </div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span> BinOpInfo ScalarExprEmitter::EmitBinOps(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E) {</div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>   TestAndClearIgnoreResultAssign();</div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>   BinOpInfo Result;</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>   Result.LHS = Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>());</div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>   Result.RHS = Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>   Result.Ty  = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>   Result.Opcode = E-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>();</div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>   Result.FPContractable = E-><a class="code" href="classclang_1_1BinaryOperator.html#adf908fc7c8cc05db4dbeb97d3895c50f">isFPContractable</a>();</div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>   Result.E = E;</div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span> }</div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span> </div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span> <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> ScalarExprEmitter::EmitCompoundAssignLValue(</div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>                                               <span class="keyword">const</span> <a class="code" href="classclang_1_1CompoundAssignOperator.html">CompoundAssignOperator</a> *E,</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>                         Value *(ScalarExprEmitter::*Func)(<span class="keyword">const</span> BinOpInfo &),</div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>                                                    Value *&Result) {</div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> LHSTy = E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>   BinOpInfo OpInfo;</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">if</span> (E-><a class="code" href="classclang_1_1CompoundAssignOperator.html#a84a27832d28d023ca96f73e4220bdc63">getComputationResultType</a>()-><a class="code" href="classclang_1_1Type.html#a292ac10726adf5426212b5c6ee14d9bb">isAnyComplexType</a>())</div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>     <span class="keywordflow">return</span> CGF.EmitScalarCompooundAssignWithComplex(E, Result);</div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span> </div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>   <span class="comment">// Emit the RHS first.  __block variables need to have the rhs evaluated</span></div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>   <span class="comment">// first, plus this should improve codegen a little.</span></div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>   OpInfo.RHS = Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>   OpInfo.Ty = E-><a class="code" href="classclang_1_1CompoundAssignOperator.html#a84a27832d28d023ca96f73e4220bdc63">getComputationResultType</a>();</div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>   OpInfo.Opcode = E-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>();</div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>   OpInfo.FPContractable = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>   OpInfo.E = E;</div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>   <span class="comment">// Load/convert the LHS.</span></div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LHSLV = EmitCheckedLValue(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>(), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a506527ab7d0b728228596e9a81c811c6a958228d51bdf7739b42b3131a3f64ecd" title="Checking the destination of a store. Must be suitably sized and aligned.">CodeGenFunction::TCK_Store</a>);</div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span> </div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>   llvm::PHINode *atomicPHI = 0;</div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1AtomicType.html">AtomicType</a> *atomicTy = LHSTy-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1AtomicType.html">AtomicType</a>>()) {</div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> type = atomicTy->getValueType();</div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>     <span class="keywordflow">if</span> (!type-><a class="code" href="classclang_1_1Type.html#ac16047fbf3b5325d6528d8557803b0cc">isBooleanType</a>() && type-><a class="code" href="classclang_1_1Type.html#a8bde7a56623fd89e9efafde792c56dac">isIntegerType</a>() &&</div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>          !(type-><a class="code" href="classclang_1_1Type.html#aa82feef1511943cfa01bba0ffc97d22c">isUnsignedIntegerType</a>() &&</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>           CGF.SanOpts->UnsignedIntegerOverflow) &&</div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>          CGF.getLangOpts().getSignedOverflowBehavior() !=</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>           <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836fa5b02f5b72966fb28394043b2a4a53eac">LangOptions::SOB_Trapping</a>) {</div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>       llvm::AtomicRMWInst::BinOp aop = llvm::AtomicRMWInst::BAD_BINOP;</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>       <span class="keywordflow">switch</span> (OpInfo.Opcode) {</div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>         <span class="comment">// We don't have atomicrmw operands for *, %, /, <<, >></span></div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>         <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae54f31f3a3a80606d1570d18fd3e2aa5">BO_MulAssign</a>: <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af6f0e4f3b441322d5d3e662929e03e5c">BO_DivAssign</a>:</div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>         <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad745afa80b49821a17085fb374a5f1af">BO_RemAssign</a>:</div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>         <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a8039f4b36186fda6134f233fd7f45ce3">BO_ShlAssign</a>:</div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>         <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a604ed36a5eeadd90dc085a248eca4374">BO_ShrAssign</a>:</div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>         <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af2474871202242b544a408e208f2399e">BO_AddAssign</a>:</div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>           aop = llvm::AtomicRMWInst::Add;</div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>         <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abc31e47183ba44dc8fc651c06cce3277">BO_SubAssign</a>:</div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>           aop = llvm::AtomicRMWInst::Sub;</div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>           <span class="keywordflow">break</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#a443b552ee80020cfeb2b86c99e7f85e1ab40fb7aa73ca8472468f2623a6339759">BO_AndAssign</a>:</div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>           aop = <a class="code" href="namespaceclang_1_1prec.html#a9bfbe31f4770359ea44ad42e7c7ed8ffa9d7a7abf42694a4a2d4f1f322cf62d5c">llvm::AtomicRMWInst::And</a>;</div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>         <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a51df4970d4b108c4481cb80eeb47f436">BO_XorAssign</a>:</div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>           aop = llvm::AtomicRMWInst::Xor;</div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>         <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a7dd0c189f68df30c2b390bb99d140cbf">BO_OrAssign</a>:</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>           aop = llvm::AtomicRMWInst::Or;</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>         <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>           llvm_unreachable(<span class="stringliteral">"Invalid compound assignment type"</span>);</div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>       }</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>       <span class="keywordflow">if</span> (aop != llvm::AtomicRMWInst::BAD_BINOP) {</div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *amt = CGF.EmitToMemory(EmitScalarConversion(OpInfo.RHS,</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>               E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), LHSTy), LHSTy);</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>         <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAtomicRMW(aop, LHSLV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), amt,</div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>             llvm::SequentiallyConsistent);</div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>         <span class="keywordflow">return</span> LHSLV;</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>       }</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>     }</div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>     <span class="comment">// FIXME: For floating point types, we should be saving and restoring the</span></div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>     <span class="comment">// floating point environment in the loop.</span></div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>     llvm::BasicBlock *startBB = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>     llvm::BasicBlock *opBB = CGF.createBasicBlock(<span class="stringliteral">"atomic_op"</span>, CGF.CurFn);</div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>     OpInfo.LHS = EmitLoadOfLValue(LHSLV, E-><a class="code" href="classclang_1_1BinaryOperator.html#a642bb6cf9d51c986a6e7108b40cb3e9f">getExprLoc</a>());</div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>     OpInfo.LHS = CGF.EmitToMemory(OpInfo.LHS, type);</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBr(opBB);</div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.SetInsertPoint(opBB);</div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>     atomicPHI = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreatePHI(OpInfo.LHS->getType(), 2);</div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>     atomicPHI->addIncoming(OpInfo.LHS, startBB);</div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>     OpInfo.LHS = atomicPHI;</div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>   }</div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>     OpInfo.LHS = EmitLoadOfLValue(LHSLV, E-><a class="code" href="classclang_1_1BinaryOperator.html#a642bb6cf9d51c986a6e7108b40cb3e9f">getExprLoc</a>());</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span> </div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>   OpInfo.LHS = EmitScalarConversion(OpInfo.LHS, LHSTy,</div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>                                     E-><a class="code" href="classclang_1_1CompoundAssignOperator.html#ac4a88a84a8db7503dad4efb509da3061">getComputationLHSType</a>());</div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span> </div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>   <span class="comment">// Expand the binary operator.</span></div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>   Result = (this->*Func)(OpInfo);</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="comment">// Convert the result back to the LHS type.</span></div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>   Result = EmitScalarConversion(Result, E-><a class="code" href="classclang_1_1CompoundAssignOperator.html#a84a27832d28d023ca96f73e4220bdc63">getComputationResultType</a>(), LHSTy);</div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span> </div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>   <span class="keywordflow">if</span> (atomicPHI) {</div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>     llvm::BasicBlock *opBB = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>     llvm::BasicBlock *contBB = CGF.createBasicBlock(<span class="stringliteral">"atomic_cont"</span>, CGF.CurFn);</div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *old = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAtomicCmpXchg(LHSLV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), atomicPHI,</div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>         CGF.EmitToMemory(Result, LHSTy), llvm::SequentiallyConsistent);</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>     atomicPHI->addIncoming(old, opBB);</div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *success = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpEQ(old, atomicPHI);</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateCondBr(success, contBB, opBB);</div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.SetInsertPoint(contBB);</div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>     <span class="keywordflow">return</span> LHSLV;</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> </div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>   <span class="comment">// Store the result value into the LHS lvalue. Bit-fields are handled</span></div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>   <span class="comment">// specially because the result is altered by the store, i.e., [C99 6.5.16p1]</span></div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>   <span class="comment">// 'An assignment expression has the value of the left operand after the</span></div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>   <span class="comment">// assignment...'.</span></div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>   <span class="keywordflow">if</span> (LHSLV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8901b8a21b2acf2f4cdd27513824426e">isBitField</a>())</div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>     CGF.EmitStoreThroughBitfieldLValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(Result), LHSLV, &Result);</div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>     CGF.EmitStoreThroughLValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(Result), LHSLV);</div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span> </div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>   <span class="keywordflow">return</span> LHSLV;</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span> }</div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span> </div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span> Value *ScalarExprEmitter::EmitCompoundAssign(<span class="keyword">const</span> <a class="code" href="classclang_1_1CompoundAssignOperator.html">CompoundAssignOperator</a> *E,</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>                       Value *(ScalarExprEmitter::*Func)(<span class="keyword">const</span> BinOpInfo &)) {</div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>   <span class="keywordtype">bool</span> Ignore = TestAndClearIgnoreResultAssign();</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>   Value *RHS;</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LHS = EmitCompoundAssignLValue(E, Func, RHS);</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span> </div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>   <span class="comment">// If the result is clearly ignored, return now.</span></div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>   <span class="keywordflow">if</span> (Ignore)</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span> </div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>   <span class="comment">// The result of an assignment in C is the assigned r-value.</span></div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>   <span class="keywordflow">if</span> (!CGF.getLangOpts().CPlusPlus)</div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>     <span class="keywordflow">return</span> RHS;</div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span> </div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>   <span class="comment">// If the lvalue is non-volatile, return the computed value of the assignment.</span></div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>   <span class="keywordflow">if</span> (!LHS.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#ab445c86edb0419fab12ad9aaeff5f6e3">isVolatileQualified</a>())</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>     <span class="keywordflow">return</span> RHS;</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span> </div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>   <span class="comment">// Otherwise, reload the value.</span></div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>   <span class="keywordflow">return</span> EmitLoadOfLValue(LHS, E-><a class="code" href="classclang_1_1BinaryOperator.html#a642bb6cf9d51c986a6e7108b40cb3e9f">getExprLoc</a>());</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span> }</div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span> </div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span> <span class="keywordtype">void</span> ScalarExprEmitter::EmitUndefinedBehaviorIntegerDivAndRemCheck(</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>     <span class="keyword">const</span> BinOpInfo &Ops, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Zero, <span class="keywordtype">bool</span> isDiv) {</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Cond = 0;</div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span> </div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>   <span class="keywordflow">if</span> (CGF.SanOpts->IntegerDivideByZero)</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>     Cond = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpNE(Ops.RHS, Zero);</div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span> </div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>   <span class="keywordflow">if</span> (CGF.SanOpts->SignedIntegerOverflow &&</div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>       Ops.Ty->hasSignedIntegerRepresentation()) {</div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>     llvm::IntegerType *Ty = cast<llvm::IntegerType>(Zero->getType());</div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span> </div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *IntMin =</div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>       <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt(llvm::APInt::getSignedMinValue(Ty->getBitWidth()));</div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NegOne = llvm::ConstantInt::get(Ty, -1ULL);</div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span> </div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LHSCmp = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpNE(Ops.LHS, IntMin);</div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RHSCmp = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpNE(Ops.RHS, NegOne);</div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Overflow = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateOr(LHSCmp, RHSCmp, <span class="stringliteral">"or"</span>);</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>     Cond = Cond ? <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAnd(Cond, Overflow, <span class="stringliteral">"and"</span>) : Overflow;</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>   }</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> </div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>   <span class="keywordflow">if</span> (Cond)</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>     EmitBinOpCheck(Cond, Ops);</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> </div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span> Value *ScalarExprEmitter::EmitDiv(<span class="keyword">const</span> BinOpInfo &Ops) {</div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>   <span class="keywordflow">if</span> ((CGF.SanOpts->IntegerDivideByZero ||</div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>        CGF.SanOpts->SignedIntegerOverflow) &&</div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>       Ops.Ty->isIntegerType()) {</div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Zero = llvm::Constant::getNullValue(ConvertType(Ops.Ty));</div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>     EmitUndefinedBehaviorIntegerDivAndRemCheck(Ops, Zero, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (CGF.SanOpts->FloatDivideByZero &&</div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>              Ops.Ty->isRealFloatingType()) {</div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Zero = llvm::Constant::getNullValue(ConvertType(Ops.Ty));</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>     EmitBinOpCheck(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmpUNE(Ops.RHS, Zero), Ops);</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>   }</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span> </div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>   <span class="keywordflow">if</span> (Ops.LHS->getType()->isFPOrFPVectorTy()) {</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Val = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFDiv(Ops.LHS, Ops.RHS, <span class="stringliteral">"div"</span>);</div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>     <span class="keywordflow">if</span> (CGF.getLangOpts().OpenCL) {</div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>       <span class="comment">// OpenCL 1.1 7.4: minimum accuracy of single precision / is 2.5ulp</span></div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>       llvm::Type *ValTy = Val->getType();</div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>       <span class="keywordflow">if</span> (ValTy->isFloatTy() ||</div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>           (isa<llvm::VectorType>(ValTy) &&</div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>            cast<llvm::VectorType>(ValTy)->getElementType()->isFloatTy()))</div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>         CGF.SetFPAccuracy(Val, 2.5);</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>     <span class="keywordflow">return</span> Val;</div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>   }</div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Ops.Ty->hasUnsignedIntegerRepresentation())</div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateUDiv(Ops.LHS, Ops.RHS, <span class="stringliteral">"div"</span>);</div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSDiv(Ops.LHS, Ops.RHS, <span class="stringliteral">"div"</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> </div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span> Value *ScalarExprEmitter::EmitRem(<span class="keyword">const</span> BinOpInfo &Ops) {</div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>   <span class="comment">// Rem in C can't be a floating point type: C99 6.5.5p2.</span></div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>   <span class="keywordflow">if</span> (CGF.SanOpts->IntegerDivideByZero) {</div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Zero = llvm::Constant::getNullValue(ConvertType(Ops.Ty));</div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span> </div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>     <span class="keywordflow">if</span> (Ops.Ty->isIntegerType())</div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>       EmitUndefinedBehaviorIntegerDivAndRemCheck(Ops, Zero, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>   }</div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span> </div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>   <span class="keywordflow">if</span> (Ops.Ty->hasUnsignedIntegerRepresentation())</div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateURem(Ops.LHS, Ops.RHS, <span class="stringliteral">"rem"</span>);</div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSRem(Ops.LHS, Ops.RHS, <span class="stringliteral">"rem"</span>);</div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span> }</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span> </div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span> Value *ScalarExprEmitter::EmitOverflowCheckedBinOp(<span class="keyword">const</span> BinOpInfo &Ops) {</div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>   <span class="keywordtype">unsigned</span> IID;</div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>   <span class="keywordtype">unsigned</span> OpID = 0;</div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span> </div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>   <span class="keywordtype">bool</span> isSigned = Ops.Ty->isSignedIntegerOrEnumerationType();</div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>   <span class="keywordflow">switch</span> (Ops.Opcode) {</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abe63fd1a02a7d1191c3b2fd102b983bd">BO_Add</a>:</div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af2474871202242b544a408e208f2399e">BO_AddAssign</a>:</div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>     OpID = 1;</div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>     IID = isSigned ? llvm::Intrinsic::sadd_with_overflow :</div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>                      llvm::Intrinsic::uadd_with_overflow;</div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af84c54a9c8a061371180b3e8b25d4c3f">BO_Sub</a>:</div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abc31e47183ba44dc8fc651c06cce3277">BO_SubAssign</a>:</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>     OpID = 2;</div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>     IID = isSigned ? llvm::Intrinsic::ssub_with_overflow :</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>                      llvm::Intrinsic::usub_with_overflow;</div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a8e23022cab4ed3bcb24b7acd01f623e9">BO_Mul</a>:</div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae54f31f3a3a80606d1570d18fd3e2aa5">BO_MulAssign</a>:</div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>     OpID = 3;</div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>     IID = isSigned ? llvm::Intrinsic::smul_with_overflow :</div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>                      llvm::Intrinsic::umul_with_overflow;</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>   <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>     llvm_unreachable(<span class="stringliteral">"Unsupported operation for overflow detection"</span>);</div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>   }</div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>   OpID <<= 1;</div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>   <span class="keywordflow">if</span> (isSigned)</div>
+<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>     OpID |= 1;</div>
+<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span> </div>
+<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>   llvm::Type *opTy = CGF.CGM.getTypes().ConvertType(Ops.Ty);</div>
+<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span> </div>
+<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>   llvm::Function *intrinsic = CGF.CGM.getIntrinsic(IID, opTy);</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>   Value *resultAndOverflow = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateCall2(intrinsic, Ops.LHS, Ops.RHS);</div>
+<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>   Value *result = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateExtractValue(resultAndOverflow, 0);</div>
+<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>   Value *overflow = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateExtractValue(resultAndOverflow, 1);</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">// Handle overflow with llvm.trap if no custom handler has been specified.</span></div>
+<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>   <span class="keyword">const</span> std::string *handlerName =</div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>     &CGF.getLangOpts().OverflowHandler;</div>
+<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>   <span class="keywordflow">if</span> (handlerName->empty()) {</div>
+<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>     <span class="comment">// If the signed-integer-overflow sanitizer is enabled, emit a call to its</span></div>
+<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>     <span class="comment">// runtime. Otherwise, this is a -ftrapv check, so just emit a trap.</span></div>
+<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>     <span class="keywordflow">if</span> (!isSigned || CGF.SanOpts->SignedIntegerOverflow)</div>
+<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>       EmitBinOpCheck(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateNot(overflow), Ops);</div>
+<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>       CGF.EmitTrapCheck(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateNot(overflow));</div>
+<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>     <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>   }</div>
+<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span> </div>
+<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>   <span class="comment">// Branch in case of overflow.</span></div>
+<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>   llvm::BasicBlock *initialBB = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>   llvm::Function::iterator insertPt = initialBB;</div>
+<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>   llvm::BasicBlock *continueBB = CGF.createBasicBlock(<span class="stringliteral">"nooverflow"</span>, CGF.CurFn,</div>
+<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>                                                       llvm::next(insertPt));</div>
+<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>   llvm::BasicBlock *overflowBB = CGF.createBasicBlock(<span class="stringliteral">"overflow"</span>, CGF.CurFn);</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>   <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateCondBr(overflow, overflowBB, continueBB);</div>
+<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span> </div>
+<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>   <span class="comment">// If an overflow handler is set, then we want to call it and then use its</span></div>
+<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>   <span class="comment">// result, if it returns.</span></div>
+<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>   <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.SetInsertPoint(overflowBB);</div>
+<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span> </div>
+<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>   <span class="comment">// Get the overflow handler.</span></div>
+<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>   llvm::Type *Int8Ty = CGF.Int8Ty;</div>
+<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>   llvm::Type *argTypes[] = { CGF.Int64Ty, CGF.Int64Ty, Int8Ty, Int8Ty };</div>
+<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>   llvm::FunctionType *handlerTy =</div>
+<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>       llvm::FunctionType::get(CGF.Int64Ty, argTypes, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *handler = CGF.CGM.CreateRuntimeFunction(handlerTy, *handlerName);</div>
+<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span> </div>
+<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>   <span class="comment">// Sign extend the args to 64-bit, so that we can use the same handler for</span></div>
+<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>   <span class="comment">// all types of overflow.</span></div>
+<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *lhs = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSExt(Ops.LHS, CGF.Int64Ty);</div>
+<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *rhs = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSExt(Ops.RHS, CGF.Int64Ty);</div>
+<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span> </div>
+<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>   <span class="comment">// Call the handler with the two arguments, the operation, and the size of</span></div>
+<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>   <span class="comment">// the result.</span></div>
+<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *handlerArgs[] = {</div>
+<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>     lhs,</div>
+<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>     rhs,</div>
+<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt8(OpID),</div>
+<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt8(cast<llvm::IntegerType>(opTy)->getBitWidth())</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *handlerResult =</div>
+<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>     CGF.EmitNounwindRuntimeCall(handler, handlerArgs);</div>
+<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span> </div>
+<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>   <span class="comment">// Truncate the result back to the desired size.</span></div>
+<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>   handlerResult = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateTrunc(handlerResult, opTy);</div>
+<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>   <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBr(continueBB);</div>
+<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span> </div>
+<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>   <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.SetInsertPoint(continueBB);</div>
+<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>   llvm::PHINode *phi = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreatePHI(opTy, 2);</div>
+<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>   phi->addIncoming(result, initialBB);</div>
+<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>   phi->addIncoming(handlerResult, overflowBB);</div>
+<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span> </div>
+<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>   <span class="keywordflow">return</span> phi;</div>
+<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span> }</div>
+<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span> <span class="comment"></span></div>
+<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span> <span class="comment">/// Emit pointer + index arithmetic.</span></div>
+<div class="line"><a name="l02286"></a><span class="lineno"><a class="code" href="CGExprScalar_8cpp.html#ad1b973449e705b1b87af159f076b2aa0"> 2286</a></span> <span class="comment"></span><span class="keyword">static</span> Value *<a class="code" href="CGExprScalar_8cpp.html#ad1b973449e705b1b87af159f076b2aa0" title="Emit pointer + index arithmetic.">emitPointerArithmetic</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>                                     <span class="keyword">const</span> BinOpInfo &op,</div>
+<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>                                     <span class="keywordtype">bool</span> isSubtraction) {</div>
+<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>   <span class="comment">// Must have binary (not unary) expr here.  Unary pointer</span></div>
+<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>   <span class="comment">// increment/decrement doesn't use this path.</span></div>
+<div class="line"><a name="l02291"></a><span class="lineno"> 2291</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> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a> = cast<BinaryOperator>(op.E);</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>   Value *pointer = op.LHS;</div>
+<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *pointerOperand = expr-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>();</div>
+<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>   Value *index = op.RHS;</div>
+<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *indexOperand = expr-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>();</div>
+<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span> </div>
+<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>   <span class="comment">// In a subtraction, the LHS is always the pointer.</span></div>
+<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>   <span class="keywordflow">if</span> (!isSubtraction && !pointer->getType()->isPointerTy()) {</div>
+<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>     std::swap(pointer, index);</div>
+<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>     std::swap(pointerOperand, indexOperand);</div>
+<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>   }</div>
+<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span> </div>
+<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>   <span class="keywordtype">unsigned</span> width = cast<llvm::IntegerType>(index->getType())->getBitWidth();</div>
+<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>   <span class="keywordflow">if</span> (width != CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a410493ce9d596d51ba4979d315e35e51" title="The width of a pointer into the generic address space.">PointerWidthInBits</a>) {</div>
+<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>     <span class="comment">// Zero-extend or sign-extend the pointer value according to</span></div>
+<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>     <span class="comment">// whether the index is signed or not.</span></div>
+<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>     <span class="keywordtype">bool</span> isSigned = indexOperand-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac1a93888d84731955cd5e95d6510aea6">isSignedIntegerOrEnumerationType</a>();</div>
+<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>     index = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateIntCast(index, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad27f48ba6641c99a170fd0a3ef62c8f8">PtrDiffTy</a>, isSigned,</div>
+<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>                                       <span class="stringliteral">"idx.ext"</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"> 2313</span>   <span class="comment">// If this is subtraction, negate the index.</span></div>
+<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>   <span class="keywordflow">if</span> (isSubtraction)</div>
+<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>     index = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateNeg(index, <span class="stringliteral">"idx.neg"</span>);</div>
+<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span> </div>
+<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>   <span class="keywordflow">if</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2fdcc483973530909c21f658646f71b0" title="Sanitizer options to use for this function.">SanOpts</a>->ArrayBounds)</div>
+<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3af4f663084adac7cb8dc910185c6812" title="Emit a check that Base points into an array object, which we can access at index Index. Accessed should be false if we this expression is used as an lvalue, for instance in "&Arr[Idx]".">EmitBoundsCheck</a>(op.E, pointerOperand, index, indexOperand-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(),</div>
+<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>                         <span class="comment">/*Accessed*/</span> <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span> </div>
+<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1PointerType.html">PointerType</a> *pointerType</div>
+<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>     = pointerOperand-><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_1PointerType.html">PointerType</a>>();</div>
+<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>   <span class="keywordflow">if</span> (!pointerType) {</div>
+<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> objectType = pointerOperand-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()</div>
+<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>                                         -><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>()</div>
+<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>                                         ->getPointeeType();</div>
+<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *objectSize</div>
+<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>       = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#afc1a42dd19d9f4d3fdb1e9d15cf26810" title="getSize - Emit the given number of characters as a value of type size_t.">getSize</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ae8d8371f22bd850bced9b4b9ca848c4e" title="Return the size of the specified (complete) type T, in characters.">getTypeSizeInChars</a>(objectType));</div>
+<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span> </div>
+<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>     index = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMul(index, objectSize);</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>     Value *result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(pointer, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>);</div>
+<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>     result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateGEP(result, index, <span class="stringliteral">"add.ptr"</span>);</div>
+<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>     <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result, pointer->getType());</div>
+<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>   }</div>
+<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span> </div>
+<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType = pointerType-><a class="code" href="classclang_1_1PointerType.html#a3d0af079431148f7da7e2c400052cc66">getPointeeType</a>();</div>
+<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1VariableArrayType.html">VariableArrayType</a> *vla</div>
+<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>         = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#af653315eb87efaa63a3169c1af527ba8">getAsVariableArrayType</a>(elementType)) {</div>
+<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>     <span class="comment">// The element count here is the total number of non-VLA elements.</span></div>
+<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *numElements = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aad5f5781bb8931ec79b2ef0946098c57">getVLASize</a>(vla).first;</div>
+<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span> </div>
+<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>     <span class="comment">// Effectively, the multiply by the VLA size is part of the GEP.</span></div>
+<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>     <span class="comment">// GEP indexes are signed, and scaling an index isn't permitted to</span></div>
+<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>     <span class="comment">// signed-overflow, so we use the same semantics for our explicit</span></div>
+<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>     <span class="comment">// multiply.  We suppress this if overflow is not undefined behavior.</span></div>
+<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>     <span class="keywordflow">if</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().<a class="code" href="classclang_1_1LangOptions.html#a906a9325edbef396ee4edefd8ce67dea">isSignedOverflowDefined</a>()) {</div>
+<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>       index = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMul(index, numElements, <span class="stringliteral">"vla.index"</span>);</div>
+<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>       pointer = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateGEP(pointer, index, <span class="stringliteral">"add.ptr"</span>);</div>
+<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>       index = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateNSWMul(index, numElements, <span class="stringliteral">"vla.index"</span>);</div>
+<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>       pointer = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(pointer, index, <span class="stringliteral">"add.ptr"</span>);</div>
+<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>     }</div>
+<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>     <span class="keywordflow">return</span> pointer;</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> </div>
+<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>   <span class="comment">// Explicitly handle GNU void* and function pointer arithmetic extensions. The</span></div>
+<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>   <span class="comment">// GNU void* casts amount to no-ops since our void* type is i8*, but this is</span></div>
+<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>   <span class="comment">// future proof.</span></div>
+<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>   <span class="keywordflow">if</span> (elementType-><a class="code" href="classclang_1_1Type.html#a0ee6d74a089fe24d755d9cfd8bceef3f">isVoidType</a>() || elementType-><a class="code" href="classclang_1_1Type.html#af0ae1f40cbbc07fabfefc86af91072e3">isFunctionType</a>()) {</div>
+<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>     Value *result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(pointer, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>);</div>
+<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>     result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateGEP(result, index, <span class="stringliteral">"add.ptr"</span>);</div>
+<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>     <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result, pointer->getType());</div>
+<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>   }</div>
+<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span> </div>
+<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>   <span class="keywordflow">if</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().<a class="code" href="classclang_1_1LangOptions.html#a906a9325edbef396ee4edefd8ce67dea">isSignedOverflowDefined</a>())</div>
+<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>     <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateGEP(pointer, index, <span class="stringliteral">"add.ptr"</span>);</div>
+<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span> </div>
+<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(pointer, index, <span class="stringliteral">"add.ptr"</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> </div>
+<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span> <span class="comment">// Construct an fmuladd intrinsic to represent a fused mul-add of MulOp and</span></div>
+<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span> <span class="comment">// Addend. Use negMul and negAdd to negate the first operand of the Mul or</span></div>
+<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span> <span class="comment">// the add operand respectively. This allows fmuladd to represent a*b-c, or</span></div>
+<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span> <span class="comment">// c-a*b. Patterns in LLVM should catch the negated forms and translate them to</span></div>
+<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span> <span class="comment">// efficient operations.</span></div>
+<div class="line"><a name="l02377"></a><span class="lineno"><a class="code" href="CGExprScalar_8cpp.html#a3246b8795d54831675d7633593dcd2a9"> 2377</a></span> <span class="keyword">static</span> Value* <a class="code" href="CGExprScalar_8cpp.html#a3246b8795d54831675d7633593dcd2a9">buildFMulAdd</a>(llvm::BinaryOperator *MulOp, Value *Addend,</div>
+<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>                            <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="namespaceclang_1_1CodeGen.html#a5b4df39d75df3cedee71cc42402cc621">CGBuilderTy</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>,</div>
+<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>                            <span class="keywordtype">bool</span> negMul, <span class="keywordtype">bool</span> negAdd) {</div>
+<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>   assert(!(negMul && negAdd) && <span class="stringliteral">"Only one of negMul and negAdd should be set."</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>   Value *MulOp0 = MulOp->getOperand(0);</div>
+<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>   Value *MulOp1 = MulOp->getOperand(1);</div>
+<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>   <span class="keywordflow">if</span> (negMul) {</div>
+<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>     MulOp0 =</div>
+<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>       Builder.CreateFSub(</div>
+<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>         llvm::ConstantFP::getZeroValueForNegation(MulOp0->getType()), MulOp0,</div>
+<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>         <span class="stringliteral">"neg"</span>);</div>
+<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (negAdd) {</div>
+<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>     Addend =</div>
+<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>       Builder.CreateFSub(</div>
+<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>         llvm::ConstantFP::getZeroValueForNegation(Addend->getType()), Addend,</div>
+<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>         <span class="stringliteral">"neg"</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> </div>
+<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>   Value *FMulAdd =</div>
+<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>     Builder.CreateCall3(</div>
+<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a746e030a00d8dc22123b52c48120aad3">getIntrinsic</a>(llvm::Intrinsic::fmuladd, Addend->getType()),</div>
+<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>                            MulOp0, MulOp1, Addend);</div>
+<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>    MulOp->eraseFromParent();</div>
+<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span> </div>
+<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>    <span class="keywordflow">return</span> FMulAdd;</div>
+<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span> }</div>
+<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span> </div>
+<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span> <span class="comment">// Check whether it would be legal to emit an fmuladd intrinsic call to</span></div>
+<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span> <span class="comment">// represent op and if so, build the fmuladd.</span></div>
+<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span> <span class="comment">//</span></div>
+<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span> <span class="comment">// Checks that (a) the operation is fusable, and (b) -ffp-contract=on.</span></div>
+<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span> <span class="comment">// Does NOT check the type of the operation - it's assumed that this function</span></div>
+<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span> <span class="comment">// will be called from contexts where it's known that the type is contractable.</span></div>
+<div class="line"><a name="l02411"></a><span class="lineno"><a class="code" href="CGExprScalar_8cpp.html#aaeb1a111bd139ef2808dd5106eaf1ec3"> 2411</a></span> <span class="keyword">static</span> Value* <a class="code" href="CGExprScalar_8cpp.html#aaeb1a111bd139ef2808dd5106eaf1ec3">tryEmitFMulAdd</a>(<span class="keyword">const</span> BinOpInfo &op,</div>
+<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>                          <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="namespaceclang_1_1CodeGen.html#a5b4df39d75df3cedee71cc42402cc621">CGBuilderTy</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>,</div>
+<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>                          <span class="keywordtype">bool</span> isSub=<span class="keyword">false</span>) {</div>
+<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span> </div>
+<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>   assert((op.Opcode == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abe63fd1a02a7d1191c3b2fd102b983bd">BO_Add</a> || op.Opcode == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af2474871202242b544a408e208f2399e">BO_AddAssign</a> ||</div>
+<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>           op.Opcode == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af84c54a9c8a061371180b3e8b25d4c3f">BO_Sub</a> || op.Opcode == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abc31e47183ba44dc8fc651c06cce3277">BO_SubAssign</a>) &&</div>
+<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>          <span class="stringliteral">"Only fadd/fsub can be the root of an fmuladd."</span>);</div>
+<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span> </div>
+<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>   <span class="comment">// Check whether this op is marked as fusable.</span></div>
+<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>   <span class="keywordflow">if</span> (!op.FPContractable)</div>
+<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span> </div>
+<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>   <span class="comment">// Check whether -ffp-contract=on. (If -ffp-contract=off/fast, fusing is</span></div>
+<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>   <span class="comment">// either disabled, or handled entirely by the LLVM backend).</span></div>
+<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>   <span class="keywordflow">if</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().getFPContractMode() != <a class="code" href="classclang_1_1CodeGenOptions.html#a0c521b55002d8b372a211e5aad347da5a0f457b08b0c44cbae8f7b9d1de5645db">CodeGenOptions::FPC_On</a>)</div>
+<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span> </div>
+<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>   <span class="comment">// We have a potentially fusable op. Look for a mul on one of the operands.</span></div>
+<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>   <span class="keywordflow">if</span> (llvm::BinaryOperator* LHSBinOp = dyn_cast<llvm::BinaryOperator>(op.LHS)) {</div>
+<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>     <span class="keywordflow">if</span> (LHSBinOp->getOpcode() == llvm::Instruction::FMul) {</div>
+<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>       assert(LHSBinOp->getNumUses() == 0 &&</div>
+<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>              <span class="stringliteral">"Operations with multiple uses shouldn't be contracted."</span>);</div>
+<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>       <span class="keywordflow">return</span> <a class="code" href="CGExprScalar_8cpp.html#a3246b8795d54831675d7633593dcd2a9">buildFMulAdd</a>(LHSBinOp, op.RHS, CGF, Builder, <span class="keyword">false</span>, isSub);</div>
+<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>     }</div>
+<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (llvm::BinaryOperator* RHSBinOp =</div>
+<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>                dyn_cast<llvm::BinaryOperator>(op.RHS)) {</div>
+<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>     <span class="keywordflow">if</span> (RHSBinOp->getOpcode() == llvm::Instruction::FMul) {</div>
+<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>       assert(RHSBinOp->getNumUses() == 0 &&</div>
+<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>              <span class="stringliteral">"Operations with multiple uses shouldn't be contracted."</span>);</div>
+<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>       <span class="keywordflow">return</span> <a class="code" href="CGExprScalar_8cpp.html#a3246b8795d54831675d7633593dcd2a9">buildFMulAdd</a>(RHSBinOp, op.LHS, CGF, Builder, isSub, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>     }</div>
+<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>   }</div>
+<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span> </div>
+<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span> }</div>
+<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span> </div>
+<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span> Value *ScalarExprEmitter::EmitAdd(<span class="keyword">const</span> BinOpInfo &op) {</div>
+<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>   <span class="keywordflow">if</span> (op.LHS->getType()->isPointerTy() ||</div>
+<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>       op.RHS->getType()->isPointerTy())</div>
+<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>     <span class="keywordflow">return</span> <a class="code" href="CGExprScalar_8cpp.html#ad1b973449e705b1b87af159f076b2aa0" title="Emit pointer + index arithmetic.">emitPointerArithmetic</a>(CGF, op, <span class="comment">/*subtraction*/</span> <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span> </div>
+<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>   <span class="keywordflow">if</span> (op.Ty->isSignedIntegerOrEnumerationType()) {</div>
+<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>     <span class="keywordflow">switch</span> (CGF.getLangOpts().getSignedOverflowBehavior()) {</div>
+<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836faaceab8eb65fa9d8a4c0d22f872a709c8">LangOptions::SOB_Defined</a>:</div>
+<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>       <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAdd(op.LHS, op.RHS, <span class="stringliteral">"add"</span>);</div>
+<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836fa5d16ddadec06d387310026f5a28af2ed">LangOptions::SOB_Undefined</a>:</div>
+<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>       <span class="keywordflow">if</span> (!CGF.SanOpts->SignedIntegerOverflow)</div>
+<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>         <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateNSWAdd(op.LHS, op.RHS, <span class="stringliteral">"add"</span>);</div>
+<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>       <span class="comment">// Fall through.</span></div>
+<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836fa5b02f5b72966fb28394043b2a4a53eac">LangOptions::SOB_Trapping</a>:</div>
+<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>       <span class="keywordflow">return</span> EmitOverflowCheckedBinOp(op);</div>
+<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>     }</div>
+<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>   }</div>
+<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span> </div>
+<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>   <span class="keywordflow">if</span> (op.Ty->isUnsignedIntegerType() && CGF.SanOpts->UnsignedIntegerOverflow)</div>
+<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>     <span class="keywordflow">return</span> EmitOverflowCheckedBinOp(op);</div>
+<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span> </div>
+<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>   <span class="keywordflow">if</span> (op.LHS->getType()->isFPOrFPVectorTy()) {</div>
+<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>     <span class="comment">// Try to form an fmuladd.</span></div>
+<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>     <span class="keywordflow">if</span> (Value *FMulAdd = <a class="code" href="CGExprScalar_8cpp.html#aaeb1a111bd139ef2808dd5106eaf1ec3">tryEmitFMulAdd</a>(op, CGF, <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>))</div>
+<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>       <span class="keywordflow">return</span> FMulAdd;</div>
+<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span> </div>
+<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFAdd(op.LHS, op.RHS, <span class="stringliteral">"add"</span>);</div>
+<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>   }</div>
+<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span> </div>
+<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAdd(op.LHS, op.RHS, <span class="stringliteral">"add"</span>);</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> </div>
+<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span> Value *ScalarExprEmitter::EmitSub(<span class="keyword">const</span> BinOpInfo &op) {</div>
+<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>   <span class="comment">// The LHS is always a pointer if either side is.</span></div>
+<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>   <span class="keywordflow">if</span> (!op.LHS->getType()->isPointerTy()) {</div>
+<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>     <span class="keywordflow">if</span> (op.Ty->isSignedIntegerOrEnumerationType()) {</div>
+<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>       <span class="keywordflow">switch</span> (CGF.getLangOpts().getSignedOverflowBehavior()) {</div>
+<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>       <span class="keywordflow">case</span> <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836faaceab8eb65fa9d8a4c0d22f872a709c8">LangOptions::SOB_Defined</a>:</div>
+<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>         <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSub(op.LHS, op.RHS, <span class="stringliteral">"sub"</span>);</div>
+<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>       <span class="keywordflow">case</span> <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836fa5d16ddadec06d387310026f5a28af2ed">LangOptions::SOB_Undefined</a>:</div>
+<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>         <span class="keywordflow">if</span> (!CGF.SanOpts->SignedIntegerOverflow)</div>
+<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>           <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateNSWSub(op.LHS, op.RHS, <span class="stringliteral">"sub"</span>);</div>
+<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>         <span class="comment">// Fall through.</span></div>
+<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>       <span class="keywordflow">case</span> <a class="code" href="classclang_1_1LangOptions.html#aed122a38a369a1628fc8b338b399836fa5b02f5b72966fb28394043b2a4a53eac">LangOptions::SOB_Trapping</a>:</div>
+<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>         <span class="keywordflow">return</span> EmitOverflowCheckedBinOp(op);</div>
+<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>       }</div>
+<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>     }</div>
+<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span> </div>
+<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>     <span class="keywordflow">if</span> (op.Ty->isUnsignedIntegerType() && CGF.SanOpts->UnsignedIntegerOverflow)</div>
+<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>       <span class="keywordflow">return</span> EmitOverflowCheckedBinOp(op);</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> (op.LHS->getType()->isFPOrFPVectorTy()) {</div>
+<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>       <span class="comment">// Try to form an fmuladd.</span></div>
+<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>       <span class="keywordflow">if</span> (Value *FMulAdd = <a class="code" href="CGExprScalar_8cpp.html#aaeb1a111bd139ef2808dd5106eaf1ec3">tryEmitFMulAdd</a>(op, CGF, <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>, <span class="keyword">true</span>))</div>
+<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>         <span class="keywordflow">return</span> FMulAdd;</div>
+<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>       <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFSub(op.LHS, op.RHS, <span class="stringliteral">"sub"</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> </div>
+<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSub(op.LHS, op.RHS, <span class="stringliteral">"sub"</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"> 2508</span>   <span class="comment">// If the RHS is not a pointer, then we have normal pointer</span></div>
+<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>   <span class="comment">// arithmetic.</span></div>
+<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>   <span class="keywordflow">if</span> (!op.RHS->getType()->isPointerTy())</div>
+<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>     <span class="keywordflow">return</span> <a class="code" href="CGExprScalar_8cpp.html#ad1b973449e705b1b87af159f076b2aa0" title="Emit pointer + index arithmetic.">emitPointerArithmetic</a>(CGF, op, <span class="comment">/*subtraction*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span> </div>
+<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>   <span class="comment">// Otherwise, this is a pointer subtraction.</span></div>
+<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span> </div>
+<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>   <span class="comment">// Do the raw subtraction part.</span></div>
+<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LHS</div>
+<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>     = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreatePtrToInt(op.LHS, CGF.PtrDiffTy, <span class="stringliteral">"sub.ptr.lhs.cast"</span>);</div>
+<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RHS</div>
+<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>     = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreatePtrToInt(op.RHS, CGF.PtrDiffTy, <span class="stringliteral">"sub.ptr.rhs.cast"</span>);</div>
+<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>   Value *diffInChars = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSub(LHS, RHS, <span class="stringliteral">"sub.ptr.sub"</span>);</div>
+<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span> </div>
+<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>   <span class="comment">// Okay, figure out the element size.</span></div>
+<div class="line"><a name="l02523"></a><span class="lineno"> 2523</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> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a> = cast<BinaryOperator>(op.E);</div>
+<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType = expr-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span> </div>
+<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *divisor = 0;</div>
+<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span> </div>
+<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>   <span class="comment">// For a variable-length array, this is going to be non-constant.</span></div>
+<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1VariableArrayType.html">VariableArrayType</a> *vla</div>
+<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>         = CGF.getContext().getAsVariableArrayType(elementType)) {</div>
+<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *numElements;</div>
+<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>     llvm::tie(numElements, elementType) = CGF.getVLASize(vla);</div>
+<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span> </div>
+<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>     divisor = numElements;</div>
+<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span> </div>
+<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>     <span class="comment">// Scale the number of non-VLA elements by the non-VLA element size.</span></div>
+<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> eltSize = CGF.getContext().getTypeSizeInChars(elementType);</div>
+<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>     <span class="keywordflow">if</span> (!eltSize.<a class="code" href="classclang_1_1CharUnits.html#ac02a310fd7d1f2bea9d1a0f0ee8cb9d8" title="isOne - Test whether the quantity equals one.">isOne</a>())</div>
+<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>       divisor = CGF.Builder.CreateNUWMul(CGF.CGM.getSize(eltSize), divisor);</div>
+<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span> </div>
+<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>   <span class="comment">// For everything elese, we can just compute it, safe in the</span></div>
+<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>   <span class="comment">// assumption that Sema won't let anything through that we can't</span></div>
+<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>   <span class="comment">// safely compute the size of.</span></div>
+<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> elementSize;</div>
+<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>     <span class="comment">// Handle GCC extension for pointer arithmetic on void* and</span></div>
+<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>     <span class="comment">// function pointer types.</span></div>
+<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>     <span class="keywordflow">if</span> (elementType->isVoidType() || elementType->isFunctionType())</div>
+<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>       elementSize = <a class="code" href="classclang_1_1CharUnits.html#a99127c36c05fcfabd84a0e26f83a35f6" title="One - Construct a CharUnits quantity of one.">CharUnits::One</a>();</div>
+<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>       elementSize = CGF.getContext().getTypeSizeInChars(elementType);</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">// Don't even emit the divide for element size of 1.</span></div>
+<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>     <span class="keywordflow">if</span> (elementSize.<a class="code" href="classclang_1_1CharUnits.html#ac02a310fd7d1f2bea9d1a0f0ee8cb9d8" title="isOne - Test whether the quantity equals one.">isOne</a>())</div>
+<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>       <span class="keywordflow">return</span> diffInChars;</div>
+<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span> </div>
+<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>     divisor = CGF.CGM.getSize(elementSize);</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">// Otherwise, do a full sdiv. This uses the "exact" form of sdiv, since</span></div>
+<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>   <span class="comment">// pointer difference in C is only defined in the case where both operands</span></div>
+<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>   <span class="comment">// are pointing to elements of an array.</span></div>
+<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateExactSDiv(diffInChars, divisor, <span class="stringliteral">"sub.ptr.div"</span>);</div>
+<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span> }</div>
+<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span> </div>
+<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span> Value *ScalarExprEmitter::GetWidthMinusOneValue(Value* LHS,Value* RHS) {</div>
+<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>   llvm::IntegerType *Ty;</div>
+<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>   <span class="keywordflow">if</span> (llvm::VectorType *VT = dyn_cast<llvm::VectorType>(LHS->getType()))</div>
+<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>     Ty = cast<llvm::IntegerType>(VT->getElementType());</div>
+<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>     Ty = cast<llvm::IntegerType>(LHS->getType());</div>
+<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>   <span class="keywordflow">return</span> llvm::ConstantInt::get(RHS->getType(), Ty->getBitWidth() - 1);</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> </div>
+<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span> Value *ScalarExprEmitter::EmitShl(<span class="keyword">const</span> BinOpInfo &Ops) {</div>
+<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>   <span class="comment">// LLVM requires the LHS and RHS to be the same type: promote or truncate the</span></div>
+<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>   <span class="comment">// RHS to the same size as the LHS.</span></div>
+<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>   Value *RHS = Ops.RHS;</div>
+<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>   <span class="keywordflow">if</span> (Ops.LHS->getType() != RHS->getType())</div>
+<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>     RHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateIntCast(RHS, Ops.LHS->getType(), <span class="keyword">false</span>, <span class="stringliteral">"sh_prom"</span>);</div>
+<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span> </div>
+<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>   <span class="keywordflow">if</span> (CGF.SanOpts->Shift && !CGF.getLangOpts().OpenCL &&</div>
+<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>       isa<llvm::IntegerType>(Ops.LHS->getType())) {</div>
+<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *WidthMinusOne = GetWidthMinusOneValue(Ops.LHS, RHS);</div>
+<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Valid = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpULE(RHS, WidthMinusOne);</div>
+<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span> </div>
+<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>     <span class="keywordflow">if</span> (Ops.Ty->hasSignedIntegerRepresentation()) {</div>
+<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>       llvm::BasicBlock *Orig = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>       llvm::BasicBlock *Cont = CGF.createBasicBlock(<span class="stringliteral">"cont"</span>);</div>
+<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>       llvm::BasicBlock *CheckBitsShifted = CGF.createBasicBlock(<span class="stringliteral">"check"</span>);</div>
+<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>       <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateCondBr(Valid, CheckBitsShifted, Cont);</div>
+<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span> </div>
+<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>       <span class="comment">// Check whether we are shifting any non-zero bits off the top of the</span></div>
+<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>       <span class="comment">// integer.</span></div>
+<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>       CGF.EmitBlock(CheckBitsShifted);</div>
+<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *BitsShiftedOff =</div>
+<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>         <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateLShr(Ops.LHS,</div>
+<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>                            <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSub(WidthMinusOne, RHS, <span class="stringliteral">"shl.zeros"</span>,</div>
+<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>                                              <span class="comment">/*NUW*/</span><span class="keyword">true</span>, <span class="comment">/*NSW*/</span><span class="keyword">true</span>),</div>
+<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>                            <span class="stringliteral">"shl.check"</span>);</div>
+<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>       <span class="keywordflow">if</span> (CGF.getLangOpts().CPlusPlus) {</div>
+<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>         <span class="comment">// In C99, we are not permitted to shift a 1 bit into the sign bit.</span></div>
+<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>         <span class="comment">// Under C++11's rules, shifting a 1 bit into the sign bit is</span></div>
+<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>         <span class="comment">// OK, but shifting a 1 bit out of it is not. (C89 and C++03 don't</span></div>
+<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>         <span class="comment">// define signed left shifts, so we use the C99 and C++11 rules there).</span></div>
+<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *One = llvm::ConstantInt::get(BitsShiftedOff->getType(), 1);</div>
+<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>         BitsShiftedOff = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateLShr(BitsShiftedOff, One);</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>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Zero = llvm::ConstantInt::get(BitsShiftedOff->getType(), 0);</div>
+<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SecondCheck = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpEQ(BitsShiftedOff, Zero);</div>
+<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>       CGF.EmitBlock(Cont);</div>
+<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>       llvm::PHINode *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a> = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreatePHI(Valid->getType(), 2);</div>
+<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>       P->addIncoming(Valid, Orig);</div>
+<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>       P->addIncoming(SecondCheck, CheckBitsShifted);</div>
+<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>       Valid = <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>;</div>
+<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>     }</div>
+<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span> </div>
+<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>     EmitBinOpCheck(Valid, Ops);</div>
+<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>   }</div>
+<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>   <span class="comment">// OpenCL 6.3j: shift values are effectively % word size of LHS.</span></div>
+<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>   <span class="keywordflow">if</span> (CGF.getLangOpts().OpenCL)</div>
+<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>     RHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAnd(RHS, GetWidthMinusOneValue(Ops.LHS, RHS), <span class="stringliteral">"shl.mask"</span>);</div>
+<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span> </div>
+<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateShl(Ops.LHS, RHS, <span class="stringliteral">"shl"</span>);</div>
+<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span> }</div>
+<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span> </div>
+<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span> Value *ScalarExprEmitter::EmitShr(<span class="keyword">const</span> BinOpInfo &Ops) {</div>
+<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>   <span class="comment">// LLVM requires the LHS and RHS to be the same type: promote or truncate the</span></div>
+<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>   <span class="comment">// RHS to the same size as the LHS.</span></div>
+<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>   Value *RHS = Ops.RHS;</div>
+<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>   <span class="keywordflow">if</span> (Ops.LHS->getType() != RHS->getType())</div>
+<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>     RHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateIntCast(RHS, Ops.LHS->getType(), <span class="keyword">false</span>, <span class="stringliteral">"sh_prom"</span>);</div>
+<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span> </div>
+<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>   <span class="keywordflow">if</span> (CGF.SanOpts->Shift && !CGF.getLangOpts().OpenCL &&</div>
+<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>       isa<llvm::IntegerType>(Ops.LHS->getType()))</div>
+<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>     EmitBinOpCheck(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpULE(RHS, GetWidthMinusOneValue(Ops.LHS, RHS)), Ops);</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="comment">// OpenCL 6.3j: shift values are effectively % word size of LHS.</span></div>
+<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>   <span class="keywordflow">if</span> (CGF.getLangOpts().OpenCL)</div>
+<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>     RHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAnd(RHS, GetWidthMinusOneValue(Ops.LHS, RHS), <span class="stringliteral">"shr.mask"</span>);</div>
+<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span> </div>
+<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>   <span class="keywordflow">if</span> (Ops.Ty->hasUnsignedIntegerRepresentation())</div>
+<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateLShr(Ops.LHS, RHS, <span class="stringliteral">"shr"</span>);</div>
+<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAShr(Ops.LHS, RHS, <span class="stringliteral">"shr"</span>);</div>
+<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span> }</div>
+<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span> </div>
+<div class="line"><a name="l02647"></a><span class="lineno"><a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcab23dfc2383fc423a8f1d02e767b2d489"> 2647</a></span> <span class="keyword">enum</span> <a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbc">IntrinsicType</a> { <a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcac66f4aabfb177f65f99bfd6a3ccb3a34">VCMPEQ</a>, <a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcab23dfc2383fc423a8f1d02e767b2d489">VCMPGT</a> };</div>
+<div class="line"><a name="l02648"></a><span class="lineno"> 2648</span> <span class="comment">// return corresponding comparison intrinsic for given vector type</span></div>
+<div class="line"><a name="l02649"></a><span class="lineno"><a class="code" href="CGExprScalar_8cpp.html#a3a3a9b7213452a3bbc79a4e4090c5d2c"> 2649</a></span> <span class="keyword">static</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">llvm::Intrinsic::ID</a> <a class="code" href="CGExprScalar_8cpp.html#a3a3a9b7213452a3bbc79a4e4090c5d2c">GetIntrinsic</a>(<a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbc">IntrinsicType</a> IT,</div>
+<div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>                                         <a class="code" href="classclang_1_1BuiltinType.html#a77af33eaf2daca5deac3719c53394eb0">BuiltinType::Kind</a> ElemKind) {</div>
+<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>   <span class="keywordflow">switch</span> (ElemKind) {</div>
+<div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>   <span class="keywordflow">default</span>: llvm_unreachable(<span class="stringliteral">"unexpected element type"</span>);</div>
+<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>   <span class="keywordflow">case</span> BuiltinType::Char_U:</div>
+<div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>   <span class="keywordflow">case</span> BuiltinType::UChar:</div>
+<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>     <span class="keywordflow">return</span> (IT == <a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcac66f4aabfb177f65f99bfd6a3ccb3a34">VCMPEQ</a>) ? llvm::Intrinsic::ppc_altivec_vcmpequb_p :</div>
+<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>                             llvm::Intrinsic::ppc_altivec_vcmpgtub_p;</div>
+<div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>   <span class="keywordflow">case</span> BuiltinType::Char_S:</div>
+<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>   <span class="keywordflow">case</span> BuiltinType::SChar:</div>
+<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>     <span class="keywordflow">return</span> (IT == <a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcac66f4aabfb177f65f99bfd6a3ccb3a34">VCMPEQ</a>) ? llvm::Intrinsic::ppc_altivec_vcmpequb_p :</div>
+<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>                             llvm::Intrinsic::ppc_altivec_vcmpgtsb_p;</div>
+<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>   <span class="keywordflow">case</span> BuiltinType::UShort:</div>
+<div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>     <span class="keywordflow">return</span> (IT == <a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcac66f4aabfb177f65f99bfd6a3ccb3a34">VCMPEQ</a>) ? llvm::Intrinsic::ppc_altivec_vcmpequh_p :</div>
+<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>                             llvm::Intrinsic::ppc_altivec_vcmpgtuh_p;</div>
+<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>   <span class="keywordflow">case</span> BuiltinType::Short:</div>
+<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>     <span class="keywordflow">return</span> (IT == <a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcac66f4aabfb177f65f99bfd6a3ccb3a34">VCMPEQ</a>) ? llvm::Intrinsic::ppc_altivec_vcmpequh_p :</div>
+<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>                             llvm::Intrinsic::ppc_altivec_vcmpgtsh_p;</div>
+<div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>   <span class="keywordflow">case</span> BuiltinType::UInt:</div>
+<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>   <span class="keywordflow">case</span> BuiltinType::ULong:</div>
+<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>     <span class="keywordflow">return</span> (IT == <a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcac66f4aabfb177f65f99bfd6a3ccb3a34">VCMPEQ</a>) ? llvm::Intrinsic::ppc_altivec_vcmpequw_p :</div>
+<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>                             llvm::Intrinsic::ppc_altivec_vcmpgtuw_p;</div>
+<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>   <span class="keywordflow">case</span> BuiltinType::Int:</div>
+<div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>   <span class="keywordflow">case</span> BuiltinType::Long:</div>
+<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>     <span class="keywordflow">return</span> (IT == <a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcac66f4aabfb177f65f99bfd6a3ccb3a34">VCMPEQ</a>) ? llvm::Intrinsic::ppc_altivec_vcmpequw_p :</div>
+<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>                             llvm::Intrinsic::ppc_altivec_vcmpgtsw_p;</div>
+<div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>   <span class="keywordflow">case</span> BuiltinType::Float:</div>
+<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>     <span class="keywordflow">return</span> (IT == <a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcac66f4aabfb177f65f99bfd6a3ccb3a34">VCMPEQ</a>) ? llvm::Intrinsic::ppc_altivec_vcmpeqfp_p :</div>
+<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>                             llvm::Intrinsic::ppc_altivec_vcmpgtfp_p;</div>
+<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>   }</div>
+<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span> }</div>
+<div class="line"><a name="l02680"></a><span class="lineno"> 2680</span> </div>
+<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span> Value *ScalarExprEmitter::EmitCompare(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E,<span class="keywordtype">unsigned</span> UICmpOpc,</div>
+<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>                                       <span class="keywordtype">unsigned</span> SICmpOpc, <span class="keywordtype">unsigned</span> FCmpOpc) {</div>
+<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>   TestAndClearIgnoreResultAssign();</div>
+<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>   Value *Result;</div>
+<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> LHSTy = E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT = LHSTy-><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="l02687"></a><span class="lineno"> 2687</span>     assert(E-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a69f29b9100be3ced416f394df1b8387d">BO_EQ</a> ||</div>
+<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>            E-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a>);</div>
+<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>     Value *LHS = CGF.EmitScalarExpr(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>());</div>
+<div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>     Value *RHS = CGF.EmitScalarExpr(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>     Result = CGF.CGM.getCXXABI().EmitMemberPointerComparison(</div>
+<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>                    CGF, LHS, RHS, MPT, E-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a>);</div>
+<div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!LHSTy-><a class="code" href="classclang_1_1Type.html#a292ac10726adf5426212b5c6ee14d9bb">isAnyComplexType</a>()) {</div>
+<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>     Value *LHS = Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>());</div>
+<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>     Value *RHS = Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02696"></a><span class="lineno"> 2696</span> </div>
+<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>     <span class="comment">// If AltiVec, the comparison results in a numeric type, so we use</span></div>
+<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>     <span class="comment">// intrinsics comparing vectors and giving 0 or 1 as a result</span></div>
+<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>     <span class="keywordflow">if</span> (LHSTy-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>() && !E-><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="l02700"></a><span class="lineno"> 2700</span>       <span class="comment">// constants for mapping CR6 register bits to predicate result</span></div>
+<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>       <span class="keyword">enum</span> { CR6_EQ=0, CR6_EQ_REV, CR6_LT, CR6_LT_REV } CR6;</div>
+<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span> </div>
+<div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>       <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">llvm::Intrinsic::ID</a> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> = llvm::Intrinsic::not_intrinsic;</div>
+<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span> </div>
+<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>       <span class="comment">// in several cases vector arguments order will be reversed</span></div>
+<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>       Value *FirstVecArg = LHS,</div>
+<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>             *SecondVecArg = RHS;</div>
+<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span> </div>
+<div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> ElTy = LHSTy-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1VectorType.html">VectorType</a>>()-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1BuiltinType.html">BuiltinType</a> *BTy = ElTy-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1BuiltinType.html">BuiltinType</a>>();</div>
+<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>       <a class="code" href="classclang_1_1BuiltinType.html#a77af33eaf2daca5deac3719c53394eb0">BuiltinType::Kind</a> ElementKind = BTy-><a class="code" href="classclang_1_1BuiltinType.html#aa4dd813e340ed81bcb67bf090152af2a">getKind</a>();</div>
+<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span> </div>
+<div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>       <span class="keywordflow">switch</span>(E-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()) {</div>
+<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>       <span class="keywordflow">default</span>: llvm_unreachable(<span class="stringliteral">"is not a comparison operation"</span>);</div>
+<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a69f29b9100be3ced416f394df1b8387d">BO_EQ</a>:</div>
+<div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>         CR6 = CR6_LT;</div>
+<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>         ID = <a class="code" href="CGExprScalar_8cpp.html#a3a3a9b7213452a3bbc79a4e4090c5d2c">GetIntrinsic</a>(<a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcac66f4aabfb177f65f99bfd6a3ccb3a34">VCMPEQ</a>, ElementKind);</div>
+<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a>:</div>
+<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>         CR6 = CR6_EQ;</div>
+<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>         ID = <a class="code" href="CGExprScalar_8cpp.html#a3a3a9b7213452a3bbc79a4e4090c5d2c">GetIntrinsic</a>(<a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcac66f4aabfb177f65f99bfd6a3ccb3a34">VCMPEQ</a>, ElementKind);</div>
+<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a34afd641c1839b1ebdf5b96779becc5e">BO_LT</a>:</div>
+<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>         CR6 = CR6_LT;</div>
+<div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>         ID = <a class="code" href="CGExprScalar_8cpp.html#a3a3a9b7213452a3bbc79a4e4090c5d2c">GetIntrinsic</a>(<a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcab23dfc2383fc423a8f1d02e767b2d489">VCMPGT</a>, ElementKind);</div>
+<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>         std::swap(FirstVecArg, SecondVecArg);</div>
+<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a9ff57a80bfff7f4a29cfc5ea9525ed6f">BO_GT</a>:</div>
+<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>         CR6 = CR6_LT;</div>
+<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>         ID = <a class="code" href="CGExprScalar_8cpp.html#a3a3a9b7213452a3bbc79a4e4090c5d2c">GetIntrinsic</a>(<a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcab23dfc2383fc423a8f1d02e767b2d489">VCMPGT</a>, ElementKind);</div>
+<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab1b013f11421020dffa959a6c1ed45af">BO_LE</a>:</div>
+<div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>         <span class="keywordflow">if</span> (ElementKind == BuiltinType::Float) {</div>
+<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>           CR6 = CR6_LT;</div>
+<div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>           ID = llvm::Intrinsic::ppc_altivec_vcmpgefp_p;</div>
+<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>           std::swap(FirstVecArg, SecondVecArg);</div>
+<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>         }</div>
+<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>         <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>           CR6 = CR6_EQ;</div>
+<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>           ID = <a class="code" href="CGExprScalar_8cpp.html#a3a3a9b7213452a3bbc79a4e4090c5d2c">GetIntrinsic</a>(<a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcab23dfc2383fc423a8f1d02e767b2d489">VCMPGT</a>, ElementKind);</div>
+<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>         }</div>
+<div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a49c5777674892e127aeeb0746b18a1e2">BO_GE</a>:</div>
+<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>         <span class="keywordflow">if</span> (ElementKind == BuiltinType::Float) {</div>
+<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>           CR6 = CR6_LT;</div>
+<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>           ID = llvm::Intrinsic::ppc_altivec_vcmpgefp_p;</div>
+<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>         }</div>
+<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>         <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>           CR6 = CR6_EQ;</div>
+<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>           ID = <a class="code" href="CGExprScalar_8cpp.html#a3a3a9b7213452a3bbc79a4e4090c5d2c">GetIntrinsic</a>(<a class="code" href="CGExprScalar_8cpp.html#a305cd7b2d5ede40e72db4ce438993fbcab23dfc2383fc423a8f1d02e767b2d489">VCMPGT</a>, ElementKind);</div>
+<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>           std::swap(FirstVecArg, SecondVecArg);</div>
+<div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>         }</div>
+<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02754"></a><span class="lineno"> 2754</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>       Value *CR6Param = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(CR6);</div>
+<div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>       llvm::Function *F = CGF.CGM.getIntrinsic(ID);</div>
+<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>       Result = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateCall3(F, CR6Param, FirstVecArg, SecondVecArg, <span class="stringliteral">""</span>);</div>
+<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>       <span class="keywordflow">return</span> EmitScalarConversion(Result, CGF.getContext().BoolTy, E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>     }</div>
+<div class="line"><a name="l02761"></a><span class="lineno"> 2761</span> </div>
+<div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>     <span class="keywordflow">if</span> (LHS->getType()->isFPOrFPVectorTy()) {</div>
+<div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>       Result = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmp((llvm::CmpInst::Predicate)FCmpOpc,</div>
+<div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>                                   LHS, RHS, <span class="stringliteral">"cmp"</span>);</div>
+<div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (LHSTy-><a class="code" href="classclang_1_1Type.html#a63c57da9e0790bd606480927192498be" title="Determine whether this type has an signed integer representation of some sort, e.g., it is an signed integer type or a vector.">hasSignedIntegerRepresentation</a>()) {</div>
+<div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>       Result = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmp((llvm::ICmpInst::Predicate)SICmpOpc,</div>
+<div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>                                   LHS, RHS, <span class="stringliteral">"cmp"</span>);</div>
+<div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>       <span class="comment">// Unsigned integers and pointers.</span></div>
+<div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>       Result = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmp((llvm::ICmpInst::Predicate)UICmpOpc,</div>
+<div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>                                   LHS, RHS, <span class="stringliteral">"cmp"</span>);</div>
+<div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>     }</div>
+<div class="line"><a name="l02773"></a><span class="lineno"> 2773</span> </div>
+<div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>     <span class="comment">// If this is a vector comparison, sign extend the result to the appropriate</span></div>
+<div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>     <span class="comment">// vector integer type and return it (don't convert to bool).</span></div>
+<div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>     <span class="keywordflow">if</span> (LHSTy-><a class="code" href="classclang_1_1Type.html#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>())</div>
+<div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>       <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSExt(Result, ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()), <span class="stringliteral">"sext"</span>);</div>
+<div class="line"><a name="l02778"></a><span class="lineno"> 2778</span> </div>
+<div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>     <span class="comment">// Complex Comparison: can only be an equality comparison.</span></div>
+<div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae417ed4971c18c5ce0607e1be62ec117">CodeGenFunction::ComplexPairTy</a> LHS = CGF.EmitComplexExpr(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>());</div>
+<div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae417ed4971c18c5ce0607e1be62ec117">CodeGenFunction::ComplexPairTy</a> RHS = CGF.EmitComplexExpr(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02783"></a><span class="lineno"> 2783</span> </div>
+<div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> CETy = LHSTy-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ComplexType.html">ComplexType</a>>()-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l02785"></a><span class="lineno"> 2785</span> </div>
+<div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>     Value *ResultR, *ResultI;</div>
+<div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>     <span class="keywordflow">if</span> (CETy-><a class="code" href="classclang_1_1Type.html#a1c534c15a8299e5d31f356edb725c31f" title="Floating point categories.">isRealFloatingType</a>()) {</div>
+<div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>       ResultR = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmp((llvm::FCmpInst::Predicate)FCmpOpc,</div>
+<div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>                                    LHS.first, RHS.first, <span class="stringliteral">"cmp.r"</span>);</div>
+<div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>       ResultI = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmp((llvm::FCmpInst::Predicate)FCmpOpc,</div>
+<div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>                                    LHS.second, RHS.second, <span class="stringliteral">"cmp.i"</span>);</div>
+<div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>       <span class="comment">// Complex comparisons can only be equality comparisons.  As such, signed</span></div>
+<div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>       <span class="comment">// and unsigned opcodes are the same.</span></div>
+<div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>       ResultR = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmp((llvm::ICmpInst::Predicate)UICmpOpc,</div>
+<div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>                                    LHS.first, RHS.first, <span class="stringliteral">"cmp.r"</span>);</div>
+<div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>       ResultI = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmp((llvm::ICmpInst::Predicate)UICmpOpc,</div>
+<div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>                                    LHS.second, RHS.second, <span class="stringliteral">"cmp.i"</span>);</div>
+<div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>     }</div>
+<div class="line"><a name="l02800"></a><span class="lineno"> 2800</span> </div>
+<div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a69f29b9100be3ced416f394df1b8387d">BO_EQ</a>) {</div>
+<div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>       Result = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAnd(ResultR, ResultI, <span class="stringliteral">"and.ri"</span>);</div>
+<div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>       assert(E-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a> &&</div>
+<div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>              <span class="stringliteral">"Complex comparison other than == or != ?"</span>);</div>
+<div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>       Result = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateOr(ResultR, ResultI, <span class="stringliteral">"or.ri"</span>);</div>
+<div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>     }</div>
+<div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>   }</div>
+<div class="line"><a name="l02809"></a><span class="lineno"> 2809</span> </div>
+<div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>   <span class="keywordflow">return</span> EmitScalarConversion(Result, CGF.getContext().BoolTy, E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l02811"></a><span class="lineno"> 2811</span> }</div>
+<div class="line"><a name="l02812"></a><span class="lineno"> 2812</span> </div>
+<div class="line"><a name="l02813"></a><span class="lineno"> 2813</span> Value *ScalarExprEmitter::VisitBinAssign(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E) {</div>
+<div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>   <span class="keywordtype">bool</span> Ignore = TestAndClearIgnoreResultAssign();</div>
+<div class="line"><a name="l02815"></a><span class="lineno"> 2815</span> </div>
+<div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>   Value *RHS;</div>
+<div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LHS;</div>
+<div class="line"><a name="l02818"></a><span class="lineno"> 2818</span> </div>
+<div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>   <span class="keywordflow">switch</span> (E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>().<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>()) {</div>
+<div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>:</div>
+<div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>     llvm::tie(LHS, RHS) = CGF.EmitARCStoreStrong(E, Ignore);</div>
+<div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02823"></a><span class="lineno"> 2823</span> </div>
+<div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300afd7d211973aef2cc5945b96a963f0e4f" title="Assigning into this object requires a lifetime extension.">Qualifiers::OCL_Autoreleasing</a>:</div>
+<div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>     llvm::tie(LHS,RHS) = CGF.EmitARCStoreAutoreleasing(E);</div>
+<div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02827"></a><span class="lineno"> 2827</span> </div>
+<div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300ad62a7a19d7027c37d407d2ca7638a89c" title="Reading or writing from this object requires a barrier call.">Qualifiers::OCL_Weak</a>:</div>
+<div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>     RHS = Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>     LHS = EmitCheckedLValue(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>(), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a506527ab7d0b728228596e9a81c811c6a958228d51bdf7739b42b3131a3f64ecd" title="Checking the destination of a store. Must be suitably sized and aligned.">CodeGenFunction::TCK_Store</a>);</div>
+<div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>     RHS = CGF.EmitARCStoreWeak(LHS.getAddress(), RHS, Ignore);</div>
+<div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02833"></a><span class="lineno"> 2833</span> </div>
+<div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>   <span class="comment">// No reason to do any of these differently.</span></div>
+<div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a29b319bca942e44bf183ca2749b072b3" title="There is no lifetime qualification on this type.">Qualifiers::OCL_None</a>:</div>
+<div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a>:</div>
+<div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>     <span class="comment">// __block variables need to have the rhs evaluated first, plus</span></div>
+<div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>     <span class="comment">// this should improve codegen just a little.</span></div>
+<div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>     RHS = Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>     LHS = EmitCheckedLValue(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>(), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a506527ab7d0b728228596e9a81c811c6a958228d51bdf7739b42b3131a3f64ecd" title="Checking the destination of a store. Must be suitably sized and aligned.">CodeGenFunction::TCK_Store</a>);</div>
+<div class="line"><a name="l02841"></a><span class="lineno"> 2841</span> </div>
+<div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>     <span class="comment">// Store the value into the LHS.  Bit-fields are handled specially</span></div>
+<div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>     <span class="comment">// because the result is altered by the store, i.e., [C99 6.5.16p1]</span></div>
+<div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>     <span class="comment">// 'An assignment expression has the value of the left operand after</span></div>
+<div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>     <span class="comment">// the assignment...'.</span></div>
+<div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>     <span class="keywordflow">if</span> (LHS.isBitField())</div>
+<div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>       CGF.EmitStoreThroughBitfieldLValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(RHS), LHS, &RHS);</div>
+<div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>       CGF.EmitStoreThroughLValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(RHS), LHS);</div>
+<div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>   }</div>
+<div class="line"><a name="l02851"></a><span class="lineno"> 2851</span> </div>
+<div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>   <span class="comment">// If the result is clearly ignored, return now.</span></div>
+<div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>   <span class="keywordflow">if</span> (Ignore)</div>
+<div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02855"></a><span class="lineno"> 2855</span> </div>
+<div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>   <span class="comment">// The result of an assignment in C is the assigned r-value.</span></div>
+<div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>   <span class="keywordflow">if</span> (!CGF.getLangOpts().CPlusPlus)</div>
+<div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>     <span class="keywordflow">return</span> RHS;</div>
+<div class="line"><a name="l02859"></a><span class="lineno"> 2859</span> </div>
+<div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>   <span class="comment">// If the lvalue is non-volatile, return the computed value of the assignment.</span></div>
+<div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>   <span class="keywordflow">if</span> (!LHS.isVolatileQualified())</div>
+<div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>     <span class="keywordflow">return</span> RHS;</div>
+<div class="line"><a name="l02863"></a><span class="lineno"> 2863</span> </div>
+<div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>   <span class="comment">// Otherwise, reload the value.</span></div>
+<div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>   <span class="keywordflow">return</span> EmitLoadOfLValue(LHS, E-><a class="code" href="classclang_1_1BinaryOperator.html#a642bb6cf9d51c986a6e7108b40cb3e9f">getExprLoc</a>());</div>
+<div class="line"><a name="l02866"></a><span class="lineno"> 2866</span> }</div>
+<div class="line"><a name="l02867"></a><span class="lineno"> 2867</span> </div>
+<div class="line"><a name="l02868"></a><span class="lineno"> 2868</span> Value *ScalarExprEmitter::VisitBinLAnd(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E) {</div>
+<div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>   <span class="comment">// Perform vector logical and on comparisons with zero vectors.</span></div>
+<div class="line"><a name="l02870"></a><span class="lineno"> 2870</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#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>()) {</div>
+<div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>     Value *LHS = Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>());</div>
+<div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>     Value *RHS = Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>     Value *Zero = llvm::ConstantAggregateZero::get(LHS->getType());</div>
+<div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>     <span class="keywordflow">if</span> (LHS->getType()->isFPOrFPVectorTy()) {</div>
+<div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>       LHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmp(llvm::CmpInst::FCMP_UNE, LHS, Zero, <span class="stringliteral">"cmp"</span>);</div>
+<div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>       RHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmp(llvm::CmpInst::FCMP_UNE, RHS, Zero, <span class="stringliteral">"cmp"</span>);</div>
+<div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>       LHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmp(llvm::CmpInst::ICMP_NE, LHS, Zero, <span class="stringliteral">"cmp"</span>);</div>
+<div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>       RHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmp(llvm::CmpInst::ICMP_NE, RHS, Zero, <span class="stringliteral">"cmp"</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>     Value *<a class="code" href="namespaceclang_1_1prec.html#a9bfbe31f4770359ea44ad42e7c7ed8ffa9d7a7abf42694a4a2d4f1f322cf62d5c">And</a> = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAnd(LHS, RHS);</div>
+<div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSExt(And, ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()), <span class="stringliteral">"sext"</span>);</div>
+<div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>   }</div>
+<div class="line"><a name="l02884"></a><span class="lineno"> 2884</span> </div>
+<div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>   llvm::Type *ResTy = ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l02886"></a><span class="lineno"> 2886</span> </div>
+<div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>   <span class="comment">// If we have 0 && RHS, see if we can elide RHS, if so, just return 0.</span></div>
+<div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>   <span class="comment">// If we have 1 && X, just emit X without inserting the control flow.</span></div>
+<div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>   <span class="keywordtype">bool</span> LHSCondVal;</div>
+<div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>   <span class="keywordflow">if</span> (CGF.ConstantFoldsToSimpleInteger(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>(), LHSCondVal)) {</div>
+<div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>     <span class="keywordflow">if</span> (LHSCondVal) { <span class="comment">// If we have 1 && X, just emit X.</span></div>
+<div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>       Value *RHSCond = CGF.EvaluateExprAsBool(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>       <span class="comment">// ZExt result to int or bool.</span></div>
+<div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>       <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateZExtOrBitCast(RHSCond, ResTy, <span class="stringliteral">"land.ext"</span>);</div>
+<div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>     }</div>
+<div class="line"><a name="l02896"></a><span class="lineno"> 2896</span> </div>
+<div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>     <span class="comment">// 0 && RHS: If it is safe, just elide the RHS, and return 0/false.</span></div>
+<div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>     <span class="keywordflow">if</span> (!CGF.ContainsLabel(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()))</div>
+<div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>       <span class="keywordflow">return</span> llvm::Constant::getNullValue(ResTy);</div>
+<div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>   }</div>
+<div class="line"><a name="l02901"></a><span class="lineno"> 2901</span> </div>
+<div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>   llvm::BasicBlock *ContBlock = CGF.createBasicBlock(<span class="stringliteral">"land.end"</span>);</div>
+<div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>   llvm::BasicBlock *RHSBlock  = CGF.createBasicBlock(<span class="stringliteral">"land.rhs"</span>);</div>
+<div class="line"><a name="l02904"></a><span class="lineno"> 2904</span> </div>
+<div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1ConditionalEvaluation.html" title="An object to manage conditionally-evaluated expressions.">CodeGenFunction::ConditionalEvaluation</a> eval(CGF);</div>
+<div class="line"><a name="l02906"></a><span class="lineno"> 2906</span> </div>
+<div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>   <span class="comment">// Branch on the LHS first.  If it is false, go to the failure (cont) block.</span></div>
+<div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>   CGF.EmitBranchOnBoolExpr(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>(), RHSBlock, ContBlock);</div>
+<div class="line"><a name="l02909"></a><span class="lineno"> 2909</span> </div>
+<div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>   <span class="comment">// Any edges into the ContBlock are now from an (indeterminate number of)</span></div>
+<div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>   <span class="comment">// edges from this first condition.  All of these values will be false.  Start</span></div>
+<div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>   <span class="comment">// setting up the PHI node in the Cont Block for this.</span></div>
+<div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>   llvm::PHINode *PN = llvm::PHINode::Create(llvm::Type::getInt1Ty(VMContext), 2,</div>
+<div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>                                             <span class="stringliteral">""</span>, ContBlock);</div>
+<div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>   <span class="keywordflow">for</span> (llvm::pred_iterator PI = pred_begin(ContBlock), PE = pred_end(ContBlock);</div>
+<div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>        PI != PE; ++PI)</div>
+<div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>     PN->addIncoming(llvm::ConstantInt::getFalse(VMContext), *PI);</div>
+<div class="line"><a name="l02918"></a><span class="lineno"> 2918</span> </div>
+<div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>   eval.begin(CGF);</div>
+<div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>   CGF.EmitBlock(RHSBlock);</div>
+<div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>   Value *RHSCond = CGF.EvaluateExprAsBool(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>   eval.end(CGF);</div>
+<div class="line"><a name="l02923"></a><span class="lineno"> 2923</span> </div>
+<div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>   <span class="comment">// Reaquire the RHS block, as there may be subblocks inserted.</span></div>
+<div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>   RHSBlock = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l02926"></a><span class="lineno"> 2926</span> </div>
+<div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>   <span class="comment">// Emit an unconditional branch from this block to ContBlock.  Insert an entry</span></div>
+<div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>   <span class="comment">// into the phi node for the edge with the value of RHSCond.</span></div>
+<div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>   <span class="keywordflow">if</span> (CGF.getDebugInfo())</div>
+<div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>     <span class="comment">// There is no need to emit line number for unconditional branch.</span></div>
+<div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.SetCurrentDebugLocation(llvm::DebugLoc());</div>
+<div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>   CGF.EmitBlock(ContBlock);</div>
+<div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>   PN->addIncoming(RHSCond, RHSBlock);</div>
+<div class="line"><a name="l02934"></a><span class="lineno"> 2934</span> </div>
+<div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>   <span class="comment">// ZExt result to int.</span></div>
+<div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateZExtOrBitCast(PN, ResTy, <span class="stringliteral">"land.ext"</span>);</div>
+<div class="line"><a name="l02937"></a><span class="lineno"> 2937</span> }</div>
+<div class="line"><a name="l02938"></a><span class="lineno"> 2938</span> </div>
+<div class="line"><a name="l02939"></a><span class="lineno"> 2939</span> Value *ScalarExprEmitter::VisitBinLOr(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E) {</div>
+<div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>   <span class="comment">// Perform vector logical or on comparisons with zero vectors.</span></div>
+<div class="line"><a name="l02941"></a><span class="lineno"> 2941</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#aa19525a5a362d0b9b6792ca383889c12">isVectorType</a>()) {</div>
+<div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>     Value *LHS = Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>());</div>
+<div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>     Value *RHS = Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>     Value *Zero = llvm::ConstantAggregateZero::get(LHS->getType());</div>
+<div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>     <span class="keywordflow">if</span> (LHS->getType()->isFPOrFPVectorTy()) {</div>
+<div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>       LHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmp(llvm::CmpInst::FCMP_UNE, LHS, Zero, <span class="stringliteral">"cmp"</span>);</div>
+<div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>       RHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateFCmp(llvm::CmpInst::FCMP_UNE, RHS, Zero, <span class="stringliteral">"cmp"</span>);</div>
+<div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>       LHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmp(llvm::CmpInst::ICMP_NE, LHS, Zero, <span class="stringliteral">"cmp"</span>);</div>
+<div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>       RHS = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmp(llvm::CmpInst::ICMP_NE, RHS, Zero, <span class="stringliteral">"cmp"</span>);</div>
+<div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>     }</div>
+<div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>     Value *Or = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateOr(LHS, RHS);</div>
+<div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSExt(Or, ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()), <span class="stringliteral">"sext"</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> </div>
+<div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>   llvm::Type *ResTy = ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l02957"></a><span class="lineno"> 2957</span> </div>
+<div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>   <span class="comment">// If we have 1 || RHS, see if we can elide RHS, if so, just return 1.</span></div>
+<div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>   <span class="comment">// If we have 0 || X, just emit X without inserting the control flow.</span></div>
+<div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>   <span class="keywordtype">bool</span> LHSCondVal;</div>
+<div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>   <span class="keywordflow">if</span> (CGF.ConstantFoldsToSimpleInteger(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>(), LHSCondVal)) {</div>
+<div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>     <span class="keywordflow">if</span> (!LHSCondVal) { <span class="comment">// If we have 0 || X, just emit X.</span></div>
+<div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>       Value *RHSCond = CGF.EvaluateExprAsBool(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>       <span class="comment">// ZExt result to int or bool.</span></div>
+<div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>       <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateZExtOrBitCast(RHSCond, ResTy, <span class="stringliteral">"lor.ext"</span>);</div>
+<div class="line"><a name="l02966"></a><span class="lineno"> 2966</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="comment">// 1 || RHS: If it is safe, just elide the RHS, and return 1/true.</span></div>
+<div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>     <span class="keywordflow">if</span> (!CGF.ContainsLabel(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()))</div>
+<div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>       <span class="keywordflow">return</span> llvm::ConstantInt::get(ResTy, 1);</div>
+<div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>   }</div>
+<div class="line"><a name="l02972"></a><span class="lineno"> 2972</span> </div>
+<div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>   llvm::BasicBlock *ContBlock = CGF.createBasicBlock(<span class="stringliteral">"lor.end"</span>);</div>
+<div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>   llvm::BasicBlock *RHSBlock = CGF.createBasicBlock(<span class="stringliteral">"lor.rhs"</span>);</div>
+<div class="line"><a name="l02975"></a><span class="lineno"> 2975</span> </div>
+<div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1ConditionalEvaluation.html" title="An object to manage conditionally-evaluated expressions.">CodeGenFunction::ConditionalEvaluation</a> eval(CGF);</div>
+<div class="line"><a name="l02977"></a><span class="lineno"> 2977</span> </div>
+<div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>   <span class="comment">// Branch on the LHS first.  If it is true, go to the success (cont) block.</span></div>
+<div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>   CGF.EmitBranchOnBoolExpr(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>(), ContBlock, RHSBlock);</div>
+<div class="line"><a name="l02980"></a><span class="lineno"> 2980</span> </div>
+<div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>   <span class="comment">// Any edges into the ContBlock are now from an (indeterminate number of)</span></div>
+<div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>   <span class="comment">// edges from this first condition.  All of these values will be true.  Start</span></div>
+<div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>   <span class="comment">// setting up the PHI node in the Cont Block for this.</span></div>
+<div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>   llvm::PHINode *PN = llvm::PHINode::Create(llvm::Type::getInt1Ty(VMContext), 2,</div>
+<div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>                                             <span class="stringliteral">""</span>, ContBlock);</div>
+<div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>   <span class="keywordflow">for</span> (llvm::pred_iterator PI = pred_begin(ContBlock), PE = pred_end(ContBlock);</div>
+<div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>        PI != PE; ++PI)</div>
+<div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>     PN->addIncoming(llvm::ConstantInt::getTrue(VMContext), *PI);</div>
+<div class="line"><a name="l02989"></a><span class="lineno"> 2989</span> </div>
+<div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>   eval.begin(CGF);</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="comment">// Emit the RHS condition as a bool value.</span></div>
+<div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>   CGF.EmitBlock(RHSBlock);</div>
+<div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>   Value *RHSCond = CGF.EvaluateExprAsBool(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02995"></a><span class="lineno"> 2995</span> </div>
+<div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>   eval.end(CGF);</div>
+<div class="line"><a name="l02997"></a><span class="lineno"> 2997</span> </div>
+<div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>   <span class="comment">// Reaquire the RHS block, as there may be subblocks inserted.</span></div>
+<div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>   RHSBlock = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock();</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="comment">// Emit an unconditional branch from this block to ContBlock.  Insert an entry</span></div>
+<div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>   <span class="comment">// into the phi node for the edge with the value of RHSCond.</span></div>
+<div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>   CGF.EmitBlock(ContBlock);</div>
+<div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>   PN->addIncoming(RHSCond, RHSBlock);</div>
+<div class="line"><a name="l03005"></a><span class="lineno"> 3005</span> </div>
+<div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>   <span class="comment">// ZExt result to int.</span></div>
+<div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateZExtOrBitCast(PN, ResTy, <span class="stringliteral">"lor.ext"</span>);</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> </div>
+<div class="line"><a name="l03010"></a><span class="lineno"> 3010</span> Value *ScalarExprEmitter::VisitBinComma(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E) {</div>
+<div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>   CGF.EmitIgnoredExpr(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>());</div>
+<div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>   CGF.EnsureInsertPoint();</div>
+<div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>   <span class="keywordflow">return</span> Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l03014"></a><span class="lineno"> 3014</span> }</div>
+<div class="line"><a name="l03015"></a><span class="lineno"> 3015</span> </div>
+<div class="line"><a name="l03016"></a><span class="lineno"> 3016</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l03017"></a><span class="lineno"> 3017</span> <span class="comment">//                             Other Operators</span></div>
+<div class="line"><a name="l03018"></a><span class="lineno"> 3018</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l03019"></a><span class="lineno"> 3019</span> <span class="comment"></span></div>
+<div class="line"><a name="l03020"></a><span class="lineno"> 3020</span> <span class="comment">/// isCheapEnoughToEvaluateUnconditionally - Return true if the specified</span></div>
+<div class="line"><a name="l03021"></a><span class="lineno"> 3021</span> <span class="comment">/// expression is cheap enough and side-effect-free enough to evaluate</span></div>
+<div class="line"><a name="l03022"></a><span class="lineno"> 3022</span> <span class="comment">/// unconditionally instead of conditionally.  This is used to convert control</span></div>
+<div class="line"><a name="l03023"></a><span class="lineno"> 3023</span> <span class="comment">/// flow into selects in some cases.</span></div>
+<div class="line"><a name="l03024"></a><span class="lineno"><a class="code" href="CGExprScalar_8cpp.html#a4ab82c1e9377d2391c055b790ea5c38b"> 3024</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGExprScalar_8cpp.html#a4ab82c1e9377d2391c055b790ea5c38b">isCheapEnoughToEvaluateUnconditionally</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E,</div>
+<div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>                                                    <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>   <span class="comment">// Anything that is an integer or floating point constant is fine.</span></div>
+<div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>   <span class="keywordflow">return</span> E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>()-><a class="code" href="classclang_1_1Expr.html#a34ea5af15a7a831d0b9b872ee1faf7ed">isEvaluatable</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>());</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>   <span class="comment">// Even non-volatile automatic variables can't be evaluated unconditionally.</span></div>
+<div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>   <span class="comment">// Referencing a thread_local may cause non-trivial initialization work to</span></div>
+<div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>   <span class="comment">// occur. If we're inside a lambda and one of the variables is from the scope</span></div>
+<div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>   <span class="comment">// outside the lambda, that function may have returned already. Reading its</span></div>
+<div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>   <span class="comment">// locals is a bad idea. Also, these reads may introduce races there didn't</span></div>
+<div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>   <span class="comment">// exist in the source-level program.</span></div>
+<div class="line"><a name="l03035"></a><span class="lineno"> 3035</span> }</div>
+<div class="line"><a name="l03036"></a><span class="lineno"> 3036</span> </div>
+<div class="line"><a name="l03037"></a><span class="lineno"> 3037</span> </div>
+<div class="line"><a name="l03038"></a><span class="lineno"> 3038</span> Value *ScalarExprEmitter::</div>
+<div class="line"><a name="l03039"></a><span class="lineno"> 3039</span> VisitAbstractConditionalOperator(<span class="keyword">const</span> <a class="code" href="classclang_1_1AbstractConditionalOperator.html">AbstractConditionalOperator</a> *E) {</div>
+<div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>   TestAndClearIgnoreResultAssign();</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>   <span class="comment">// Bind the common expression if necessary.</span></div>
+<div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1OpaqueValueMapping.html" title="An RAII object to set (and then clear) a mapping for an OpaqueValueExpr.">CodeGenFunction::OpaqueValueMapping</a> binding(CGF, E);</div>
+<div class="line"><a name="l03044"></a><span class="lineno"> 3044</span> </div>
+<div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *condExpr = E-><a class="code" href="classclang_1_1AbstractConditionalOperator.html#aeffaff2841ac6c51481c62dbaa6da068">getCond</a>();</div>
+<div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *lhsExpr = E-><a class="code" href="classclang_1_1AbstractConditionalOperator.html#aefd0046134a76b3b5d4b517d5ad3b7c8">getTrueExpr</a>();</div>
+<div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *rhsExpr = E-><a class="code" href="classclang_1_1AbstractConditionalOperator.html#a1b8c4e1f971e272272a329653153e8c1">getFalseExpr</a>();</div>
+<div class="line"><a name="l03048"></a><span class="lineno"> 3048</span> </div>
+<div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>   <span class="comment">// If the condition constant folds and can be elided, try to avoid emitting</span></div>
+<div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>   <span class="comment">// the condition and the dead arm.</span></div>
+<div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>   <span class="keywordtype">bool</span> CondExprBool;</div>
+<div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>   <span class="keywordflow">if</span> (CGF.ConstantFoldsToSimpleInteger(condExpr, CondExprBool)) {</div>
+<div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>     <a class="code" href="classclang_1_1Expr.html">Expr</a> *live = lhsExpr, *dead = rhsExpr;</div>
+<div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>     <span class="keywordflow">if</span> (!CondExprBool) std::swap(live, dead);</div>
+<div class="line"><a name="l03055"></a><span class="lineno"> 3055</span> </div>
+<div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>     <span class="comment">// If the dead side doesn't have labels we need, just emit the Live part.</span></div>
+<div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>     <span class="keywordflow">if</span> (!CGF.ContainsLabel(dead)) {</div>
+<div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>       Value *Result = Visit(live);</div>
+<div class="line"><a name="l03059"></a><span class="lineno"> 3059</span> </div>
+<div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>       <span class="comment">// If the live part is a throw expression, it acts like it has a void</span></div>
+<div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>       <span class="comment">// type, so evaluating it returns a null Value*.  However, a conditional</span></div>
+<div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>       <span class="comment">// with non-void type must return a non-null Value*.</span></div>
+<div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>       <span class="keywordflow">if</span> (!Result && !E-><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="l03064"></a><span class="lineno"> 3064</span>         Result = llvm::UndefValue::get(CGF.ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l03065"></a><span class="lineno"> 3065</span> </div>
+<div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>       <span class="keywordflow">return</span> Result;</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>   }</div>
+<div class="line"><a name="l03069"></a><span class="lineno"> 3069</span> </div>
+<div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>   <span class="comment">// OpenCL: If the condition is a vector, we can treat this condition like</span></div>
+<div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>   <span class="comment">// the select function.</span></div>
+<div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>   <span class="keywordflow">if</span> (CGF.getLangOpts().OpenCL</div>
+<div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>       && condExpr-><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="l03074"></a><span class="lineno"> 3074</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *CondV = CGF.EmitScalarExpr(condExpr);</div>
+<div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LHS = Visit(lhsExpr);</div>
+<div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RHS = Visit(rhsExpr);</div>
+<div class="line"><a name="l03077"></a><span class="lineno"> 3077</span> </div>
+<div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>     llvm::Type *condType = ConvertType(condExpr-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>     llvm::VectorType *vecTy = cast<llvm::VectorType>(condType);</div>
+<div class="line"><a name="l03080"></a><span class="lineno"> 3080</span> </div>
+<div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>     <span class="keywordtype">unsigned</span> numElem = vecTy->getNumElements();</div>
+<div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>     llvm::Type *elemType = vecTy->getElementType();</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>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *zeroVec = llvm::Constant::getNullValue(vecTy);</div>
+<div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *TestMSB = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpSLT(CondV, zeroVec);</div>
+<div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *tmp = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSExt(TestMSB,</div>
+<div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>                                           llvm::VectorType::get(elemType,</div>
+<div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>                                                                 numElem),</div>
+<div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>                                           <span class="stringliteral">"sext"</span>);</div>
+<div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *tmp2 = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateNot(tmp);</div>
+<div class="line"><a name="l03091"></a><span class="lineno"> 3091</span> </div>
+<div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>     <span class="comment">// Cast float to int to perform ANDs if necessary.</span></div>
+<div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RHSTmp = RHS;</div>
+<div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LHSTmp = LHS;</div>
+<div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>     <span class="keywordtype">bool</span> wasCast = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>     llvm::VectorType *rhsVTy = cast<llvm::VectorType>(RHS->getType());</div>
+<div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>     <span class="keywordflow">if</span> (rhsVTy->getElementType()->isFloatingPointTy()) {</div>
+<div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>       RHSTmp = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(RHS, tmp2->getType());</div>
+<div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>       LHSTmp = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(LHS, tmp->getType());</div>
+<div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>       wasCast = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>     }</div>
+<div class="line"><a name="l03102"></a><span class="lineno"> 3102</span> </div>
+<div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *tmp3 = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAnd(RHSTmp, tmp2);</div>
+<div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *tmp4 = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateAnd(LHSTmp, tmp);</div>
+<div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *tmp5 = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateOr(tmp3, tmp4, <span class="stringliteral">"cond"</span>);</div>
+<div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>     <span class="keywordflow">if</span> (wasCast)</div>
+<div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>       tmp5 = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(tmp5, RHS->getType());</div>
+<div class="line"><a name="l03108"></a><span class="lineno"> 3108</span> </div>
+<div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>     <span class="keywordflow">return</span> tmp5;</div>
+<div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>   }</div>
+<div class="line"><a name="l03111"></a><span class="lineno"> 3111</span> </div>
+<div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>   <span class="comment">// If this is a really simple expression (like x ? 4 : 5), emit this as a</span></div>
+<div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>   <span class="comment">// select instead of as control flow.  We can only do this if it is cheap and</span></div>
+<div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>   <span class="comment">// safe to evaluate the LHS and RHS unconditionally.</span></div>
+<div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>   <span class="keywordflow">if</span> (<a class="code" href="CGExprScalar_8cpp.html#a4ab82c1e9377d2391c055b790ea5c38b">isCheapEnoughToEvaluateUnconditionally</a>(lhsExpr, CGF) &&</div>
+<div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>       <a class="code" href="CGExprScalar_8cpp.html#a4ab82c1e9377d2391c055b790ea5c38b">isCheapEnoughToEvaluateUnconditionally</a>(rhsExpr, CGF)) {</div>
+<div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *CondV = CGF.EvaluateExprAsBool(condExpr);</div>
+<div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LHS = Visit(lhsExpr);</div>
+<div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RHS = Visit(rhsExpr);</div>
+<div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>     <span class="keywordflow">if</span> (!LHS) {</div>
+<div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>       <span class="comment">// If the conditional has void type, make sure we return a null Value*.</span></div>
+<div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>       assert(!RHS && <span class="stringliteral">"LHS and RHS types must match"</span>);</div>
+<div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>     }</div>
+<div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateSelect(CondV, LHS, RHS, <span class="stringliteral">"cond"</span>);</div>
+<div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>   }</div>
+<div class="line"><a name="l03127"></a><span class="lineno"> 3127</span> </div>
+<div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>   llvm::BasicBlock *LHSBlock = CGF.createBasicBlock(<span class="stringliteral">"cond.true"</span>);</div>
+<div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>   llvm::BasicBlock *RHSBlock = CGF.createBasicBlock(<span class="stringliteral">"cond.false"</span>);</div>
+<div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>   llvm::BasicBlock *ContBlock = CGF.createBasicBlock(<span class="stringliteral">"cond.end"</span>);</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>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1ConditionalEvaluation.html" title="An object to manage conditionally-evaluated expressions.">CodeGenFunction::ConditionalEvaluation</a> eval(CGF);</div>
+<div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>   CGF.EmitBranchOnBoolExpr(condExpr, LHSBlock, RHSBlock);</div>
+<div class="line"><a name="l03134"></a><span class="lineno"> 3134</span> </div>
+<div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>   CGF.EmitBlock(LHSBlock);</div>
+<div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>   eval.begin(CGF);</div>
+<div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>   Value *LHS = Visit(lhsExpr);</div>
+<div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>   eval.end(CGF);</div>
+<div class="line"><a name="l03139"></a><span class="lineno"> 3139</span> </div>
+<div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>   LHSBlock = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>   <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBr(ContBlock);</div>
+<div class="line"><a name="l03142"></a><span class="lineno"> 3142</span> </div>
+<div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>   CGF.EmitBlock(RHSBlock);</div>
+<div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>   eval.begin(CGF);</div>
+<div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>   Value *RHS = Visit(rhsExpr);</div>
+<div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>   eval.end(CGF);</div>
+<div class="line"><a name="l03147"></a><span class="lineno"> 3147</span> </div>
+<div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>   RHSBlock = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>   CGF.EmitBlock(ContBlock);</div>
+<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span> </div>
+<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>   <span class="comment">// If the LHS or RHS is a throw expression, it will be legitimately null.</span></div>
+<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>   <span class="keywordflow">if</span> (!LHS)</div>
+<div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>     <span class="keywordflow">return</span> RHS;</div>
+<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>   <span class="keywordflow">if</span> (!RHS)</div>
+<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>     <span class="keywordflow">return</span> LHS;</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="comment">// Create a PHI node for the real part.</span></div>
+<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>   llvm::PHINode *PN = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreatePHI(LHS->getType(), 2, <span class="stringliteral">"cond"</span>);</div>
+<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>   PN->addIncoming(LHS, LHSBlock);</div>
+<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>   PN->addIncoming(RHS, RHSBlock);</div>
+<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>   <span class="keywordflow">return</span> PN;</div>
+<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span> }</div>
+<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span> </div>
+<div class="line"><a name="l03164"></a><span class="lineno"> 3164</span> Value *ScalarExprEmitter::VisitChooseExpr(<a class="code" href="classclang_1_1ChooseExpr.html">ChooseExpr</a> *E) {</div>
+<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>   <span class="keywordflow">return</span> Visit(E-><a class="code" href="classclang_1_1ChooseExpr.html#a7fe9638c5238cf46b7038ef3fe8ee4d5">getChosenSubExpr</a>());</div>
+<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span> }</div>
+<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span> </div>
+<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span> Value *ScalarExprEmitter::VisitVAArgExpr(<a class="code" href="classclang_1_1VAArgExpr.html" title="VAArgExpr, used for the builtin function __builtin_va_arg.">VAArgExpr</a> *VE) {</div>
+<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArgValue = CGF.EmitVAListRef(VE-><a class="code" href="classclang_1_1VAArgExpr.html#a8718a713d4c2cf595a0fde339a2fd9b6">getSubExpr</a>());</div>
+<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArgPtr = CGF.EmitVAArg(ArgValue, VE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span> </div>
+<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>   <span class="comment">// If EmitVAArg fails, we fall back to the LLVM instruction.</span></div>
+<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>   <span class="keywordflow">if</span> (!ArgPtr)</div>
+<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>     <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateVAArg(ArgValue, ConvertType(VE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</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>   <span class="comment">// FIXME Volatility.</span></div>
+<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateLoad(ArgPtr);</div>
+<div class="line"><a name="l03178"></a><span class="lineno"> 3178</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> Value *ScalarExprEmitter::VisitBlockExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1BlockExpr.html">BlockExpr</a> *block) {</div>
+<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>   <span class="keywordflow">return</span> CGF.EmitBlockLiteral(block);</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"> 3184</span> Value *ScalarExprEmitter::VisitAsTypeExpr(<a class="code" href="classclang_1_1AsTypeExpr.html">AsTypeExpr</a> *E) {</div>
+<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>   Value *Src  = CGF.EmitScalarExpr(E-><a class="code" href="classclang_1_1AsTypeExpr.html#a8e38e577a7ed99d9a8cd463caaf68d66" title="getSrcExpr - Return the Expr to be converted.">getSrcExpr</a>());</div>
+<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>   llvm::Type *DstTy = ConvertType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l03187"></a><span class="lineno"> 3187</span> </div>
+<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>   <span class="comment">// Going from vec4->vec3 or vec3->vec4 is a special case and requires</span></div>
+<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>   <span class="comment">// a shuffle vector instead of a bitcast.</span></div>
+<div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>   llvm::Type *SrcTy = Src->getType();</div>
+<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>   <span class="keywordflow">if</span> (isa<llvm::VectorType>(DstTy) && isa<llvm::VectorType>(SrcTy)) {</div>
+<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>     <span class="keywordtype">unsigned</span> numElementsDst = cast<llvm::VectorType>(DstTy)->getNumElements();</div>
+<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>     <span class="keywordtype">unsigned</span> numElementsSrc = cast<llvm::VectorType>(SrcTy)->getNumElements();</div>
+<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>     <span class="keywordflow">if</span> ((numElementsDst == 3 && numElementsSrc == 4)</div>
+<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>         || (numElementsDst == 4 && numElementsSrc == 3)) {</div>
+<div class="line"><a name="l03196"></a><span class="lineno"> 3196</span> </div>
+<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span> </div>
+<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>       <span class="comment">// In the case of going from int4->float3, a bitcast is needed before</span></div>
+<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>       <span class="comment">// doing a shuffle.</span></div>
+<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>       llvm::Type *srcElemTy =</div>
+<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>       cast<llvm::VectorType>(SrcTy)-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>       llvm::Type *dstElemTy =</div>
+<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>       cast<llvm::VectorType>(DstTy)-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</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">if</span> ((srcElemTy->isIntegerTy() && dstElemTy->isFloatTy())</div>
+<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>           || (srcElemTy->isFloatTy() && dstElemTy->isIntegerTy())) {</div>
+<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>         <span class="comment">// Create a float type of the same size as the source or destination.</span></div>
+<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>         llvm::VectorType *newSrcTy = llvm::VectorType::get(dstElemTy,</div>
+<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>                                                                  numElementsSrc);</div>
+<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span> </div>
+<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>         Src = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(Src, newSrcTy, <span class="stringliteral">"astypeCast"</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> </div>
+<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *UnV = llvm::UndefValue::get(Src->getType());</div>
+<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span> </div>
+<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>       <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Constant*, 3></a> <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>;</div>
+<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>       Args.push_back(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(0));</div>
+<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>       Args.push_back(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(1));</div>
+<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>       Args.push_back(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(2));</div>
+<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span> </div>
+<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>       <span class="keywordflow">if</span> (numElementsDst == 4)</div>
+<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>         Args.push_back(llvm::UndefValue::get(CGF.Int32Ty));</div>
+<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span> </div>
+<div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>       llvm::Constant *Mask = llvm::ConstantVector::get(Args);</div>
+<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span> </div>
+<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>       <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateShuffleVector(Src, UnV, Mask, <span class="stringliteral">"astype"</span>);</div>
+<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>     }</div>
+<div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>   }</div>
+<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span> </div>
+<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(Src, DstTy, <span class="stringliteral">"astype"</span>);</div>
+<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span> }</div>
+<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span> </div>
+<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span> Value *ScalarExprEmitter::VisitAtomicExpr(<a class="code" href="classclang_1_1AtomicExpr.html">AtomicExpr</a> *E) {</div>
+<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>   <span class="keywordflow">return</span> CGF.EmitAtomicExpr(E).getScalarVal();</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> </div>
+<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span> <span class="comment">//                         Entry Point into this File</span></div>
+<div class="line"><a name="l03239"></a><span class="lineno"> 3239</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span> <span class="comment"></span></div>
+<div class="line"><a name="l03241"></a><span class="lineno"> 3241</span> <span class="comment">/// EmitScalarExpr - Emit the computation of the specified expression of scalar</span></div>
+<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span> <span class="comment">/// type, ignoring the result.</span></div>
+<div class="line"><a name="l03243"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8"> 3243</a></span> <span class="comment"></span>Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">CodeGenFunction::EmitScalarExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E, <span class="keywordtype">bool</span> IgnoreResultAssign) {</div>
+<div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>   assert(E && <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c6e4fe9ddc3eb21b00b36f9655a7bf4">hasScalarEvaluationKind</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()) &&</div>
+<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>          <span class="stringliteral">"Invalid scalar expression to emit"</span>);</div>
+<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span> </div>
+<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>   <span class="keywordflow">if</span> (isa<CXXDefaultArgExpr>(E))</div>
+<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae31c3d7e89f78e571d19a0479fc67d70">disableDebugInfo</a>();</div>
+<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>   Value *V = ScalarExprEmitter(*<span class="keyword">this</span>, IgnoreResultAssign)</div>
+<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>     .Visit(const_cast<Expr*>(E));</div>
+<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>   <span class="keywordflow">if</span> (isa<CXXDefaultArgExpr>(E))</div>
+<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a900fb594a2263d16bf51123cb2c0c865">enableDebugInfo</a>();</div>
+<div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>   <span class="keywordflow">return</span> V;</div>
+<div class="line"><a name="l03254"></a><span class="lineno"> 3254</span> }</div>
+<div class="line"><a name="l03255"></a><span class="lineno"> 3255</span> <span class="comment"></span></div>
+<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span> <span class="comment">/// EmitScalarConversion - Emit a conversion from the specified type to the</span></div>
+<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span> <span class="comment">/// specified destination type, both of which are LLVM scalar types.</span></div>
+<div class="line"><a name="l03258"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a743572fc8d88150cac9bd1fdd1947bc5"> 3258</a></span> <span class="comment"></span>Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a743572fc8d88150cac9bd1fdd1947bc5">CodeGenFunction::EmitScalarConversion</a>(Value *Src, <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcTy,</div>
+<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>                                              <a class="code" href="classclang_1_1QualType.html">QualType</a> DstTy) {</div>
+<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>   assert(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c6e4fe9ddc3eb21b00b36f9655a7bf4">hasScalarEvaluationKind</a>(SrcTy) && <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c6e4fe9ddc3eb21b00b36f9655a7bf4">hasScalarEvaluationKind</a>(DstTy) &&</div>
+<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>          <span class="stringliteral">"Invalid scalar expression to emit"</span>);</div>
+<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>   <span class="keywordflow">return</span> ScalarExprEmitter(*this).EmitScalarConversion(Src, SrcTy, DstTy);</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> <span class="comment"></span></div>
+<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span> <span class="comment">/// EmitComplexToScalarConversion - Emit a conversion from the specified complex</span></div>
+<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span> <span class="comment">/// type to the specified destination type, where the destination type is an</span></div>
+<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span> <span class="comment">/// LLVM scalar type.</span></div>
+<div class="line"><a name="l03268"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a80412f84a0612b17b641b15a8959988a"> 3268</a></span> <span class="comment"></span>Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a80412f84a0612b17b641b15a8959988a">CodeGenFunction::EmitComplexToScalarConversion</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae417ed4971c18c5ce0607e1be62ec117">ComplexPairTy</a> Src,</div>
+<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>                                                       <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcTy,</div>
+<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>                                                       <a class="code" href="classclang_1_1QualType.html">QualType</a> DstTy) {</div>
+<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>   assert(SrcTy-><a class="code" href="classclang_1_1Type.html#a292ac10726adf5426212b5c6ee14d9bb">isAnyComplexType</a>() && <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c6e4fe9ddc3eb21b00b36f9655a7bf4">hasScalarEvaluationKind</a>(DstTy) &&</div>
+<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>          <span class="stringliteral">"Invalid complex -> scalar conversion"</span>);</div>
+<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>   <span class="keywordflow">return</span> ScalarExprEmitter(*this).EmitComplexToScalarConversion(Src, SrcTy,</div>
+<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>                                                                 DstTy);</div>
+<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span> }</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> </div>
+<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a375a4746980d1b39f2315e92db7ec8fe">CodeGenFunction::</a></div>
+<div class="line"><a name="l03279"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a375a4746980d1b39f2315e92db7ec8fe"> 3279</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a375a4746980d1b39f2315e92db7ec8fe">EmitScalarPrePostIncDec</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E, <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV,</div>
+<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>                         <span class="keywordtype">bool</span> isInc, <span class="keywordtype">bool</span> isPre) {</div>
+<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>   <span class="keywordflow">return</span> ScalarExprEmitter(*this).EmitScalarPrePostIncDec(E, LV, isInc, isPre);</div>
+<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span> }</div>
+<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span> </div>
+<div class="line"><a name="l03284"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a35a134c06aa2409a0e79ae4afff5c747"> 3284</a></span> <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a35a134c06aa2409a0e79ae4afff5c747">CodeGenFunction::EmitObjCIsaExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIsaExpr.html">ObjCIsaExpr</a> *E) {</div>
+<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V;</div>
+<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>   <span class="comment">// object->isa or (*object).isa</span></div>
+<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>   <span class="comment">// Generate code as for: *(Class*)object</span></div>
+<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>   <span class="comment">// build Class* type</span></div>
+<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>   llvm::Type *ClassPtrTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span> </div>
+<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *BaseExpr = E-><a class="code" href="classclang_1_1ObjCIsaExpr.html#ad0479433a32e36e193b661844c3e509d">getBase</a>();</div>
+<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>   <span class="keywordflow">if</span> (BaseExpr->isRValue()) {</div>
+<div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>     V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), <span class="stringliteral">"resval"</span>);</div>
+<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Src = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(BaseExpr);</div>
+<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(Src, V);</div>
+<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>     V = ScalarExprEmitter(*this).EmitLoadOfLValue(</div>
+<div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(V, E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()), E-><a class="code" href="classclang_1_1ObjCIsaExpr.html#a8dd826b7dbec09e9b163b23ab0527641">getExprLoc</a>());</div>
+<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1ObjCIsaExpr.html#a3ccd5ac1fe5098d34a3d7d7bc04bf5c1">isArrow</a>())</div>
+<div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>       V = ScalarExprEmitter(*this).EmitLoadOfLValue(BaseExpr);</div>
+<div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>       V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(BaseExpr).<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</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> </div>
+<div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>   <span class="comment">// build Class* type</span></div>
+<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>   ClassPtrTy = ClassPtrTy->getPointerTo();</div>
+<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>   V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, ClassPtrTy);</div>
+<div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(V, E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span> }</div>
+<div class="line"><a name="l03310"></a><span class="lineno"> 3310</span> </div>
+<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span> </div>
+<div class="line"><a name="l03312"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a66fe5cd30a71baddf1e0f307a75580bc"> 3312</a></span> <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a66fe5cd30a71baddf1e0f307a75580bc">CodeGenFunction::EmitCompoundAssignmentLValue</a>(</div>
+<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>                                             <span class="keyword">const</span> <a class="code" href="classclang_1_1CompoundAssignOperator.html">CompoundAssignOperator</a> *E) {</div>
+<div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>   ScalarExprEmitter Scalar(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>   Value *Result = 0;</div>
+<div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>   <span class="keywordflow">switch</span> (E-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()) {</div>
+<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span> <span class="preprocessor">#define COMPOUND_OP(Op)                                                       \</span></div>
+<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span> <span class="preprocessor">    case BO_##Op##Assign:                                                     \</span></div>
+<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span> <span class="preprocessor">      return Scalar.EmitCompoundAssignLValue(E, &ScalarExprEmitter::Emit##Op, \</span></div>
+<div class="line"><a name="l03320"></a><span class="lineno"> 3320</span> <span class="preprocessor">                                             Result)</span></div>
+<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span> <span class="preprocessor"></span>  <a class="code" href="CGExprScalar_8cpp.html#a3a7322db92378c9f1ac0eb37b22633bf">COMPOUND_OP</a>(Mul);</div>
+<div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7322db92378c9f1ac0eb37b22633bf">COMPOUND_OP</a>(Div);</div>
+<div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7322db92378c9f1ac0eb37b22633bf">COMPOUND_OP</a>(Rem);</div>
+<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7322db92378c9f1ac0eb37b22633bf">COMPOUND_OP</a>(Add);</div>
+<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7322db92378c9f1ac0eb37b22633bf">COMPOUND_OP</a>(Sub);</div>
+<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7322db92378c9f1ac0eb37b22633bf">COMPOUND_OP</a>(Shl);</div>
+<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7322db92378c9f1ac0eb37b22633bf">COMPOUND_OP</a>(Shr);</div>
+<div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7322db92378c9f1ac0eb37b22633bf">COMPOUND_OP</a>(And);</div>
+<div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7322db92378c9f1ac0eb37b22633bf">COMPOUND_OP</a>(Xor);</div>
+<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>   <a class="code" href="CGExprScalar_8cpp.html#a3a7322db92378c9f1ac0eb37b22633bf">COMPOUND_OP</a>(Or);</div>
+<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span> <span class="preprocessor">#undef COMPOUND_OP</span></div>
+<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a31e63255bd536c2d74a66ac47160ed53">BO_PtrMemD</a>:</div>
+<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae432d0b89cd5293af333b8854e20fd40">BO_PtrMemI</a>:</div>
+<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a8e23022cab4ed3bcb24b7acd01f623e9">BO_Mul</a>:</div>
+<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a58e04dd371aa4ff24af1f1ebc04739a5">BO_Div</a>:</div>
+<div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a91a7868de509af06d04ef1c6e21383be">BO_Rem</a>:</div>
+<div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abe63fd1a02a7d1191c3b2fd102b983bd">BO_Add</a>:</div>
+<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af84c54a9c8a061371180b3e8b25d4c3f">BO_Sub</a>:</div>
+<div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a2a7b3ad7ff838b9d313312f2dde50cb0">BO_Shl</a>:</div>
+<div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a05544609a9c447c91873ed3fb1fec26c">BO_Shr</a>:</div>
+<div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a34afd641c1839b1ebdf5b96779becc5e">BO_LT</a>:</div>
+<div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a9ff57a80bfff7f4a29cfc5ea9525ed6f">BO_GT</a>:</div>
+<div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab1b013f11421020dffa959a6c1ed45af">BO_LE</a>:</div>
+<div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a49c5777674892e127aeeb0746b18a1e2">BO_GE</a>:</div>
+<div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a69f29b9100be3ced416f394df1b8387d">BO_EQ</a>:</div>
+<div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a>:</div>
+<div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1add0a26702b466b3820e0032922751589">BO_And</a>:</div>
+<div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a01db02868a5b622d647d2a3f7d7d0c5a">BO_Xor</a>:</div>
+<div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a0bbf9a36f955dba18422f3c8800443d1">BO_Or</a>:</div>
+<div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a30e5536f851a7efedefd1ca23a295741">BO_LAnd</a>:</div>
+<div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a7bc0171ddbb52333099a4774326d72c9">BO_LOr</a>:</div>
+<div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af0f6693357ca6bc7488c1d4de4cbe303">BO_Assign</a>:</div>
+<div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae3c9652c3c01080bd794e8e03988e278">BO_Comma</a>:</div>
+<div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>     llvm_unreachable(<span class="stringliteral">"Not valid compound assignment operators"</span>);</div>
+<div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>   }</div>
+<div class="line"><a name="l03357"></a><span class="lineno"> 3357</span> </div>
+<div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>   llvm_unreachable(<span class="stringliteral">"Unhandled compound assignment operator"</span>);</div>
+<div class="line"><a name="l03359"></a><span class="lineno"> 3359</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:25 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprScalar_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprScalar_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprScalar_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprScalar_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,694 @@
+<!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: CGExprScalar.d Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_373837989a1dc63be881832a195d38c3.html">CodeGen</a></li><li class="navelem"><a class="el" href="dir_e8103833ce80ba077e945e011f96d4ad.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">CGExprScalar.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGExprScalar_8d.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/Release+Asserts/CGExprScalar.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/Release+Asserts/CGExprScalar.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  CGExprScalar.cpp CodeGenFunction.h CGBuilder.h \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/include/llvm/IR/IRBuilder.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/IR/BasicBlock.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/ilist.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/IR/Instruction.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/ADT/ilist_node.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/IR/User.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/IR/Use.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/Support/DebugLoc.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/include/llvm/IR/Instruction.def \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/include/llvm/IR/SymbolTableListTraits.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/include/llvm/IR/DataLayout.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/IR/DerivedTypes.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/include/llvm/IR/Type.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/Pass.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm/PassSupport.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/include/llvm/Pass.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/include/llvm/InitializePasses.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/include/llvm/PassRegistry.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/include/llvm/Support/Atomic.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/include/llvm/Support/Valgrind.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/include/llvm/PassAnalysisSupport.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/include/llvm/IR/Instructions.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/include/llvm/IR/Attributes.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/include/llvm/IR/<a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25b" title="CallingConv - Specifies the calling convention that a function uses.">CallingConv</a>.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/include/llvm/IR/InstrTypes.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/include/llvm/IR/OperandTraits.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/include/llvm/IR/LLVMContext.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/include/llvm/IR/Operator.h \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/include/llvm/IR/Constants.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/include/llvm/IR/Constant.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/include/llvm/Support/GetElementPtrTypeIterator.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/include/llvm/Support/ConstantFolder.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/include/llvm/Support/ValueHandle.h CGDebugInfo.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc \</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h \</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h \</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h \</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h \</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h \</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h \</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def \</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def \</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h \</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h \</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h \</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h \</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h \</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.h \</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc \</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h \</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h \</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h \</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def \</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>  /home/tstellar/llvm/include/llvm/DIBuilder.h \</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>  /home/tstellar/llvm/include/llvm/DebugInfo.h \</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>  /home/tstellar/llvm/include/llvm/IR/Metadata.h \</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>  /home/tstellar/llvm/include/llvm/Support/Dwarf.h CGValue.h \</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h \</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h \</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.h \</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h \</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def \</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h \</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h \</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc \</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h \</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h \</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h \</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>  /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h EHScopeStack.h \
+ CodeGenModule.h CGVTables.h \</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BaseSubobject.h \</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/GlobalDecl.h \</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.h \</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.h \</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.h \</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.h \</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.h \</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.h \</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclObjC.h \</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/<a class="code" href="namespaceclang.html#a0bca8d4a06a5e7175d2177c94788c9b4" title="Whether all locations of the selector identifiers are in a "standard" position.">SelectorLocationsKind</a>.h \</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.h \</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/VTableBuilder.h \</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CXXInheritance.h \</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.h \</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>  /home/tstellar/llvm/include/llvm/ADT/MapVector.h \</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>  /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h \</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>  /home/tstellar/llvm/include/llvm/ADT/SetVector.h \</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>  /home/tstellar/llvm/include/llvm/IR/GlobalVariable.h \</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>  /home/tstellar/llvm/include/llvm/IR/GlobalValue.h CodeGenTypes.h \
+ CGCall.h ABIInfo.h \</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.h \</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>  /home/tstellar/llvm/include/llvm/IR/Module.h \</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>  /home/tstellar/llvm/include/llvm/IR/Function.h \</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>  /home/tstellar/llvm/include/llvm/IR/Argument.h \</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>  /home/tstellar/llvm/include/llvm/IR/GlobalAlias.h \</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.h \</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrKinds.h \</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc \</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>  /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h \</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc \</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Mangle.h \</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Module.h \</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>  /home/tstellar/llvm/include/llvm/Transforms/Utils/SpecialCaseList.h \</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprObjC.h \</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetInfo.h \</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetCXXABI.h \</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetOptions.h \</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>  /home/tstellar/llvm/include/llvm/Support/Debug.h CGCXXABI.h \
+ CGObjCRuntime.h \</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtVisitor.h \</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtCXX.h \</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtObjC.h \</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtOpenMP.h \</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenMPKinds.h \</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenMPKinds.def \</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>  /home/tstellar/llvm/include/llvm/IR/Intrinsics.h \</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>  /home/tstellar/llvm/include/llvm/IR/Intrinsics.gen \</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>  /home/tstellar/llvm/include/llvm/Support/CFG.h \</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>  /home/tstellar/llvm/include/llvm/ADT/GraphTraits.h</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> CodeGenFunction.h:</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> CGBuilder.h:</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> /home/tstellar/llvm/include/llvm/IR/IRBuilder.h:</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> /home/tstellar/llvm/include/llvm/IR/BasicBlock.h:</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> /home/tstellar/llvm/include/llvm/ADT/ilist.h:</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> </div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> /home/tstellar/llvm/include/llvm/IR/Instruction.h:</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> /home/tstellar/llvm/include/llvm/ADT/ilist_node.h:</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> /home/tstellar/llvm/include/llvm/IR/User.h:</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> /home/tstellar/llvm/include/llvm/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.h:</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> /home/tstellar/llvm/include/llvm/IR/Use.h:</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> </div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> </div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> </div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> </div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> /home/tstellar/llvm/include/llvm/Support/DebugLoc.h:</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> /home/tstellar/llvm/include/llvm/IR/Instruction.def:</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> /home/tstellar/llvm/include/llvm/IR/SymbolTableListTraits.h:</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> /home/tstellar/llvm/include/llvm/IR/DataLayout.h:</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> /home/tstellar/llvm/include/llvm/IR/DerivedTypes.h:</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> /home/tstellar/llvm/include/llvm/IR/Type.h:</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> /home/tstellar/llvm/include/llvm/ADT/APFloat.h:</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> </div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> /home/tstellar/llvm/include/llvm/ADT/APInt.h:</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> /home/tstellar/llvm/include/llvm/Pass.h:</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> /home/tstellar/llvm/include/llvm/PassSupport.h:</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> /home/tstellar/llvm/include/llvm/Pass.h:</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> </div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> /home/tstellar/llvm/include/llvm/InitializePasses.h:</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> </div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> /home/tstellar/llvm/include/llvm/PassRegistry.h:</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> /home/tstellar/llvm/include/llvm/Support/Atomic.h:</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> /home/tstellar/llvm/include/llvm/Support/Valgrind.h:</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> /home/tstellar/llvm/include/llvm/PassAnalysisSupport.h:</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> </div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> /home/tstellar/llvm/include/llvm/IR/Instructions.h:</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> </div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> /home/tstellar/llvm/include/llvm/IR/Attributes.h:</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h:</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> /home/tstellar/llvm/include/llvm/IR/<a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25b" title="CallingConv - Specifies the calling convention that a function uses.">CallingConv</a>.h:</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> /home/tstellar/llvm/include/llvm/IR/InstrTypes.h:</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> /home/tstellar/llvm/include/llvm/IR/OperandTraits.h:</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> /home/tstellar/llvm/include/llvm/IR/LLVMContext.h:</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> </div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> /home/tstellar/llvm/include/llvm/IR/Operator.h:</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> /home/tstellar/llvm/include/llvm/IR/Constants.h:</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> /home/tstellar/llvm/include/llvm/IR/Constant.h:</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> /home/tstellar/llvm/include/llvm/Support/GetElementPtrTypeIterator.h:</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> /home/tstellar/llvm/include/llvm/Support/ConstantFolder.h:</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> </div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> /home/tstellar/llvm/include/llvm/Support/ValueHandle.h:</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> CGDebugInfo.h:</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h:</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h:</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> /home/tstellar/llvm/include/llvm/ADT/APSInt.h:</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span> </div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h:</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h:</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> </div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h:</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> </div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h:</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h:</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> </div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h:</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> </div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> </div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def:</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h:</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def:</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span> </div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h:</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> </div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc:</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span> </div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h:</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> </div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.h:</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> </div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h:</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h:</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc:</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h:</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> </div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h:</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> </div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h:</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h:</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> </div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h:</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span> </div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h:</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h:</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> </div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h:</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span> </div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span> </div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def:</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span> </div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def:</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span> </div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> </div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span> </div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span> </div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h:</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span> </div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h:</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span> </div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h:</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h:</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span> </div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h:</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> </div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Cap