[llvm-commits] [www-releases] r170845 [29/55] - in /www-releases/trunk/3.2/docs: ./ CommandGuide/ HistoricalNotes/ _static/ _templates/ _themes/ _themes/llvm-theme/ _themes/llvm-theme/static/ doxygen/ doxygen/html/ llvm-theme/ llvm-theme/static/ tutorial/

Tanya Lattner tonic at nondot.org
Thu Dec 20 22:58:17 PST 2012


Added: www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGISel_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGISel_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGISel_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGISel_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,3072 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SelectionDAGISel.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_f2244d21cf8bec63d11bfc1ad661d96f.html">CodeGen</a>      </li>
+      <li class="navelem"><a class="el" href="dir_43253d775e33d5158290be54cbed80db.html">SelectionDAG</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">SelectionDAGISel.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="SelectionDAGISel_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- SelectionDAGISel.cpp - Implement the SelectionDAGISel class -------===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This implements the SelectionDAGISel class.</span>
+<a name="l00011"></a>00011 <span class="comment">//</span>
+<a name="l00012"></a>00012 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00013"></a>00013 
+<a name="l00014"></a><a class="code" href="SelectionDAGISel_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">00014</a> <span class="preprocessor">#define DEBUG_TYPE "isel"</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="ScheduleDAGSDNodes_8h.html">ScheduleDAGSDNodes.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="SelectionDAGBuilder_8h.html">SelectionDAGBuilder.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="Constants_8h.html">llvm/Constants.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="DebugInfo_8h.html">llvm/DebugInfo.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="Function_8h.html">llvm/Function.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="InlineAsm_8h.html">llvm/InlineAsm.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="Instructions_8h.html">llvm/Instructions.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="Intrinsics_8h.html">llvm/Intrinsics.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="IntrinsicInst_8h.html">llvm/IntrinsicInst.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="LLVMContext_8h.html">llvm/LLVMContext.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="Module_8h.html">llvm/Module.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="AliasAnalysis_8h.html">llvm/Analysis/AliasAnalysis.h</a>"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="BranchProbabilityInfo_8h.html">llvm/Analysis/BranchProbabilityInfo.h</a>"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="FastISel_8h.html">llvm/CodeGen/FastISel.h</a>"</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="FunctionLoweringInfo_8h.html">llvm/CodeGen/FunctionLoweringInfo.h</a>"</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="GCStrategy_8h.html">llvm/CodeGen/GCStrategy.h</a>"</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="GCMetadata_8h.html">llvm/CodeGen/GCMetadata.h</a>"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="MachineFrameInfo_8h.html">llvm/CodeGen/MachineFrameInfo.h</a>"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="MachineFunction_8h.html">llvm/CodeGen/MachineFunction.h</a>"</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="MachineInstrBuilder_8h.html">llvm/CodeGen/MachineInstrBuilder.h</a>"</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="MachineModuleInfo_8h.html">llvm/CodeGen/MachineModuleInfo.h</a>"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="MachineRegisterInfo_8h.html">llvm/CodeGen/MachineRegisterInfo.h</a>"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="ScheduleHazardRecognizer_8h.html">llvm/CodeGen/ScheduleHazardRecognizer.h</a>"</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="SchedulerRegistry_8h.html">llvm/CodeGen/SchedulerRegistry.h</a>"</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="SelectionDAG_8h.html">llvm/CodeGen/SelectionDAG.h</a>"</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include "<a class="code" href="SelectionDAGISel_8h.html">llvm/CodeGen/SelectionDAGISel.h</a>"</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#include "<a class="code" href="TargetRegisterInfo_8h.html">llvm/Target/TargetRegisterInfo.h</a>"</span>
+<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="TargetIntrinsicInfo_8h.html">llvm/Target/TargetIntrinsicInfo.h</a>"</span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="TargetInstrInfo_8h.html">llvm/Target/TargetInstrInfo.h</a>"</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="TargetLibraryInfo_8h.html">llvm/Target/TargetLibraryInfo.h</a>"</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="TargetLowering_8h.html">llvm/Target/TargetLowering.h</a>"</span>
+<a name="l00046"></a>00046 <span class="preprocessor">#include "<a class="code" href="Target_2TargetMachine_8h.html">llvm/Target/TargetMachine.h</a>"</span>
+<a name="l00047"></a>00047 <span class="preprocessor">#include "<a class="code" href="TargetOptions_8h.html">llvm/Target/TargetOptions.h</a>"</span>
+<a name="l00048"></a>00048 <span class="preprocessor">#include "<a class="code" href="BasicBlockUtils_8h.html">llvm/Transforms/Utils/BasicBlockUtils.h</a>"</span>
+<a name="l00049"></a>00049 <span class="preprocessor">#include "<a class="code" href="Compiler_8h.html">llvm/Support/Compiler.h</a>"</span>
+<a name="l00050"></a>00050 <span class="preprocessor">#include "<a class="code" href="Debug_8h.html">llvm/Support/Debug.h</a>"</span>
+<a name="l00051"></a>00051 <span class="preprocessor">#include "<a class="code" href="ErrorHandling_8h.html">llvm/Support/ErrorHandling.h</a>"</span>
+<a name="l00052"></a>00052 <span class="preprocessor">#include "<a class="code" href="Timer_8h.html">llvm/Support/Timer.h</a>"</span>
+<a name="l00053"></a>00053 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00054"></a>00054 <span class="preprocessor">#include "<a class="code" href="PostOrderIterator_8h.html">llvm/ADT/PostOrderIterator.h</a>"</span>
+<a name="l00055"></a>00055 <span class="preprocessor">#include "<a class="code" href="Statistic_8h.html">llvm/ADT/Statistic.h</a>"</span>
+<a name="l00056"></a>00056 <span class="preprocessor">#include <algorithm></span>
+<a name="l00057"></a>00057 <span class="keyword">using namespace </span>llvm;
+<a name="l00058"></a>00058 
+<a name="l00059"></a>00059 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailures, <span class="stringliteral">"Number of instructions fast isel failed on"</span>);
+<a name="l00060"></a>00060 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselSuccess, <span class="stringliteral">"Number of instructions fast isel selected"</span>);
+<a name="l00061"></a>00061 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselBlocks, <span class="stringliteral">"Number of blocks selected entirely by fast isel"</span>);
+<a name="l00062"></a>00062 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumDAGBlocks, <span class="stringliteral">"Number of blocks selected using DAG"</span>);
+<a name="l00063"></a>00063 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumDAGIselRetries,<span class="stringliteral">"Number of times dag isel has to try another path"</span>);
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065 <span class="preprocessor">#ifndef NDEBUG</span>
+<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00067"></a>00067 <a class="code" href="SelectionDAGISel_8cpp.html#a086b60310efb455c4b210eeae130b974">EnableFastISelVerbose2</a>(<span class="stringliteral">"fast-isel-verbose2"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00068"></a>00068           <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Enable extra verbose messages in the \"fast\" "</span>
+<a name="l00069"></a>00069                    <span class="stringliteral">"instruction selector"</span>));
+<a name="l00070"></a>00070   <span class="comment">// Terminators</span>
+<a name="l00071"></a>00071 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailRet,<span class="stringliteral">"Fast isel fails on Ret"</span>);
+<a name="l00072"></a>00072 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailBr,<span class="stringliteral">"Fast isel fails on Br"</span>);
+<a name="l00073"></a>00073 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailSwitch,<span class="stringliteral">"Fast isel fails on Switch"</span>);
+<a name="l00074"></a>00074 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailIndirectBr,<span class="stringliteral">"Fast isel fails on IndirectBr"</span>);
+<a name="l00075"></a>00075 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailInvoke,<span class="stringliteral">"Fast isel fails on Invoke"</span>);
+<a name="l00076"></a>00076 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailResume,<span class="stringliteral">"Fast isel fails on Resume"</span>);
+<a name="l00077"></a>00077 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailUnreachable,<span class="stringliteral">"Fast isel fails on Unreachable"</span>);
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079   <span class="comment">// Standard binary operators...</span>
+<a name="l00080"></a>00080 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailAdd,<span class="stringliteral">"Fast isel fails on Add"</span>);
+<a name="l00081"></a>00081 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailFAdd,<span class="stringliteral">"Fast isel fails on FAdd"</span>);
+<a name="l00082"></a>00082 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailSub,<span class="stringliteral">"Fast isel fails on Sub"</span>);
+<a name="l00083"></a>00083 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailFSub,<span class="stringliteral">"Fast isel fails on FSub"</span>);
+<a name="l00084"></a>00084 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailMul,<span class="stringliteral">"Fast isel fails on Mul"</span>);
+<a name="l00085"></a>00085 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailFMul,<span class="stringliteral">"Fast isel fails on FMul"</span>);
+<a name="l00086"></a>00086 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailUDiv,<span class="stringliteral">"Fast isel fails on UDiv"</span>);
+<a name="l00087"></a>00087 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailSDiv,<span class="stringliteral">"Fast isel fails on SDiv"</span>);
+<a name="l00088"></a>00088 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailFDiv,<span class="stringliteral">"Fast isel fails on FDiv"</span>);
+<a name="l00089"></a>00089 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailURem,<span class="stringliteral">"Fast isel fails on URem"</span>);
+<a name="l00090"></a>00090 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailSRem,<span class="stringliteral">"Fast isel fails on SRem"</span>);
+<a name="l00091"></a>00091 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailFRem,<span class="stringliteral">"Fast isel fails on FRem"</span>);
+<a name="l00092"></a>00092 
+<a name="l00093"></a>00093   <span class="comment">// Logical operators...</span>
+<a name="l00094"></a>00094 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailAnd,<span class="stringliteral">"Fast isel fails on And"</span>);
+<a name="l00095"></a>00095 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailOr,<span class="stringliteral">"Fast isel fails on Or"</span>);
+<a name="l00096"></a>00096 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailXor,<span class="stringliteral">"Fast isel fails on Xor"</span>);
+<a name="l00097"></a>00097 
+<a name="l00098"></a>00098   <span class="comment">// Memory instructions...</span>
+<a name="l00099"></a>00099 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailAlloca,<span class="stringliteral">"Fast isel fails on Alloca"</span>);
+<a name="l00100"></a>00100 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailLoad,<span class="stringliteral">"Fast isel fails on Load"</span>);
+<a name="l00101"></a>00101 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailStore,<span class="stringliteral">"Fast isel fails on Store"</span>);
+<a name="l00102"></a>00102 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailAtomicCmpXchg,<span class="stringliteral">"Fast isel fails on AtomicCmpXchg"</span>);
+<a name="l00103"></a>00103 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailAtomicRMW,<span class="stringliteral">"Fast isel fails on AtomicRWM"</span>);
+<a name="l00104"></a>00104 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailFence,<span class="stringliteral">"Fast isel fails on Frence"</span>);
+<a name="l00105"></a>00105 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailGetElementPtr,<span class="stringliteral">"Fast isel fails on GetElementPtr"</span>);
+<a name="l00106"></a>00106 
+<a name="l00107"></a>00107   <span class="comment">// Convert instructions...</span>
+<a name="l00108"></a>00108 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailTrunc,<span class="stringliteral">"Fast isel fails on Trunc"</span>);
+<a name="l00109"></a>00109 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailZExt,<span class="stringliteral">"Fast isel fails on ZExt"</span>);
+<a name="l00110"></a>00110 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailSExt,<span class="stringliteral">"Fast isel fails on SExt"</span>);
+<a name="l00111"></a>00111 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailFPTrunc,<span class="stringliteral">"Fast isel fails on FPTrunc"</span>);
+<a name="l00112"></a>00112 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailFPExt,<span class="stringliteral">"Fast isel fails on FPExt"</span>);
+<a name="l00113"></a>00113 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailFPToUI,<span class="stringliteral">"Fast isel fails on FPToUI"</span>);
+<a name="l00114"></a>00114 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailFPToSI,<span class="stringliteral">"Fast isel fails on FPToSI"</span>);
+<a name="l00115"></a>00115 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailUIToFP,<span class="stringliteral">"Fast isel fails on UIToFP"</span>);
+<a name="l00116"></a>00116 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailSIToFP,<span class="stringliteral">"Fast isel fails on SIToFP"</span>);
+<a name="l00117"></a>00117 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailIntToPtr,<span class="stringliteral">"Fast isel fails on IntToPtr"</span>);
+<a name="l00118"></a>00118 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailPtrToInt,<span class="stringliteral">"Fast isel fails on PtrToInt"</span>);
+<a name="l00119"></a>00119 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailBitCast,<span class="stringliteral">"Fast isel fails on BitCast"</span>);
+<a name="l00120"></a>00120 
+<a name="l00121"></a>00121   <span class="comment">// Other instructions...</span>
+<a name="l00122"></a>00122 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailICmp,<span class="stringliteral">"Fast isel fails on ICmp"</span>);
+<a name="l00123"></a>00123 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailFCmp,<span class="stringliteral">"Fast isel fails on FCmp"</span>);
+<a name="l00124"></a>00124 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailPHI,<span class="stringliteral">"Fast isel fails on PHI"</span>);
+<a name="l00125"></a>00125 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailSelect,<span class="stringliteral">"Fast isel fails on Select"</span>);
+<a name="l00126"></a>00126 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailCall,<span class="stringliteral">"Fast isel fails on Call"</span>);
+<a name="l00127"></a>00127 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailShl,<span class="stringliteral">"Fast isel fails on Shl"</span>);
+<a name="l00128"></a>00128 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailLShr,<span class="stringliteral">"Fast isel fails on LShr"</span>);
+<a name="l00129"></a>00129 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailAShr,<span class="stringliteral">"Fast isel fails on AShr"</span>);
+<a name="l00130"></a>00130 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailVAArg,<span class="stringliteral">"Fast isel fails on VAArg"</span>);
+<a name="l00131"></a>00131 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailExtractElement,<span class="stringliteral">"Fast isel fails on ExtractElement"</span>);
+<a name="l00132"></a>00132 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailInsertElement,<span class="stringliteral">"Fast isel fails on InsertElement"</span>);
+<a name="l00133"></a>00133 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailShuffleVector,<span class="stringliteral">"Fast isel fails on ShuffleVector"</span>);
+<a name="l00134"></a>00134 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailExtractValue,<span class="stringliteral">"Fast isel fails on ExtractValue"</span>);
+<a name="l00135"></a>00135 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailInsertValue,<span class="stringliteral">"Fast isel fails on InsertValue"</span>);
+<a name="l00136"></a>00136 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumFastIselFailLandingPad,<span class="stringliteral">"Fast isel fails on LandingPad"</span>);
+<a name="l00137"></a>00137 <span class="preprocessor">#endif</span>
+<a name="l00138"></a>00138 <span class="preprocessor"></span>
+<a name="l00139"></a>00139 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00140"></a>00140 <a class="code" href="SelectionDAGISel_8cpp.html#ad64839db51b02e2d40ec293faabeeec2">EnableFastISelVerbose</a>(<span class="stringliteral">"fast-isel-verbose"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00141"></a>00141           <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Enable verbose messages in the \"fast\" "</span>
+<a name="l00142"></a>00142                    <span class="stringliteral">"instruction selector"</span>));
+<a name="l00143"></a>00143 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00144"></a>00144 <a class="code" href="SelectionDAGISel_8cpp.html#a9d50504a9daa484cb9ffe06b0a4e8d0c">EnableFastISelAbort</a>(<span class="stringliteral">"fast-isel-abort"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00145"></a>00145           <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Enable abort calls when \"fast\" instruction fails"</span>));
+<a name="l00146"></a>00146 
+<a name="l00147"></a>00147 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00148"></a>00148 <a class="code" href="SelectionDAGISel_8cpp.html#a882ae4a44bdaba10b04f867cc59d0b12">UseMBPI</a>(<span class="stringliteral">"use-mbpi"</span>,
+<a name="l00149"></a>00149         <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"use Machine Branch Probability Info"</span>),
+<a name="l00150"></a>00150         <a class="code" href="namespacellvm_1_1cl.html#a10a041239ae1870cfcc064bfaa79fb65">cl::init</a>(<span class="keyword">true</span>), <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>);
+<a name="l00151"></a>00151 
+<a name="l00152"></a>00152 <span class="preprocessor">#ifndef NDEBUG</span>
+<a name="l00153"></a>00153 <span class="preprocessor"></span><span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00154"></a>00154 <a class="code" href="SelectionDAGISel_8cpp.html#aa0a1387d2f4f4c555f6e70f8772e2b36">ViewDAGCombine1</a>(<span class="stringliteral">"view-dag-combine1-dags"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00155"></a>00155           <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Pop up a window to show dags before the first "</span>
+<a name="l00156"></a>00156                    <span class="stringliteral">"dag combine pass"</span>));
+<a name="l00157"></a>00157 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00158"></a>00158 <a class="code" href="SelectionDAGISel_8cpp.html#a94d15c343cf88bcdac352ecec4163427">ViewLegalizeTypesDAGs</a>(<span class="stringliteral">"view-legalize-types-dags"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00159"></a>00159           <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Pop up a window to show dags before legalize types"</span>));
+<a name="l00160"></a>00160 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00161"></a>00161 <a class="code" href="SelectionDAGISel_8cpp.html#a6ea92b9ff38ccbd5e49b8db2ee2ed6c0">ViewLegalizeDAGs</a>(<span class="stringliteral">"view-legalize-dags"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00162"></a>00162           <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Pop up a window to show dags before legalize"</span>));
+<a name="l00163"></a>00163 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00164"></a>00164 <a class="code" href="SelectionDAGISel_8cpp.html#a5eb1e524620af2b978b96889db819cd5">ViewDAGCombine2</a>(<span class="stringliteral">"view-dag-combine2-dags"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00165"></a>00165           <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Pop up a window to show dags before the second "</span>
+<a name="l00166"></a>00166                    <span class="stringliteral">"dag combine pass"</span>));
+<a name="l00167"></a>00167 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00168"></a>00168 <a class="code" href="SelectionDAGISel_8cpp.html#a9493966ca8816c129a6afef7ef0b0866">ViewDAGCombineLT</a>(<span class="stringliteral">"view-dag-combine-lt-dags"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00169"></a>00169           <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Pop up a window to show dags before the post legalize types"</span>
+<a name="l00170"></a>00170                    <span class="stringliteral">" dag combine pass"</span>));
+<a name="l00171"></a>00171 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00172"></a>00172 <a class="code" href="SelectionDAGISel_8cpp.html#a1020617e313312866c30e376a9e4558f">ViewISelDAGs</a>(<span class="stringliteral">"view-isel-dags"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00173"></a>00173           <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Pop up a window to show isel dags as they are selected"</span>));
+<a name="l00174"></a>00174 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00175"></a>00175 <a class="code" href="SelectionDAGISel_8cpp.html#a561cc487aa2f40047631afeca18a058a">ViewSchedDAGs</a>(<span class="stringliteral">"view-sched-dags"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00176"></a>00176           <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Pop up a window to show sched dags as they are processed"</span>));
+<a name="l00177"></a>00177 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00178"></a>00178 <a class="code" href="SelectionDAGISel_8cpp.html#ae7868871a8317ca2ce9ff0dfde545b24">ViewSUnitDAGs</a>(<span class="stringliteral">"view-sunit-dags"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00179"></a>00179       <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Pop up a window to show SUnit dags after they are processed"</span>));
+<a name="l00180"></a>00180 <span class="preprocessor">#else</span>
+<a name="l00181"></a>00181 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="SelectionDAGISel_8cpp.html#aa0a1387d2f4f4c555f6e70f8772e2b36">ViewDAGCombine1</a> = <span class="keyword">false</span>,
+<a name="l00182"></a>00182                   <a class="code" href="SelectionDAGISel_8cpp.html#a94d15c343cf88bcdac352ecec4163427">ViewLegalizeTypesDAGs</a> = <span class="keyword">false</span>, <a class="code" href="SelectionDAGISel_8cpp.html#a6ea92b9ff38ccbd5e49b8db2ee2ed6c0">ViewLegalizeDAGs</a> = <span class="keyword">false</span>,
+<a name="l00183"></a>00183                   <a class="code" href="SelectionDAGISel_8cpp.html#a5eb1e524620af2b978b96889db819cd5">ViewDAGCombine2</a> = <span class="keyword">false</span>,
+<a name="l00184"></a>00184                   <a class="code" href="SelectionDAGISel_8cpp.html#a9493966ca8816c129a6afef7ef0b0866">ViewDAGCombineLT</a> = <span class="keyword">false</span>,
+<a name="l00185"></a>00185                   <a class="code" href="SelectionDAGISel_8cpp.html#a1020617e313312866c30e376a9e4558f">ViewISelDAGs</a> = <span class="keyword">false</span>, <a class="code" href="SelectionDAGISel_8cpp.html#a561cc487aa2f40047631afeca18a058a">ViewSchedDAGs</a> = <span class="keyword">false</span>,
+<a name="l00186"></a>00186                   <a class="code" href="SelectionDAGISel_8cpp.html#ae7868871a8317ca2ce9ff0dfde545b24">ViewSUnitDAGs</a> = <span class="keyword">false</span>;
+<a name="l00187"></a>00187 <span class="preprocessor">#endif</span>
+<a name="l00188"></a>00188 <span class="preprocessor"></span>
+<a name="l00189"></a>00189 <span class="comment">//===---------------------------------------------------------------------===//</span><span class="comment"></span>
+<a name="l00190"></a>00190 <span class="comment">///</span>
+<a name="l00191"></a>00191 <span class="comment">/// RegisterScheduler class - Track the registration of instruction schedulers.</span>
+<a name="l00192"></a>00192 <span class="comment">///</span>
+<a name="l00193"></a>00193 <span class="comment"></span><span class="comment">//===---------------------------------------------------------------------===//</span>
+<a name="l00194"></a>00194 <a class="code" href="classllvm_1_1MachinePassRegistry.html">MachinePassRegistry</a> <a class="code" href="classllvm_1_1RegisterScheduler.html#a85302ad32727bfe3c808a9ca17a3dd46">RegisterScheduler::Registry</a>;
+<a name="l00195"></a>00195 
+<a name="l00196"></a>00196 <span class="comment">//===---------------------------------------------------------------------===//</span><span class="comment"></span>
+<a name="l00197"></a>00197 <span class="comment">///</span>
+<a name="l00198"></a>00198 <span class="comment">/// ISHeuristic command line option for instruction schedulers.</span>
+<a name="l00199"></a>00199 <span class="comment">///</span>
+<a name="l00200"></a>00200 <span class="comment"></span><span class="comment">//===---------------------------------------------------------------------===//</span>
+<a name="l00201"></a>00201 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt</a><<a class="code" href="classllvm_1_1RegisterScheduler.html#a360361b84089ef7c4103152b3c02a40e">RegisterScheduler::FunctionPassCtor</a>, <span class="keyword">false</span>,
+<a name="l00202"></a>00202                <a class="code" href="classllvm_1_1RegisterPassParser.html">RegisterPassParser<RegisterScheduler></a> >
+<a name="l00203"></a>00203 <a class="code" href="SelectionDAGISel_8cpp.html#afabfb264c515ec09675c6a53ecf95785">ISHeuristic</a>(<span class="stringliteral">"pre-RA-sched"</span>,
+<a name="l00204"></a>00204             <a class="code" href="namespacellvm_1_1cl.html#a10a041239ae1870cfcc064bfaa79fb65">cl::init</a>(&<a class="code" href="namespacellvm.html#a84ca2cbce84944d7c7436be1e81fdc1e">createDefaultScheduler</a>),
+<a name="l00205"></a>00205             <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Instruction schedulers available (before register"</span>
+<a name="l00206"></a>00206                      <span class="stringliteral">" allocation):"</span>));
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208 <span class="keyword">static</span> <a class="code" href="classllvm_1_1RegisterScheduler.html">RegisterScheduler</a>
+<a name="l00209"></a>00209 <a class="code" href="SelectionDAGISel_8cpp.html#a2ffa56bb0fe093d549f7c5b8cb32cc98">defaultListDAGScheduler</a>(<span class="stringliteral">"default"</span>, <span class="stringliteral">"Best scheduler for the target"</span>,
+<a name="l00210"></a>00210                         <a class="code" href="namespacellvm.html#a84ca2cbce84944d7c7436be1e81fdc1e">createDefaultScheduler</a>);
+<a name="l00211"></a>00211 
+<a name="l00212"></a>00212 <span class="keyword">namespace </span>llvm {
+<a name="l00213"></a>00213   <span class="comment">//===--------------------------------------------------------------------===//</span><span class="comment"></span>
+<a name="l00214"></a>00214 <span class="comment">  /// createDefaultScheduler - This creates an instruction scheduler appropriate</span>
+<a name="l00215"></a>00215 <span class="comment">  /// for the target.</span>
+<a name="l00216"></a><a class="code" href="namespacellvm.html#a84ca2cbce84944d7c7436be1e81fdc1e">00216</a> <span class="comment"></span>  <a class="code" href="classllvm_1_1ScheduleDAGSDNodes.html">ScheduleDAGSDNodes</a>* <a class="code" href="namespacellvm.html#a84ca2cbce84944d7c7436be1e81fdc1e">createDefaultScheduler</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html">SelectionDAGISel</a> *IS,
+<a name="l00217"></a>00217                                              <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4">CodeGenOpt::Level</a> OptLevel) {
+<a name="l00218"></a>00218     <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetLowering.html">TargetLowering</a> &TLI = IS-><a class="code" href="classllvm_1_1SelectionDAGISel.html#a5393ab75cb4bdfd935abd08d19522291">getTargetLowering</a>();
+<a name="l00219"></a>00219 
+<a name="l00220"></a>00220     <span class="keywordflow">if</span> (OptLevel == <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4a451bbac85aff02d070be3c17a6bef928">CodeGenOpt::None</a> ||
+<a name="l00221"></a>00221         TLI.<a class="code" href="classllvm_1_1TargetLowering.html#acf004f5c15e3af6651762ba4c9f0cbdd" title="getSchedulingPreference - Return target scheduling preference.">getSchedulingPreference</a>() == <a class="code" href="namespacellvm_1_1Sched.html#ac1547cccaf660851fcd6863d1e60309eac13545a6345c7d5b3c9cc8932ad3b0e9">Sched::Source</a>)
+<a name="l00222"></a>00222       <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a55abb3ae6bc55ca30625f7a0e28949da">createSourceListDAGScheduler</a>(IS, OptLevel);
+<a name="l00223"></a>00223     <span class="keywordflow">if</span> (TLI.<a class="code" href="classllvm_1_1TargetLowering.html#acf004f5c15e3af6651762ba4c9f0cbdd" title="getSchedulingPreference - Return target scheduling preference.">getSchedulingPreference</a>() == <a class="code" href="namespacellvm_1_1Sched.html#ac1547cccaf660851fcd6863d1e60309ea5b5fba18a61456ef5858005d9f7b153e">Sched::RegPressure</a>)
+<a name="l00224"></a>00224       <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a0cc3c89b31edd11c4e42b6980efcc621">createBURRListDAGScheduler</a>(IS, OptLevel);
+<a name="l00225"></a>00225     <span class="keywordflow">if</span> (TLI.<a class="code" href="classllvm_1_1TargetLowering.html#acf004f5c15e3af6651762ba4c9f0cbdd" title="getSchedulingPreference - Return target scheduling preference.">getSchedulingPreference</a>() == <a class="code" href="namespacellvm_1_1Sched.html#ac1547cccaf660851fcd6863d1e60309ea6530ebdb4e713581540e6ceb88897acb">Sched::Hybrid</a>)
+<a name="l00226"></a>00226       <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#acdd401526bdfe6509b2a4aeeb3fbfade">createHybridListDAGScheduler</a>(IS, OptLevel);
+<a name="l00227"></a>00227     <span class="keywordflow">if</span> (TLI.<a class="code" href="classllvm_1_1TargetLowering.html#acf004f5c15e3af6651762ba4c9f0cbdd" title="getSchedulingPreference - Return target scheduling preference.">getSchedulingPreference</a>() == <a class="code" href="namespacellvm_1_1Sched.html#ac1547cccaf660851fcd6863d1e60309ea6cf256710dcf96215d1b52d67761e968">Sched::VLIW</a>)
+<a name="l00228"></a>00228       <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#ac4bf48adb22d4bb44adff9014d0991c9" title="createVLIWDAGScheduler - This creates a top-down list scheduler.">createVLIWDAGScheduler</a>(IS, OptLevel);
+<a name="l00229"></a>00229     assert(TLI.<a class="code" href="classllvm_1_1TargetLowering.html#acf004f5c15e3af6651762ba4c9f0cbdd" title="getSchedulingPreference - Return target scheduling preference.">getSchedulingPreference</a>() == <a class="code" href="namespacellvm_1_1Sched.html#ac1547cccaf660851fcd6863d1e60309eac4801b47c85ae3044251c5ca7443b1df">Sched::ILP</a> &&
+<a name="l00230"></a>00230            <span class="stringliteral">"Unknown sched type!"</span>);
+<a name="l00231"></a>00231     <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a19e072bf547248dcd953436ada780ecf">createILPListDAGScheduler</a>(IS, OptLevel);
+<a name="l00232"></a>00232   }
+<a name="l00233"></a>00233 }
+<a name="l00234"></a>00234 
+<a name="l00235"></a>00235 <span class="comment">// EmitInstrWithCustomInserter - This method should be implemented by targets</span>
+<a name="l00236"></a>00236 <span class="comment">// that mark instructions with the 'usesCustomInserter' flag.  These</span>
+<a name="l00237"></a>00237 <span class="comment">// instructions are special in various ways, which require special support to</span>
+<a name="l00238"></a>00238 <span class="comment">// insert.  The specified MachineInstr is created but not inserted into any</span>
+<a name="l00239"></a>00239 <span class="comment">// basic blocks, and this method is called to expand it into a sequence of</span>
+<a name="l00240"></a>00240 <span class="comment">// instructions, potentially also creating new basic blocks and control flow.</span>
+<a name="l00241"></a>00241 <span class="comment">// When new basic blocks are inserted and the edges from MBB to its successors</span>
+<a name="l00242"></a>00242 <span class="comment">// are modified, the method should insert pairs of <OldSucc, NewSucc> into the</span>
+<a name="l00243"></a>00243 <span class="comment">// DenseMap.</span>
+<a name="l00244"></a>00244 <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *
+<a name="l00245"></a><a class="code" href="classllvm_1_1TargetLowering.html#a38276f452a68339a3d3e0db3d1531d54">00245</a> <a class="code" href="classllvm_1_1TargetLowering.html#a38276f452a68339a3d3e0db3d1531d54">TargetLowering::EmitInstrWithCustomInserter</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>,
+<a name="l00246"></a>00246                                             <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *MBB)<span class="keyword"> const </span>{
+<a name="l00247"></a>00247 <span class="preprocessor">#ifndef NDEBUG</span>
+<a name="l00248"></a>00248 <span class="preprocessor"></span>  <a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"If a target marks an instruction with "</span>
+<a name="l00249"></a>00249           <span class="stringliteral">"'usesCustomInserter', it must implement "</span>
+<a name="l00250"></a>00250           <span class="stringliteral">"TargetLowering::EmitInstrWithCustomInserter!"</span>;
+<a name="l00251"></a>00251 <span class="preprocessor">#endif</span>
+<a name="l00252"></a>00252 <span class="preprocessor"></span>  <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(0);
+<a name="l00253"></a>00253 }
+<a name="l00254"></a>00254 
+<a name="l00255"></a><a class="code" href="classllvm_1_1TargetLowering.html#aca07be3ac02177b296b44111af460e72">00255</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1TargetLowering.html#aca07be3ac02177b296b44111af460e72">TargetLowering::AdjustInstrPostInstrSelection</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>,
+<a name="l00256"></a>00256                                                    <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *Node)<span class="keyword"> const </span>{
+<a name="l00257"></a>00257   assert(!MI-><a class="code" href="classllvm_1_1MachineInstr.html#a4bbf23a2ba1b05c9929accddc045fae5">hasPostISelHook</a>() &&
+<a name="l00258"></a>00258          <span class="stringliteral">"If a target marks an instruction with 'hasPostISelHook', "</span>
+<a name="l00259"></a>00259          <span class="stringliteral">"it must implement TargetLowering::AdjustInstrPostInstrSelection!"</span>);
+<a name="l00260"></a>00260 }
+<a name="l00261"></a>00261 
+<a name="l00262"></a>00262 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00263"></a>00263 <span class="comment">// SelectionDAGISel code</span>
+<a name="l00264"></a>00264 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00265"></a>00265 
+<a name="l00266"></a><a class="code" href="classllvm_1_1SelectionDAGISel.html#a93adf9ddd2303e9bdc0d55beb171a868">00266</a> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a93adf9ddd2303e9bdc0d55beb171a868">SelectionDAGISel::SelectionDAGISel</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetMachine.html">TargetMachine</a> &tm,
+<a name="l00267"></a>00267                                    <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4">CodeGenOpt::Level</a> OL) :
+<a name="l00268"></a>00268   <a class="code" href="classllvm_1_1MachineFunctionPass.html">MachineFunctionPass</a>(<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>), TM(tm), TLI(*tm.getTargetLowering()),
+<a name="l00269"></a>00269   FuncInfo(new <a class="code" href="classllvm_1_1FunctionLoweringInfo.html">FunctionLoweringInfo</a>(TLI)),
+<a name="l00270"></a>00270   CurDAG(new <a class="code" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a>(tm, OL)),
+<a name="l00271"></a>00271   SDB(new <a class="code" href="classllvm_1_1SelectionDAGBuilder.html">SelectionDAGBuilder</a>(*CurDAG, *FuncInfo, OL)),
+<a name="l00272"></a>00272   GFI(),
+<a name="l00273"></a>00273   OptLevel(OL),
+<a name="l00274"></a>00274   DAGSize(0) {
+<a name="l00275"></a>00275     <a class="code" href="namespacellvm.html#a7c3c64daeddcc57785e85d30f13b1e55">initializeGCModuleInfoPass</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00276"></a>00276     <a class="code" href="namespacellvm.html#ae17e75337b30778fb9efa04723ab9d15">initializeAliasAnalysisAnalysisGroup</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00277"></a>00277     <a class="code" href="namespacellvm.html#a97af1e658073d9ee97afd0fbeffe1518">initializeBranchProbabilityInfoPass</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00278"></a>00278     <a class="code" href="namespacellvm.html#a96ab354096e7fc3598f3d675c1e5f0b6">initializeTargetLibraryInfoPass</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00279"></a>00279   }
+<a name="l00280"></a>00280 
+<a name="l00281"></a><a class="code" href="classllvm_1_1SelectionDAGISel.html#aab3f5f27748274f8005105493a8c87d9">00281</a> <a class="code" href="classllvm_1_1SelectionDAGISel.html#aab3f5f27748274f8005105493a8c87d9">SelectionDAGISel::~SelectionDAGISel</a>() {
+<a name="l00282"></a>00282   <span class="keyword">delete</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>;
+<a name="l00283"></a>00283   <span class="keyword">delete</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>;
+<a name="l00284"></a>00284   <span class="keyword">delete</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>;
+<a name="l00285"></a>00285 }
+<a name="l00286"></a>00286 
+<a name="l00287"></a><a class="code" href="classllvm_1_1SelectionDAGISel.html#aa6e3daee5aa2faf95a6e846301eba584">00287</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#aa6e3daee5aa2faf95a6e846301eba584">SelectionDAGISel::getAnalysisUsage</a>(<a class="code" href="classllvm_1_1AnalysisUsage.html">AnalysisUsage</a> &AU)<span class="keyword"> const </span>{
+<a name="l00288"></a>00288   AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>>();
+<a name="l00289"></a>00289   AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a884f90190bca4bd354f2d5c91c264028">addPreserved</a><<a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>>();
+<a name="l00290"></a>00290   AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1GCModuleInfo.html">GCModuleInfo</a>>();
+<a name="l00291"></a>00291   AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a884f90190bca4bd354f2d5c91c264028">addPreserved</a><<a class="code" href="classllvm_1_1GCModuleInfo.html">GCModuleInfo</a>>();
+<a name="l00292"></a>00292   AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a>>();
+<a name="l00293"></a>00293   <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a882ae4a44bdaba10b04f867cc59d0b12">UseMBPI</a> && <a class="code" href="classllvm_1_1SelectionDAGISel.html#a1a7c2a3380a9f770ba082a070c592df6">OptLevel</a> != <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4a451bbac85aff02d070be3c17a6bef928">CodeGenOpt::None</a>)
+<a name="l00294"></a>00294     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1BranchProbabilityInfo.html" title="Analysis pass providing branch probability information.">BranchProbabilityInfo</a>>();
+<a name="l00295"></a>00295   <a class="code" href="classllvm_1_1SelectionDAGISel.html#aa6e3daee5aa2faf95a6e846301eba584">MachineFunctionPass::getAnalysisUsage</a>(AU);
+<a name="l00296"></a>00296 }
+<a name="l00297"></a>00297 <span class="comment"></span>
+<a name="l00298"></a>00298 <span class="comment">/// SplitCriticalSideEffectEdges - Look for critical edges with a PHI value that</span>
+<a name="l00299"></a>00299 <span class="comment">/// may trap on it.  In this case we have to split the edge so that the path</span>
+<a name="l00300"></a>00300 <span class="comment">/// through the predecessor block that doesn't go to the phi block doesn't</span>
+<a name="l00301"></a>00301 <span class="comment">/// execute the possibly trapping instruction.</span>
+<a name="l00302"></a>00302 <span class="comment">///</span>
+<a name="l00303"></a>00303 <span class="comment">/// This is required for correctness, so it must be done at -O0.</span>
+<a name="l00304"></a>00304 <span class="comment">///</span>
+<a name="l00305"></a><a class="code" href="SelectionDAGISel_8cpp.html#a32183b39b95b00f771b16930a39d31fb">00305</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SelectionDAGISel_8cpp.html#a32183b39b95b00f771b16930a39d31fb">SplitCriticalSideEffectEdges</a>(<a class="code" href="classllvm_1_1Function.html">Function</a> &Fn, <a class="code" href="classllvm_1_1Pass.html">Pass</a> *SDISel) {
+<a name="l00306"></a>00306   <span class="comment">// Loop for blocks with phi nodes.</span>
+<a name="l00307"></a>00307   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">Function::iterator</a> BB = Fn.<a class="code" href="classllvm_1_1Function.html#a88a5e60837674780a9d812d661897ac5">begin</a>(), E = Fn.<a class="code" href="classllvm_1_1Function.html#ae4ca2261b8b901e415fda7feac5051ea">end</a>(); BB != E; ++BB) {
+<a name="l00308"></a>00308     <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *PN = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1PHINode.html">PHINode</a>>(BB->begin());
+<a name="l00309"></a>00309     <span class="keywordflow">if</span> (PN == 0) <span class="keywordflow">continue</span>;
+<a name="l00310"></a>00310 
+<a name="l00311"></a>00311   ReprocessBlock:
+<a name="l00312"></a>00312     <span class="comment">// For each block with a PHI node, check to see if any of the input values</span>
+<a name="l00313"></a>00313     <span class="comment">// are potentially trapping constant expressions.  Constant expressions are</span>
+<a name="l00314"></a>00314     <span class="comment">// the only potentially trapping value that can occur as the argument to a</span>
+<a name="l00315"></a>00315     <span class="comment">// PHI.</span>
+<a name="l00316"></a>00316     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = BB->begin(); (PN = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1PHINode.html">PHINode</a>>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)); ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)
+<a name="l00317"></a>00317       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = PN-><a class="code" href="classllvm_1_1PHINode.html#aa45f6c0433576e3858a6209a43750ad4">getNumIncomingValues</a>(); i != e; ++i) {
+<a name="l00318"></a>00318         <a class="code" href="classllvm_1_1ConstantExpr.html">ConstantExpr</a> *CE = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1ConstantExpr.html">ConstantExpr</a>>(PN-><a class="code" href="classllvm_1_1PHINode.html#aba6a4cc4ed6d6fef3664b8d65ef04820">getIncomingValue</a>(i));
+<a name="l00319"></a>00319         <span class="keywordflow">if</span> (CE == 0 || !CE-><a class="code" href="classllvm_1_1Constant.html#aca0d63da182dd893b3a769214829a744">canTrap</a>()) <span class="keywordflow">continue</span>;
+<a name="l00320"></a>00320 
+<a name="l00321"></a>00321         <span class="comment">// The only case we have to worry about is when the edge is critical.</span>
+<a name="l00322"></a>00322         <span class="comment">// Since this block has a PHI Node, we assume it has multiple input</span>
+<a name="l00323"></a>00323         <span class="comment">// edges: check to see if the pred has multiple successors.</span>
+<a name="l00324"></a>00324         <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Pred = PN-><a class="code" href="classllvm_1_1PHINode.html#a4c25b6c00c4867281779c81ab64d2081">getIncomingBlock</a>(i);
+<a name="l00325"></a>00325         <span class="keywordflow">if</span> (Pred-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>()-><a class="code" href="classllvm_1_1TerminatorInst.html#a4c26d3b92af99a6c8defd89a2d39ca32">getNumSuccessors</a>() == 1)
+<a name="l00326"></a>00326           <span class="keywordflow">continue</span>;
+<a name="l00327"></a>00327 
+<a name="l00328"></a>00328         <span class="comment">// Okay, we have to split this edge.</span>
+<a name="l00329"></a>00329         <a class="code" href="namespacellvm.html#afa6abaa0eea3b2083902cf651a9653b1">SplitCriticalEdge</a>(Pred-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>(),
+<a name="l00330"></a>00330                           <a class="code" href="namespacellvm.html#ad8c05603cdeedfb0ca29aeaa551f1206">GetSuccessorNumber</a>(Pred, BB), SDISel, <span class="keyword">true</span>);
+<a name="l00331"></a>00331         <span class="keywordflow">goto</span> ReprocessBlock;
+<a name="l00332"></a>00332       }
+<a name="l00333"></a>00333   }
+<a name="l00334"></a>00334 }
+<a name="l00335"></a>00335 
+<a name="l00336"></a><a class="code" href="classllvm_1_1SelectionDAGISel.html#ac27df519719929bb886ae92fca30b6d2">00336</a> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#ac27df519719929bb886ae92fca30b6d2">SelectionDAGISel::runOnMachineFunction</a>(<a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a> &mf) {
+<a name="l00337"></a>00337   <span class="comment">// Do some sanity-checking on the command-line options.</span>
+<a name="l00338"></a>00338   assert((!<a class="code" href="SelectionDAGISel_8cpp.html#ad64839db51b02e2d40ec293faabeeec2">EnableFastISelVerbose</a> || <a class="code" href="classllvm_1_1SelectionDAGISel.html#a306086e3142a8dd0bdf6698bde8672e1">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#ab1fb67187fc37e569cc5171cbebba873">Options</a>.<a class="code" href="classllvm_1_1TargetOptions.html#ab26d50483184808463759bea1da917f8">EnableFastISel</a>) &&
+<a name="l00339"></a>00339          <span class="stringliteral">"-fast-isel-verbose requires -fast-isel"</span>);
+<a name="l00340"></a>00340   assert((!<a class="code" href="SelectionDAGISel_8cpp.html#a9d50504a9daa484cb9ffe06b0a4e8d0c">EnableFastISelAbort</a> || <a class="code" href="classllvm_1_1SelectionDAGISel.html#a306086e3142a8dd0bdf6698bde8672e1">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#ab1fb67187fc37e569cc5171cbebba873">Options</a>.<a class="code" href="classllvm_1_1TargetOptions.html#ab26d50483184808463759bea1da917f8">EnableFastISel</a>) &&
+<a name="l00341"></a>00341          <span class="stringliteral">"-fast-isel-abort requires -fast-isel"</span>);
+<a name="l00342"></a>00342 
+<a name="l00343"></a>00343   <span class="keyword">const</span> <a class="code" href="classllvm_1_1Function.html">Function</a> &Fn = *mf.<a class="code" href="classllvm_1_1MachineFunction.html#ad784a6594990530bffb2018aeeed56f3">getFunction</a>();
+<a name="l00344"></a>00344   <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetInstrInfo.html">TargetInstrInfo</a> &TII = *<a class="code" href="classllvm_1_1SelectionDAGISel.html#a306086e3142a8dd0bdf6698bde8672e1">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#ac13d0f6f2c915757013b101ef6e8afbc">getInstrInfo</a>();
+<a name="l00345"></a>00345   <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a> &TRI = *<a class="code" href="classllvm_1_1SelectionDAGISel.html#a306086e3142a8dd0bdf6698bde8672e1">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#a70b47eca6a99c87b81f4c1b1455dc090">getRegisterInfo</a>();
+<a name="l00346"></a>00346 
+<a name="l00347"></a>00347   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a> = &mf;
+<a name="l00348"></a>00348   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a303effb01b1d92c71b15cc25b2438917">RegInfo</a> = &<a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>-><a class="code" href="classllvm_1_1MachineFunction.html#ab4a6ca428289b667dd691a00e9f7e334">getRegInfo</a>();
+<a name="l00349"></a>00349   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a77fb1a1550d29830789e60ab9262bcae">AA</a> = &getAnalysis<AliasAnalysis>();
+<a name="l00350"></a>00350   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a4539a142623c3a6f33247c1f291b742e">LibInfo</a> = &getAnalysis<TargetLibraryInfo>();
+<a name="l00351"></a>00351   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a5f299b9982f79a3a122ba449ea28ef4b">GFI</a> = Fn.<a class="code" href="classllvm_1_1Function.html#a988441f676bbcc064697039950ab9e45">hasGC</a>() ? &getAnalysis<GCModuleInfo>().getFunctionInfo(Fn) : 0;
+<a name="l00352"></a>00352 
+<a name="l00353"></a>00353   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"\n\n\n=== "</span> << Fn.<a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>() << <span class="stringliteral">"\n"</span>);
+<a name="l00354"></a>00354 
+<a name="l00355"></a>00355   <a class="code" href="SelectionDAGISel_8cpp.html#a32183b39b95b00f771b16930a39d31fb">SplitCriticalSideEffectEdges</a>(const_cast<Function&>(Fn), <span class="keyword">this</span>);
+<a name="l00356"></a>00356 
+<a name="l00357"></a>00357   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a11148d412f82458a70cb82a237169826">init</a>(*<a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>);
+<a name="l00358"></a>00358   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a8ab5bf80d0bf28b785191c8033f4065e">set</a>(Fn, *<a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>);
+<a name="l00359"></a>00359 
+<a name="l00360"></a>00360   <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a882ae4a44bdaba10b04f867cc59d0b12">UseMBPI</a> && <a class="code" href="classllvm_1_1SelectionDAGISel.html#a1a7c2a3380a9f770ba082a070c592df6">OptLevel</a> != <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4a451bbac85aff02d070be3c17a6bef928">CodeGenOpt::None</a>)
+<a name="l00361"></a>00361     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a021952a3b657f6321d050112563886c4">BPI</a> = &getAnalysis<BranchProbabilityInfo>();
+<a name="l00362"></a>00362   <span class="keywordflow">else</span>
+<a name="l00363"></a>00363     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a021952a3b657f6321d050112563886c4">BPI</a> = 0;
+<a name="l00364"></a>00364 
+<a name="l00365"></a>00365   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a3b4a879c18a32e8829a55cc447c4e98a">init</a>(GFI, *<a class="code" href="classllvm_1_1SelectionDAGISel.html#a77fb1a1550d29830789e60ab9262bcae">AA</a>, LibInfo);
+<a name="l00366"></a>00366 
+<a name="l00367"></a>00367   SelectAllBasicBlocks(Fn);
+<a name="l00368"></a>00368 
+<a name="l00369"></a>00369   <span class="comment">// If the first basic block in the function has live ins that need to be</span>
+<a name="l00370"></a>00370   <span class="comment">// copied into vregs, emit the copies into the top of the block before</span>
+<a name="l00371"></a>00371   <span class="comment">// emitting the code for the block.</span>
+<a name="l00372"></a>00372   <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *EntryMBB = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>-><a class="code" href="classllvm_1_1MachineFunction.html#ab0789854909cf47f640a85fa2bac29c7">begin</a>();
+<a name="l00373"></a>00373   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a303effb01b1d92c71b15cc25b2438917">RegInfo</a>-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#a44ddc08d3e0ee02a2a8fb36fb4c8ac18">EmitLiveInCopies</a>(EntryMBB, TRI, TII);
+<a name="l00374"></a>00374 
+<a name="l00375"></a>00375   <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<unsigned, unsigned></a> LiveInMap;
+<a name="l00376"></a>00376   <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#aa7855aa1fdda952bb8b25a41df0cf976">ArgDbgValues</a>.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>())
+<a name="l00377"></a>00377     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineRegisterInfo.html#a80b58d5afb19164c6199077bf8f8ea1a">MachineRegisterInfo::livein_iterator</a> <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a303effb01b1d92c71b15cc25b2438917">RegInfo</a>-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#adb8e83c4e03a80fa7d24357b522e25ff">livein_begin</a>(),
+<a name="l00378"></a>00378            E = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a303effb01b1d92c71b15cc25b2438917">RegInfo</a>-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#a0e18d247091e29fe2c2c3f5bd59843fb">livein_end</a>(); <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a> != E; ++<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>)
+<a name="l00379"></a>00379       <span class="keywordflow">if</span> (<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->second)
+<a name="l00380"></a>00380         LiveInMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a699a66e504b48fdeff124e82f6c61917">insert</a>(std::make_pair(<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->first, <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->second));
+<a name="l00381"></a>00381 
+<a name="l00382"></a>00382   <span class="comment">// Insert DBG_VALUE instructions for function arguments to the entry block.</span>
+<a name="l00383"></a>00383   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#aa7855aa1fdda952bb8b25a41df0cf976">ArgDbgValues</a>.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>(); i != e; ++i) {
+<a name="l00384"></a>00384     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#aa7855aa1fdda952bb8b25a41df0cf976">ArgDbgValues</a>[e-i-1];
+<a name="l00385"></a>00385     <span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a> = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(0).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l00386"></a>00386     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1TargetRegisterInfo.html#a055858b14215864ed367a8db6c19d6f6">TargetRegisterInfo::isPhysicalRegister</a>(Reg))
+<a name="l00387"></a>00387       EntryMBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ad657517ec09c4e070fab95c2a9115853">insert</a>(EntryMBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab2d91e7bec944efcbc39d8e30644f111">begin</a>(), <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>);
+<a name="l00388"></a>00388     <span class="keywordflow">else</span> {
+<a name="l00389"></a>00389       <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5aceb138f68fe183995736614928e3394a">Def</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a303effb01b1d92c71b15cc25b2438917">RegInfo</a>-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#abf69f92f1977440a4e443a26baeb73c0">getVRegDef</a>(Reg);
+<a name="l00390"></a>00390       <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> InsertPos = <a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5aceb138f68fe183995736614928e3394a">Def</a>;
+<a name="l00391"></a>00391       <span class="comment">// FIXME: VR def may not be in entry block.</span>
+<a name="l00392"></a>00392       Def-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>()-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ad657517ec09c4e070fab95c2a9115853">insert</a>(<a class="code" href="namespacellvm.html#aa1704159f75e6eacd595962ea6d93ffe">llvm::next</a>(InsertPos), MI);
+<a name="l00393"></a>00393     }
+<a name="l00394"></a>00394 
+<a name="l00395"></a>00395     <span class="comment">// If Reg is live-in then update debug info to track its copy in a vreg.</span>
+<a name="l00396"></a>00396     <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<unsigned, unsigned>::iterator</a> LDI = LiveInMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a21cf94357e53cd1069aba475266fdb63">find</a>(Reg);
+<a name="l00397"></a>00397     <span class="keywordflow">if</span> (LDI != LiveInMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a321e37d79af8b4287f8a1dcf9aff9c01">end</a>()) {
+<a name="l00398"></a>00398       <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5aceb138f68fe183995736614928e3394a">Def</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a303effb01b1d92c71b15cc25b2438917">RegInfo</a>-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#abf69f92f1977440a4e443a26baeb73c0">getVRegDef</a>(LDI->second);
+<a name="l00399"></a>00399       <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> InsertPos = <a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5aceb138f68fe183995736614928e3394a">Def</a>;
+<a name="l00400"></a>00400       <span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *Variable =
+<a name="l00401"></a>00401         MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>()-1).getMetadata();
+<a name="l00402"></a>00402       <span class="keywordtype">unsigned</span> Offset = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(1).<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l00403"></a>00403       <span class="comment">// Def is never a terminator here, so it is ok to increment InsertPos.</span>
+<a name="l00404"></a>00404       <a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(*EntryMBB, ++InsertPos, MI-><a class="code" href="classllvm_1_1MachineInstr.html#a5ca4af2a257043145ad650eafb4402f9">getDebugLoc</a>(),
+<a name="l00405"></a>00405               TII.<a class="code" href="classllvm_1_1MCInstrInfo.html#ab16f5a81fccfe4b7f645ba5a74ffad02">get</a>(<a class="code" href="namespacellvm_1_1TargetOpcode.html#aa2b3629c9319f86eee5a2c0e8c75ebfaad3fe1d0d0fe22d208bcd8712b2ea051a" title="DBG_VALUE - a mapping of the llvm.dbg.value intrinsic.">TargetOpcode::DBG_VALUE</a>))
+<a name="l00406"></a>00406         .addReg(LDI->second, <a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa14af644ca4aff07a3768974c824ac9d5">RegState::Debug</a>)
+<a name="l00407"></a>00407         .<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a9f1fae6a5dbb6e378ca85df1fded8515">addImm</a>(Offset).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#ac68a44416cb977887fbd4c4e5297491d">addMetadata</a>(Variable);
+<a name="l00408"></a>00408 
+<a name="l00409"></a>00409       <span class="comment">// If this vreg is directly copied into an exported register then</span>
+<a name="l00410"></a>00410       <span class="comment">// that COPY instructions also need DBG_VALUE, if it is the only</span>
+<a name="l00411"></a>00411       <span class="comment">// user of LDI->second.</span>
+<a name="l00412"></a>00412       <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *CopyUseMI = NULL;
+<a name="l00413"></a>00413       <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineRegisterInfo_1_1defusechain__iterator.html">MachineRegisterInfo::use_iterator</a>
+<a name="l00414"></a>00414              UI = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a303effb01b1d92c71b15cc25b2438917">RegInfo</a>-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#a2f9819f230628888e3e68de292ecd602">use_begin</a>(LDI->second);
+<a name="l00415"></a>00415            <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *UseMI = UI.skipInstruction();) {
+<a name="l00416"></a>00416         <span class="keywordflow">if</span> (UseMI-><a class="code" href="classllvm_1_1MachineInstr.html#a1e1d26226c627cf3dcf3c191b85e7d7d">isDebugValue</a>()) <span class="keywordflow">continue</span>;
+<a name="l00417"></a>00417         <span class="keywordflow">if</span> (UseMI-><a class="code" href="classllvm_1_1MachineInstr.html#ae0ac5973cd95f76e3365e67aaad69de6">isCopy</a>() && !CopyUseMI && UseMI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>() == EntryMBB) {
+<a name="l00418"></a>00418           CopyUseMI = UseMI; <span class="keywordflow">continue</span>;
+<a name="l00419"></a>00419         }
+<a name="l00420"></a>00420         <span class="comment">// Otherwise this is another use or second copy use.</span>
+<a name="l00421"></a>00421         CopyUseMI = NULL; <span class="keywordflow">break</span>;
+<a name="l00422"></a>00422       }
+<a name="l00423"></a>00423       <span class="keywordflow">if</span> (CopyUseMI) {
+<a name="l00424"></a>00424         <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *NewMI =
+<a name="l00425"></a>00425           <a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(*<a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>, CopyUseMI-><a class="code" href="classllvm_1_1MachineInstr.html#a5ca4af2a257043145ad650eafb4402f9">getDebugLoc</a>(),
+<a name="l00426"></a>00426                   TII.<a class="code" href="classllvm_1_1MCInstrInfo.html#ab16f5a81fccfe4b7f645ba5a74ffad02">get</a>(<a class="code" href="namespacellvm_1_1TargetOpcode.html#aa2b3629c9319f86eee5a2c0e8c75ebfaad3fe1d0d0fe22d208bcd8712b2ea051a" title="DBG_VALUE - a mapping of the llvm.dbg.value intrinsic.">TargetOpcode::DBG_VALUE</a>))
+<a name="l00427"></a>00427           .addReg(CopyUseMI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(0).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>(), <a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa14af644ca4aff07a3768974c824ac9d5">RegState::Debug</a>)
+<a name="l00428"></a>00428           .addImm(Offset).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#ac68a44416cb977887fbd4c4e5297491d">addMetadata</a>(Variable);
+<a name="l00429"></a>00429         <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> Pos = CopyUseMI;
+<a name="l00430"></a>00430         EntryMBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a65ff68fbbfcd18bf3ba17eef8d539aba">insertAfter</a>(Pos, NewMI);
+<a name="l00431"></a>00431       }
+<a name="l00432"></a>00432     }
+<a name="l00433"></a>00433   }
+<a name="l00434"></a>00434 
+<a name="l00435"></a>00435   <span class="comment">// Determine if there are any calls in this machine function.</span>
+<a name="l00436"></a>00436   <a class="code" href="classllvm_1_1MachineFrameInfo.html" title="Abstract Stack Frame Information.">MachineFrameInfo</a> *MFI = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>-><a class="code" href="classllvm_1_1MachineFunction.html#a4ad4295a88187ea1ae12ecfcfa18a70f">getFrameInfo</a>();
+<a name="l00437"></a>00437   <span class="keywordflow">if</span> (!MFI-><a class="code" href="classllvm_1_1MachineFrameInfo.html#ad104abdabbcb68deacc60c0aea1bca34" title="hasCalls - Return true if the current function has any function calls.">hasCalls</a>()) {
+<a name="l00438"></a>00438     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">MachineFunction::const_iterator</a>
+<a name="l00439"></a>00439            <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>-><a class="code" href="classllvm_1_1MachineFunction.html#ab0789854909cf47f640a85fa2bac29c7">begin</a>(), E = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>-><a class="code" href="classllvm_1_1MachineFunction.html#a9d017af749f76484cb9aec9ff6e4330c">end</a>(); <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00440"></a>00440       <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *MBB = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00441"></a>00441       <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineBasicBlock.html#a654b11787ac7c4344084d98bea7cf626">MachineBasicBlock::const_iterator</a>
+<a name="l00442"></a>00442              II = MBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab2d91e7bec944efcbc39d8e30644f111">begin</a>(), <a class="code" href="namespacellvm_1_1ARM__PROC.html#a1add7850fad3f66c140ecee871460ea4ae9d798593a4a6b5cc48486a453a59e5e">IE</a> = MBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>(); II != <a class="code" href="namespacellvm_1_1ARM__PROC.html#a1add7850fad3f66c140ecee871460ea4ae9d798593a4a6b5cc48486a453a59e5e">IE</a>; ++II) {
+<a name="l00443"></a>00443         <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstrDesc.html">MCInstrDesc</a> &MCID = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a306086e3142a8dd0bdf6698bde8672e1">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#ac13d0f6f2c915757013b101ef6e8afbc">getInstrInfo</a>()-><a class="code" href="classllvm_1_1MCInstrInfo.html#ab16f5a81fccfe4b7f645ba5a74ffad02">get</a>(II->getOpcode());
+<a name="l00444"></a>00444 
+<a name="l00445"></a>00445         <span class="keywordflow">if</span> ((MCID.<a class="code" href="classllvm_1_1MCInstrDesc.html#a7981f38e296fd86b0cea036317fc1fcd">isCall</a>() && !MCID.<a class="code" href="classllvm_1_1MCInstrDesc.html#a3446f5624b1c8b772a160db4229544e5">isReturn</a>()) ||
+<a name="l00446"></a>00446             II->isStackAligningInlineAsm()) {
+<a name="l00447"></a>00447           MFI-><a class="code" href="classllvm_1_1MachineFrameInfo.html#a5bb88f5f9d77d753e87c256950f16955">setHasCalls</a>(<span class="keyword">true</span>);
+<a name="l00448"></a>00448           <span class="keywordflow">goto</span> done;
+<a name="l00449"></a>00449         }
+<a name="l00450"></a>00450       }
+<a name="l00451"></a>00451     }
+<a name="l00452"></a>00452   }
+<a name="l00453"></a>00453 
+<a name="l00454"></a>00454   done:
+<a name="l00455"></a>00455   <span class="comment">// Determine if there is a call to setjmp in the machine function.</span>
+<a name="l00456"></a>00456   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>-><a class="code" href="classllvm_1_1MachineFunction.html#a264579e2d24c216da3bd59985907e60a">setExposesReturnsTwice</a>(Fn.<a class="code" href="classllvm_1_1Function.html#ab79bcc780b834b4aab6e392c55831e2a">callsFunctionThatReturnsTwice</a>());
+<a name="l00457"></a>00457 
+<a name="l00458"></a>00458   <span class="comment">// Replace forward-declared registers with the registers containing</span>
+<a name="l00459"></a>00459   <span class="comment">// the desired value.</span>
+<a name="l00460"></a>00460   <a class="code" href="classllvm_1_1MachineRegisterInfo.html">MachineRegisterInfo</a> &MRI = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>-><a class="code" href="classllvm_1_1MachineFunction.html#ab4a6ca428289b667dd691a00e9f7e334">getRegInfo</a>();
+<a name="l00461"></a>00461   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1DenseMap.html">DenseMap<unsigned, unsigned>::iterator</a>
+<a name="l00462"></a>00462        <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a3f52fcf27ea6164f41a5568fb5a781e8" title="RegFixups - Registers which need to be replaced after isel is done.">RegFixups</a>.<a class="code" href="classllvm_1_1DenseMapBase.html#a432d7e955f44b118b4261eae03d7a8af">begin</a>(), E = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a3f52fcf27ea6164f41a5568fb5a781e8" title="RegFixups - Registers which need to be replaced after isel is done.">RegFixups</a>.<a class="code" href="classllvm_1_1DenseMapBase.html#a321e37d79af8b4287f8a1dcf9aff9c01">end</a>();
+<a name="l00463"></a>00463        <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00464"></a>00464     <span class="keywordtype">unsigned</span> From = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>->first;
+<a name="l00465"></a>00465     <span class="keywordtype">unsigned</span> To = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>->second;
+<a name="l00466"></a>00466     <span class="comment">// If To is also scheduled to be replaced, find what its ultimate</span>
+<a name="l00467"></a>00467     <span class="comment">// replacement is.</span>
+<a name="l00468"></a>00468     <span class="keywordflow">for</span> (;;) {
+<a name="l00469"></a>00469       <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<unsigned, unsigned>::iterator</a> J = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a3f52fcf27ea6164f41a5568fb5a781e8" title="RegFixups - Registers which need to be replaced after isel is done.">RegFixups</a>.<a class="code" href="classllvm_1_1DenseMapBase.html#a21cf94357e53cd1069aba475266fdb63">find</a>(To);
+<a name="l00470"></a>00470       <span class="keywordflow">if</span> (J == E) <span class="keywordflow">break</span>;
+<a name="l00471"></a>00471       To = J->second;
+<a name="l00472"></a>00472     }
+<a name="l00473"></a>00473     <span class="comment">// Replace it.</span>
+<a name="l00474"></a>00474     MRI.<a class="code" href="classllvm_1_1MachineRegisterInfo.html#a0eb653bae4f5a11b4b19a6247fd0021c">replaceRegWith</a>(From, To);
+<a name="l00475"></a>00475   }
+<a name="l00476"></a>00476 
+<a name="l00477"></a>00477   <span class="comment">// Freeze the set of reserved registers now that MachineFrameInfo has been</span>
+<a name="l00478"></a>00478   <span class="comment">// set up. All the information required by getReservedRegs() should be</span>
+<a name="l00479"></a>00479   <span class="comment">// available now.</span>
+<a name="l00480"></a>00480   MRI.<a class="code" href="classllvm_1_1MachineRegisterInfo.html#ad32d5b4fe86449641427a131c27c03f7">freezeReservedRegs</a>(*<a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>);
+<a name="l00481"></a>00481 
+<a name="l00482"></a>00482   <span class="comment">// Release function-specific state. SDB and CurDAG are already cleared</span>
+<a name="l00483"></a>00483   <span class="comment">// at this point.</span>
+<a name="l00484"></a>00484   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a1281235664d14beac83662b9f943e6d1">clear</a>();
+<a name="l00485"></a>00485 
+<a name="l00486"></a>00486   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00487"></a>00487 }
+<a name="l00488"></a>00488 
+<a name="l00489"></a>00489 <span class="keywordtype">void</span> SelectionDAGISel::SelectBasicBlock(<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::const_iterator</a> Begin,
+<a name="l00490"></a>00490                                         <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::const_iterator</a> End,
+<a name="l00491"></a>00491                                         <span class="keywordtype">bool</span> &HadTailCall) {
+<a name="l00492"></a>00492   <span class="comment">// Lower all of the non-terminator instructions. If a call is emitted</span>
+<a name="l00493"></a>00493   <span class="comment">// as a tail call, cease emitting nodes for this block. Terminators</span>
+<a name="l00494"></a>00494   <span class="comment">// are handled below.</span>
+<a name="l00495"></a>00495   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::const_iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = Begin; <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != End && !<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a39e446f1647e793791c33d0d2412d088">HasTailCall</a>; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)
+<a name="l00496"></a>00496     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#abbbfefd79a5b3d1b4ea8d8383fd01af5">visit</a>(*<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l00497"></a>00497 
+<a name="l00498"></a>00498   <span class="comment">// Make sure the root of the DAG is up-to-date.</span>
+<a name="l00499"></a>00499   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a3d2e079387a6e69ce2c8bb27bf7c2f32">setRoot</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#aef34360e8bb4bdecf3fd6345ff504f81">getControlRoot</a>());
+<a name="l00500"></a>00500   HadTailCall = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a39e446f1647e793791c33d0d2412d088">HasTailCall</a>;
+<a name="l00501"></a>00501   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2c224fcb5175ab1e842dd2a1371eb3d8">clear</a>();
+<a name="l00502"></a>00502 
+<a name="l00503"></a>00503   <span class="comment">// Final step, emit the lowered DAG as machine code.</span>
+<a name="l00504"></a>00504   CodeGenAndEmitDAG();
+<a name="l00505"></a>00505 }
+<a name="l00506"></a>00506 
+<a name="l00507"></a>00507 <span class="keywordtype">void</span> SelectionDAGISel::ComputeLiveOutVRegInfo() {
+<a name="l00508"></a>00508   <a class="code" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet<SDNode*, 128></a> VisitedNodes;
+<a name="l00509"></a>00509   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SDNode*, 128></a> Worklist;
+<a name="l00510"></a>00510 
+<a name="l00511"></a>00511   Worklist.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a2afe36f1344e00c9ef5f8cdb39d21890">getRoot</a>().<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>());
+<a name="l00512"></a>00512 
+<a name="l00513"></a>00513   <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a> KnownZero;
+<a name="l00514"></a>00514   <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a> KnownOne;
+<a name="l00515"></a>00515 
+<a name="l00516"></a>00516   <span class="keywordflow">do</span> {
+<a name="l00517"></a>00517     <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *<a class="code" href="regcomp_8c.html#a0240ac851181b84ac374872dc5434ee4">N</a> = Worklist.<a class="code" href="classllvm_1_1SmallVectorImpl.html#a0c8ffe664a36e30d49c84d0aded2fe08">pop_back_val</a>();
+<a name="l00518"></a>00518 
+<a name="l00519"></a>00519     <span class="comment">// If we've already seen this node, ignore it.</span>
+<a name="l00520"></a>00520     <span class="keywordflow">if</span> (!VisitedNodes.<a class="code" href="classllvm_1_1SmallPtrSet.html#a9b6dd0fc7a648a939e571246045b673e">insert</a>(N))
+<a name="l00521"></a>00521       <span class="keywordflow">continue</span>;
+<a name="l00522"></a>00522 
+<a name="l00523"></a>00523     <span class="comment">// Otherwise, add all chain operands to the worklist.</span>
+<a name="l00524"></a>00524     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = N-><a class="code" href="classllvm_1_1SDNode.html#abc5c2f1d47a517373030133c6a102106">getNumOperands</a>(); i != e; ++i)
+<a name="l00525"></a>00525       <span class="keywordflow">if</span> (N-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(i).<a class="code" href="classllvm_1_1SDValue.html#a7d2ad4aa4277eb4e1138ff9791c8fbb7">getValueType</a>() == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a>)
+<a name="l00526"></a>00526         Worklist.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(N-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(i).<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>());
+<a name="l00527"></a>00527 
+<a name="l00528"></a>00528     <span class="comment">// If this is a CopyToReg with a vreg dest, process it.</span>
+<a name="l00529"></a>00529     <span class="keywordflow">if</span> (N-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>() != <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a93bc27ca4d9e211c54b0d9efb660f080">ISD::CopyToReg</a>)
+<a name="l00530"></a>00530       <span class="keywordflow">continue</span>;
+<a name="l00531"></a>00531 
+<a name="l00532"></a>00532     <span class="keywordtype">unsigned</span> DestReg = cast<RegisterSDNode>(N-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(1))-><a class="code" href="MipsDisassembler_8cpp.html#a30bccd0ebacd9892c243f7bd520e4aa0">getReg</a>();
+<a name="l00533"></a>00533     <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1TargetRegisterInfo.html#ae62c5ea35b71f9020caa94340bc78f37">TargetRegisterInfo::isVirtualRegister</a>(DestReg))
+<a name="l00534"></a>00534       <span class="keywordflow">continue</span>;
+<a name="l00535"></a>00535 
+<a name="l00536"></a>00536     <span class="comment">// Ignore non-scalar or non-integer values.</span>
+<a name="l00537"></a>00537     <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> Src = N-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(2);
+<a name="l00538"></a>00538     <a class="code" href="structllvm_1_1EVT.html">EVT</a> SrcVT = Src.<a class="code" href="classllvm_1_1SDValue.html#a7d2ad4aa4277eb4e1138ff9791c8fbb7">getValueType</a>();
+<a name="l00539"></a>00539     <span class="keywordflow">if</span> (!SrcVT.<a class="code" href="structllvm_1_1EVT.html#a8cc407ac00df4edd4ec4d5168d6ecb26" title="isInteger - Return true if this is an integer, or a vector integer type.">isInteger</a>() || SrcVT.<a class="code" href="structllvm_1_1EVT.html#a73f7c824cad61a47c21bf6d652ae2fd7" title="isVector - Return true if this is a vector value type.">isVector</a>())
+<a name="l00540"></a>00540       <span class="keywordflow">continue</span>;
+<a name="l00541"></a>00541 
+<a name="l00542"></a>00542     <span class="keywordtype">unsigned</span> NumSignBits = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a01e15fa872bbde36ed8a394a01b200b9">ComputeNumSignBits</a>(Src);
+<a name="l00543"></a>00543     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ad06ca140783fd9f03eed498e8485fc3d">ComputeMaskedBits</a>(Src, KnownZero, KnownOne);
+<a name="l00544"></a>00544     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a5088979dc44f6c6dfc12edcb60cda08c" title="AddLiveOutRegInfo - Adds LiveOutInfo for a register.">AddLiveOutRegInfo</a>(DestReg, NumSignBits, KnownZero, KnownOne);
+<a name="l00545"></a>00545   } <span class="keywordflow">while</span> (!Worklist.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>());
+<a name="l00546"></a>00546 }
+<a name="l00547"></a>00547 
+<a name="l00548"></a>00548 <span class="keywordtype">void</span> SelectionDAGISel::CodeGenAndEmitDAG() {
+<a name="l00549"></a>00549   std::string GroupName;
+<a name="l00550"></a>00550   <span class="keywordflow">if</span> (<a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>)
+<a name="l00551"></a>00551     GroupName = <span class="stringliteral">"Instruction Selection and Scheduling"</span>;
+<a name="l00552"></a>00552   std::string BlockName;
+<a name="l00553"></a>00553   <span class="keywordtype">int</span> BlockNumber = -1;
+<a name="l00554"></a>00554   (void)BlockNumber;
+<a name="l00555"></a>00555 <span class="preprocessor">#ifdef NDEBUG</span>
+<a name="l00556"></a>00556 <span class="preprocessor"></span>  <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#aa0a1387d2f4f4c555f6e70f8772e2b36">ViewDAGCombine1</a> || <a class="code" href="SelectionDAGISel_8cpp.html#a94d15c343cf88bcdac352ecec4163427">ViewLegalizeTypesDAGs</a> || <a class="code" href="SelectionDAGISel_8cpp.html#a6ea92b9ff38ccbd5e49b8db2ee2ed6c0">ViewLegalizeDAGs</a> ||
+<a name="l00557"></a>00557       <a class="code" href="SelectionDAGISel_8cpp.html#a5eb1e524620af2b978b96889db819cd5">ViewDAGCombine2</a> || <a class="code" href="SelectionDAGISel_8cpp.html#a9493966ca8816c129a6afef7ef0b0866">ViewDAGCombineLT</a> || <a class="code" href="SelectionDAGISel_8cpp.html#a1020617e313312866c30e376a9e4558f">ViewISelDAGs</a> || <a class="code" href="SelectionDAGISel_8cpp.html#a561cc487aa2f40047631afeca18a058a">ViewSchedDAGs</a> ||
+<a name="l00558"></a>00558       <a class="code" href="SelectionDAGISel_8cpp.html#ae7868871a8317ca2ce9ff0dfde545b24">ViewSUnitDAGs</a>)
+<a name="l00559"></a>00559 <span class="preprocessor">#endif</span>
+<a name="l00560"></a>00560 <span class="preprocessor"></span>  {
+<a name="l00561"></a>00561     BlockNumber = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a6acda287e5c19ffb173b0bf8f1dd9c5e">getNumber</a>();
+<a name="l00562"></a>00562     BlockName = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>-><a class="code" href="classllvm_1_1MachineFunction.html#ae215c5c2aecd18c4e68a94187d9cdbf1">getName</a>().<a class="code" href="classllvm_1_1StringRef.html#ab02cb6f4884b5c788efb97b6741dccaf" title="str - Get the contents as an std::string.">str</a>() + <span class="stringliteral">":"</span> +
+<a name="l00563"></a>00563                 <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a2961c31b29db17a4f2964899c8569a64">getBasicBlock</a>()-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>().<a class="code" href="classllvm_1_1StringRef.html#ab02cb6f4884b5c788efb97b6741dccaf" title="str - Get the contents as an std::string.">str</a>();
+<a name="l00564"></a>00564   }
+<a name="l00565"></a>00565   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Initial selection DAG: BB#"</span> << BlockNumber
+<a name="l00566"></a>00566         << <span class="stringliteral">" '"</span> << BlockName << <span class="stringliteral">"'\n"</span>; <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac0ef17bd607d2bf65048d35672971f28">dump</a>());
+<a name="l00567"></a>00567 
+<a name="l00568"></a>00568   <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#aa0a1387d2f4f4c555f6e70f8772e2b36">ViewDAGCombine1</a>) <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a6ec02a7ebbe56dfc864242c77c5a194f">viewGraph</a>(<span class="stringliteral">"dag-combine1 input for "</span> + BlockName);
+<a name="l00569"></a>00569 
+<a name="l00570"></a>00570   <span class="comment">// Run the DAG combiner in pre-legalize mode.</span>
+<a name="l00571"></a>00571   {
+<a name="l00572"></a>00572     <a class="code" href="structllvm_1_1NamedRegionTimer.html">NamedRegionTimer</a> T(<span class="stringliteral">"DAG Combining 1"</span>, GroupName, <a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>);
+<a name="l00573"></a>00573     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#abe7bd3138ea3703376dc622650b20ff3">Combine</a>(<a class="code" href="namespacellvm.html#aa6d856e4879bb775617f8c3634773b7aa9386e6e4a4c86dabf136bc0fc9f6cf3b">BeforeLegalizeTypes</a>, *<a class="code" href="classllvm_1_1SelectionDAGISel.html#a77fb1a1550d29830789e60ab9262bcae">AA</a>, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a1a7c2a3380a9f770ba082a070c592df6">OptLevel</a>);
+<a name="l00574"></a>00574   }
+<a name="l00575"></a>00575 
+<a name="l00576"></a>00576   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Optimized lowered selection DAG: BB#"</span> << BlockNumber
+<a name="l00577"></a>00577         << <span class="stringliteral">" '"</span> << BlockName << <span class="stringliteral">"'\n"</span>; <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac0ef17bd607d2bf65048d35672971f28">dump</a>());
+<a name="l00578"></a>00578 
+<a name="l00579"></a>00579   <span class="comment">// Second step, hack on the DAG until it only uses operations and types that</span>
+<a name="l00580"></a>00580   <span class="comment">// the target supports.</span>
+<a name="l00581"></a>00581   <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a94d15c343cf88bcdac352ecec4163427">ViewLegalizeTypesDAGs</a>) <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a6ec02a7ebbe56dfc864242c77c5a194f">viewGraph</a>(<span class="stringliteral">"legalize-types input for "</span> +
+<a name="l00582"></a>00582                                                BlockName);
+<a name="l00583"></a>00583 
+<a name="l00584"></a>00584   <span class="keywordtype">bool</span> Changed;
+<a name="l00585"></a>00585   {
+<a name="l00586"></a>00586     <a class="code" href="structllvm_1_1NamedRegionTimer.html">NamedRegionTimer</a> T(<span class="stringliteral">"Type Legalization"</span>, GroupName, <a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>);
+<a name="l00587"></a>00587     Changed = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#affe59e12b70bcd9f5476f7ab289fa84a">LegalizeTypes</a>();
+<a name="l00588"></a>00588   }
+<a name="l00589"></a>00589 
+<a name="l00590"></a>00590   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Type-legalized selection DAG: BB#"</span> << BlockNumber
+<a name="l00591"></a>00591         << <span class="stringliteral">" '"</span> << BlockName << <span class="stringliteral">"'\n"</span>; <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac0ef17bd607d2bf65048d35672971f28">dump</a>());
+<a name="l00592"></a>00592 
+<a name="l00593"></a>00593   <span class="keywordflow">if</span> (Changed) {
+<a name="l00594"></a>00594     <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a9493966ca8816c129a6afef7ef0b0866">ViewDAGCombineLT</a>)
+<a name="l00595"></a>00595       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a6ec02a7ebbe56dfc864242c77c5a194f">viewGraph</a>(<span class="stringliteral">"dag-combine-lt input for "</span> + BlockName);
+<a name="l00596"></a>00596 
+<a name="l00597"></a>00597     <span class="comment">// Run the DAG combiner in post-type-legalize mode.</span>
+<a name="l00598"></a>00598     {
+<a name="l00599"></a>00599       <a class="code" href="structllvm_1_1NamedRegionTimer.html">NamedRegionTimer</a> T(<span class="stringliteral">"DAG Combining after legalize types"</span>, GroupName,
+<a name="l00600"></a>00600                          <a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>);
+<a name="l00601"></a>00601       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#abe7bd3138ea3703376dc622650b20ff3">Combine</a>(<a class="code" href="namespacellvm.html#aa6d856e4879bb775617f8c3634773b7aabfb921bbd2fd66e0a6b7524eb4b3dd9f">AfterLegalizeTypes</a>, *<a class="code" href="classllvm_1_1SelectionDAGISel.html#a77fb1a1550d29830789e60ab9262bcae">AA</a>, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a1a7c2a3380a9f770ba082a070c592df6">OptLevel</a>);
+<a name="l00602"></a>00602     }
+<a name="l00603"></a>00603 
+<a name="l00604"></a>00604     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Optimized type-legalized selection DAG: BB#"</span> << BlockNumber
+<a name="l00605"></a>00605           << <span class="stringliteral">" '"</span> << BlockName << <span class="stringliteral">"'\n"</span>; <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac0ef17bd607d2bf65048d35672971f28">dump</a>());
+<a name="l00606"></a>00606   }
+<a name="l00607"></a>00607 
+<a name="l00608"></a>00608   {
+<a name="l00609"></a>00609     <a class="code" href="structllvm_1_1NamedRegionTimer.html">NamedRegionTimer</a> T(<span class="stringliteral">"Vector Legalization"</span>, GroupName, <a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>);
+<a name="l00610"></a>00610     Changed = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a1d9e10dce8ca4da8bad80838a6cf426b">LegalizeVectors</a>();
+<a name="l00611"></a>00611   }
+<a name="l00612"></a>00612 
+<a name="l00613"></a>00613   <span class="keywordflow">if</span> (Changed) {
+<a name="l00614"></a>00614     {
+<a name="l00615"></a>00615       <a class="code" href="structllvm_1_1NamedRegionTimer.html">NamedRegionTimer</a> T(<span class="stringliteral">"Type Legalization 2"</span>, GroupName, <a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>);
+<a name="l00616"></a>00616       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#affe59e12b70bcd9f5476f7ab289fa84a">LegalizeTypes</a>();
+<a name="l00617"></a>00617     }
+<a name="l00618"></a>00618 
+<a name="l00619"></a>00619     <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a9493966ca8816c129a6afef7ef0b0866">ViewDAGCombineLT</a>)
+<a name="l00620"></a>00620       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a6ec02a7ebbe56dfc864242c77c5a194f">viewGraph</a>(<span class="stringliteral">"dag-combine-lv input for "</span> + BlockName);
+<a name="l00621"></a>00621 
+<a name="l00622"></a>00622     <span class="comment">// Run the DAG combiner in post-type-legalize mode.</span>
+<a name="l00623"></a>00623     {
+<a name="l00624"></a>00624       <a class="code" href="structllvm_1_1NamedRegionTimer.html">NamedRegionTimer</a> T(<span class="stringliteral">"DAG Combining after legalize vectors"</span>, GroupName,
+<a name="l00625"></a>00625                          <a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>);
+<a name="l00626"></a>00626       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#abe7bd3138ea3703376dc622650b20ff3">Combine</a>(<a class="code" href="namespacellvm.html#aa6d856e4879bb775617f8c3634773b7aa805f5e0d60c9ebc5b134bc9190569a50">AfterLegalizeVectorOps</a>, *<a class="code" href="classllvm_1_1SelectionDAGISel.html#a77fb1a1550d29830789e60ab9262bcae">AA</a>, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a1a7c2a3380a9f770ba082a070c592df6">OptLevel</a>);
+<a name="l00627"></a>00627     }
+<a name="l00628"></a>00628 
+<a name="l00629"></a>00629     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Optimized vector-legalized selection DAG: BB#"</span>
+<a name="l00630"></a>00630           << BlockNumber << <span class="stringliteral">" '"</span> << BlockName << <span class="stringliteral">"'\n"</span>; <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac0ef17bd607d2bf65048d35672971f28">dump</a>());
+<a name="l00631"></a>00631   }
+<a name="l00632"></a>00632 
+<a name="l00633"></a>00633   <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a6ea92b9ff38ccbd5e49b8db2ee2ed6c0">ViewLegalizeDAGs</a>) <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a6ec02a7ebbe56dfc864242c77c5a194f">viewGraph</a>(<span class="stringliteral">"legalize input for "</span> + BlockName);
+<a name="l00634"></a>00634 
+<a name="l00635"></a>00635   {
+<a name="l00636"></a>00636     <a class="code" href="structllvm_1_1NamedRegionTimer.html">NamedRegionTimer</a> T(<span class="stringliteral">"DAG Legalization"</span>, GroupName, <a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>);
+<a name="l00637"></a>00637     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a6f1e49f6f347835aa6b5a7423dd364d1">Legalize</a>();
+<a name="l00638"></a>00638   }
+<a name="l00639"></a>00639 
+<a name="l00640"></a>00640   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Legalized selection DAG: BB#"</span> << BlockNumber
+<a name="l00641"></a>00641         << <span class="stringliteral">" '"</span> << BlockName << <span class="stringliteral">"'\n"</span>; <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac0ef17bd607d2bf65048d35672971f28">dump</a>());
+<a name="l00642"></a>00642 
+<a name="l00643"></a>00643   <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a5eb1e524620af2b978b96889db819cd5">ViewDAGCombine2</a>) <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a6ec02a7ebbe56dfc864242c77c5a194f">viewGraph</a>(<span class="stringliteral">"dag-combine2 input for "</span> + BlockName);
+<a name="l00644"></a>00644 
+<a name="l00645"></a>00645   <span class="comment">// Run the DAG combiner in post-legalize mode.</span>
+<a name="l00646"></a>00646   {
+<a name="l00647"></a>00647     <a class="code" href="structllvm_1_1NamedRegionTimer.html">NamedRegionTimer</a> T(<span class="stringliteral">"DAG Combining 2"</span>, GroupName, <a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>);
+<a name="l00648"></a>00648     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#abe7bd3138ea3703376dc622650b20ff3">Combine</a>(<a class="code" href="namespacellvm.html#aa6d856e4879bb775617f8c3634773b7aa7fbaa966e5d5ac3bf03ba617b73bff5c">AfterLegalizeDAG</a>, *<a class="code" href="classllvm_1_1SelectionDAGISel.html#a77fb1a1550d29830789e60ab9262bcae">AA</a>, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a1a7c2a3380a9f770ba082a070c592df6">OptLevel</a>);
+<a name="l00649"></a>00649   }
+<a name="l00650"></a>00650 
+<a name="l00651"></a>00651   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Optimized legalized selection DAG: BB#"</span> << BlockNumber
+<a name="l00652"></a>00652         << <span class="stringliteral">" '"</span> << BlockName << <span class="stringliteral">"'\n"</span>; <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac0ef17bd607d2bf65048d35672971f28">dump</a>());
+<a name="l00653"></a>00653 
+<a name="l00654"></a>00654   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a1a7c2a3380a9f770ba082a070c592df6">OptLevel</a> != <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4a451bbac85aff02d070be3c17a6bef928">CodeGenOpt::None</a>)
+<a name="l00655"></a>00655     ComputeLiveOutVRegInfo();
+<a name="l00656"></a>00656 
+<a name="l00657"></a>00657   <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a1020617e313312866c30e376a9e4558f">ViewISelDAGs</a>) <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a6ec02a7ebbe56dfc864242c77c5a194f">viewGraph</a>(<span class="stringliteral">"isel input for "</span> + BlockName);
+<a name="l00658"></a>00658 
+<a name="l00659"></a>00659   <span class="comment">// Third, instruction select all of the operations to machine code, adding the</span>
+<a name="l00660"></a>00660   <span class="comment">// code to the MachineBasicBlock.</span>
+<a name="l00661"></a>00661   {
+<a name="l00662"></a>00662     <a class="code" href="structllvm_1_1NamedRegionTimer.html">NamedRegionTimer</a> T(<span class="stringliteral">"Instruction Selection"</span>, GroupName, <a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>);
+<a name="l00663"></a>00663     DoInstructionSelection();
+<a name="l00664"></a>00664   }
+<a name="l00665"></a>00665 
+<a name="l00666"></a>00666   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Selected selection DAG: BB#"</span> << BlockNumber
+<a name="l00667"></a>00667         << <span class="stringliteral">" '"</span> << BlockName << <span class="stringliteral">"'\n"</span>; <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac0ef17bd607d2bf65048d35672971f28">dump</a>());
+<a name="l00668"></a>00668 
+<a name="l00669"></a>00669   <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a561cc487aa2f40047631afeca18a058a">ViewSchedDAGs</a>) <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a6ec02a7ebbe56dfc864242c77c5a194f">viewGraph</a>(<span class="stringliteral">"scheduler input for "</span> + BlockName);
+<a name="l00670"></a>00670 
+<a name="l00671"></a>00671   <span class="comment">// Schedule machine code.</span>
+<a name="l00672"></a>00672   <a class="code" href="classllvm_1_1ScheduleDAGSDNodes.html">ScheduleDAGSDNodes</a> *<a class="code" href="MachineScheduler_8cpp.html#a127ed1a56215acb4c76dcbb1e8aad935">Scheduler</a> = CreateScheduler();
+<a name="l00673"></a>00673   {
+<a name="l00674"></a>00674     <a class="code" href="structllvm_1_1NamedRegionTimer.html">NamedRegionTimer</a> T(<span class="stringliteral">"Instruction Scheduling"</span>, GroupName,
+<a name="l00675"></a>00675                        <a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>);
+<a name="l00676"></a>00676     Scheduler-><a class="code" href="classllvm_1_1ScheduleDAGSDNodes.html#aa00d73e05dee6c2701209bac3d7786b8">Run</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>);
+<a name="l00677"></a>00677   }
+<a name="l00678"></a>00678 
+<a name="l00679"></a>00679   <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#ae7868871a8317ca2ce9ff0dfde545b24">ViewSUnitDAGs</a>) Scheduler-><a class="code" href="classllvm_1_1ScheduleDAG.html#a209b615edbcad3e1a7afd7411ce4eae2">viewGraph</a>();
+<a name="l00680"></a>00680 
+<a name="l00681"></a>00681   <span class="comment">// Emit machine code to BB.  This can change 'BB' to the last block being</span>
+<a name="l00682"></a>00682   <span class="comment">// inserted into.</span>
+<a name="l00683"></a>00683   <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *FirstMBB = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>, *LastMBB;
+<a name="l00684"></a>00684   {
+<a name="l00685"></a>00685     <a class="code" href="structllvm_1_1NamedRegionTimer.html">NamedRegionTimer</a> T(<span class="stringliteral">"Instruction Creation"</span>, GroupName, <a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>);
+<a name="l00686"></a>00686 
+<a name="l00687"></a>00687     <span class="comment">// FuncInfo->InsertPt is passed by reference and set to the end of the</span>
+<a name="l00688"></a>00688     <span class="comment">// scheduled instructions.</span>
+<a name="l00689"></a>00689     LastMBB = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a> = Scheduler-><a class="code" href="classllvm_1_1ScheduleDAGSDNodes.html#a6f60ed03227dbeb711a3ae9b1f0238e9">EmitSchedule</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a>);
+<a name="l00690"></a>00690   }
+<a name="l00691"></a>00691 
+<a name="l00692"></a>00692   <span class="comment">// If the block was split, make sure we update any references that are used to</span>
+<a name="l00693"></a>00693   <span class="comment">// update PHI nodes later on.</span>
+<a name="l00694"></a>00694   <span class="keywordflow">if</span> (FirstMBB != LastMBB)
+<a name="l00695"></a>00695     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#af6e9499206c6a56801d70a567fc8862a">UpdateSplitBlock</a>(FirstMBB, LastMBB);
+<a name="l00696"></a>00696 
+<a name="l00697"></a>00697   <span class="comment">// Free the scheduler state.</span>
+<a name="l00698"></a>00698   {
+<a name="l00699"></a>00699     <a class="code" href="structllvm_1_1NamedRegionTimer.html">NamedRegionTimer</a> T(<span class="stringliteral">"Instruction Scheduling Cleanup"</span>, GroupName,
+<a name="l00700"></a>00700                        <a class="code" href="namespacellvm.html#a44e2fc6ce783a1ca396d473139a0ae76" title="This is the storage for the -time-passes option.">TimePassesIsEnabled</a>);
+<a name="l00701"></a>00701     <span class="keyword">delete</span> <a class="code" href="MachineScheduler_8cpp.html#a127ed1a56215acb4c76dcbb1e8aad935">Scheduler</a>;
+<a name="l00702"></a>00702   }
+<a name="l00703"></a>00703 
+<a name="l00704"></a>00704   <span class="comment">// Free the SelectionDAG state, now that we're finished with it.</span>
+<a name="l00705"></a>00705   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a834591cc93f24897577aabeffe3b7913">clear</a>();
+<a name="l00706"></a>00706 }
+<a name="l00707"></a>00707 
+<a name="l00708"></a>00708 <span class="keyword">namespace </span>{<span class="comment"></span>
+<a name="l00709"></a>00709 <span class="comment">/// ISelUpdater - helper class to handle updates of the instruction selection</span>
+<a name="l00710"></a>00710 <span class="comment">/// graph.</span>
+<a name="l00711"></a>00711 <span class="comment"></span><span class="keyword">class </span>ISelUpdater : <span class="keyword">public</span> <a class="code" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a>::DAGUpdateListener {
+<a name="l00712"></a>00712   <a class="code" href="classllvm_1_1SelectionDAG.html#a62d7889af421e6465805c3e67d7f0610">SelectionDAG::allnodes_iterator</a> &ISelPosition;
+<a name="l00713"></a>00713 <span class="keyword">public</span>:
+<a name="l00714"></a>00714   ISelUpdater(<a class="code" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> &DAG, <a class="code" href="classllvm_1_1SelectionDAG.html#a62d7889af421e6465805c3e67d7f0610">SelectionDAG::allnodes_iterator</a> &isp)
+<a name="l00715"></a>00715     : <a class="code" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a>::DAGUpdateListener(DAG), ISelPosition(isp) {}
+<a name="l00716"></a>00716 <span class="comment"></span>
+<a name="l00717"></a>00717 <span class="comment">  /// NodeDeleted - Handle nodes deleted from the graph. If the node being</span>
+<a name="l00718"></a>00718 <span class="comment">  /// deleted is the current ISelPosition node, update ISelPosition.</span>
+<a name="l00719"></a>00719 <span class="comment">  ///</span>
+<a name="l00720"></a>00720 <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> NodeDeleted(<a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *N, <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *E) {
+<a name="l00721"></a>00721     <span class="keywordflow">if</span> (ISelPosition == <a class="code" href="classllvm_1_1SelectionDAG.html#a62d7889af421e6465805c3e67d7f0610">SelectionDAG::allnodes_iterator</a>(N))
+<a name="l00722"></a>00722       ++ISelPosition;
+<a name="l00723"></a>00723   }
+<a name="l00724"></a>00724 };
+<a name="l00725"></a>00725 } <span class="comment">// end anonymous namespace</span>
+<a name="l00726"></a>00726 
+<a name="l00727"></a>00727 <span class="keywordtype">void</span> SelectionDAGISel::DoInstructionSelection() {
+<a name="l00728"></a>00728   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"===== Instruction selection begins: BB#"</span>
+<a name="l00729"></a>00729         << <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a6acda287e5c19ffb173b0bf8f1dd9c5e">getNumber</a>()
+<a name="l00730"></a>00730         << <span class="stringliteral">" '"</span> << <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a454838c989e99a86bd804e056c367bd9">getName</a>() << <span class="stringliteral">"'\n"</span>);
+<a name="l00731"></a>00731 
+<a name="l00732"></a>00732   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a9bcf997fee822474340db5e11c5217f7">PreprocessISelDAG</a>();
+<a name="l00733"></a>00733 
+<a name="l00734"></a>00734   <span class="comment">// Select target instructions for the DAG.</span>
+<a name="l00735"></a>00735   {
+<a name="l00736"></a>00736     <span class="comment">// Number all nodes with a topological order and set DAGSize.</span>
+<a name="l00737"></a>00737     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a3206f1a81f9832fbffe4fe3cb2be4d52">DAGSize</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#abb8c86cb032981edbbf6bf507ba2aa32">AssignTopologicalOrder</a>();
+<a name="l00738"></a>00738 
+<a name="l00739"></a>00739     <span class="comment">// Create a dummy node (which is not added to allnodes), that adds</span>
+<a name="l00740"></a>00740     <span class="comment">// a reference to the root node, preventing it from being deleted,</span>
+<a name="l00741"></a>00741     <span class="comment">// and tracking any changes of the root.</span>
+<a name="l00742"></a>00742     <a class="code" href="classllvm_1_1HandleSDNode.html">HandleSDNode</a> <a class="code" href="DynamicLibrary_8cpp.html#a8efa6281b644eb26fe749fc5c2af4d66">Dummy</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a2afe36f1344e00c9ef5f8cdb39d21890">getRoot</a>());
+<a name="l00743"></a>00743     <a class="code" href="classllvm_1_1SelectionDAG.html#a62d7889af421e6465805c3e67d7f0610">SelectionDAG::allnodes_iterator</a> ISelPosition (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a2afe36f1344e00c9ef5f8cdb39d21890">getRoot</a>().<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>());
+<a name="l00744"></a>00744     ++ISelPosition;
+<a name="l00745"></a>00745 
+<a name="l00746"></a>00746     <span class="comment">// Make sure that ISelPosition gets properly updated when nodes are deleted</span>
+<a name="l00747"></a>00747     <span class="comment">// in calls made from this function.</span>
+<a name="l00748"></a>00748     ISelUpdater ISU(*<a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>, ISelPosition);
+<a name="l00749"></a>00749 
+<a name="l00750"></a>00750     <span class="comment">// The AllNodes list is now topological-sorted. Visit the</span>
+<a name="l00751"></a>00751     <span class="comment">// nodes by starting at the end of the list (the root of the</span>
+<a name="l00752"></a>00752     <span class="comment">// graph) and preceding back toward the beginning (the entry</span>
+<a name="l00753"></a>00753     <span class="comment">// node).</span>
+<a name="l00754"></a>00754     <span class="keywordflow">while</span> (ISelPosition != <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac493b7df1666d70c1b355c82028148f0">allnodes_begin</a>()) {
+<a name="l00755"></a>00755       <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *Node = --ISelPosition;
+<a name="l00756"></a>00756       <span class="comment">// Skip dead nodes. DAGCombiner is expected to eliminate all dead nodes,</span>
+<a name="l00757"></a>00757       <span class="comment">// but there are currently some corner cases that it misses. Also, this</span>
+<a name="l00758"></a>00758       <span class="comment">// makes it theoretically possible to disable the DAGCombiner.</span>
+<a name="l00759"></a>00759       <span class="keywordflow">if</span> (Node-><a class="code" href="classllvm_1_1SDNode.html#afc071edeb7e2007d000374eba843f76a">use_empty</a>())
+<a name="l00760"></a>00760         <span class="keywordflow">continue</span>;
+<a name="l00761"></a>00761 
+<a name="l00762"></a>00762       <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *ResNode = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a5276d410489e22e2f40aec94d12475cb" title="Select - Main hook targets implement to select a node.">Select</a>(Node);
+<a name="l00763"></a>00763 
+<a name="l00764"></a>00764       <span class="comment">// FIXME: This is pretty gross.  'Select' should be changed to not return</span>
+<a name="l00765"></a>00765       <span class="comment">// anything at all and this code should be nuked with a tactical strike.</span>
+<a name="l00766"></a>00766 
+<a name="l00767"></a>00767       <span class="comment">// If node should not be replaced, continue with the next one.</span>
+<a name="l00768"></a>00768       <span class="keywordflow">if</span> (ResNode == Node || Node-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a062083eb3ff8c441c73d3bf42ca09bba">ISD::DELETED_NODE</a>)
+<a name="l00769"></a>00769         <span class="keywordflow">continue</span>;
+<a name="l00770"></a>00770       <span class="comment">// Replace node.</span>
+<a name="l00771"></a>00771       <span class="keywordflow">if</span> (ResNode)
+<a name="l00772"></a>00772         <a class="code" href="classllvm_1_1SelectionDAGISel.html#a84e771c0f56c984d8ee4a85c0cb46ed3">ReplaceUses</a>(Node, ResNode);
+<a name="l00773"></a>00773 
+<a name="l00774"></a>00774       <span class="comment">// If after the replacement this node is not used any more,</span>
+<a name="l00775"></a>00775       <span class="comment">// remove this dead node.</span>
+<a name="l00776"></a>00776       <span class="keywordflow">if</span> (Node-><a class="code" href="classllvm_1_1SDNode.html#afc071edeb7e2007d000374eba843f76a">use_empty</a>()) <span class="comment">// Don't delete EntryToken, etc.</span>
+<a name="l00777"></a>00777         <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a935ace76cef67c6da10cf0633371efe1">RemoveDeadNode</a>(Node);
+<a name="l00778"></a>00778     }
+<a name="l00779"></a>00779 
+<a name="l00780"></a>00780     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a3d2e079387a6e69ce2c8bb27bf7c2f32">setRoot</a>(<a class="code" href="DynamicLibrary_8cpp.html#a8efa6281b644eb26fe749fc5c2af4d66">Dummy</a>.getValue());
+<a name="l00781"></a>00781   }
+<a name="l00782"></a>00782 
+<a name="l00783"></a>00783   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"===== Instruction selection ends:\n"</span>);
+<a name="l00784"></a>00784 
+<a name="l00785"></a>00785   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2070933838365d7033fa1038ef0bf22c">PostprocessISelDAG</a>();
+<a name="l00786"></a>00786 }
+<a name="l00787"></a>00787 <span class="comment"></span>
+<a name="l00788"></a>00788 <span class="comment">/// PrepareEHLandingPad - Emit an EH_LABEL, set up live-in registers, and</span>
+<a name="l00789"></a>00789 <span class="comment">/// do other setup for EH landing-pad blocks.</span>
+<a name="l00790"></a>00790 <span class="comment"></span><span class="keywordtype">void</span> SelectionDAGISel::PrepareEHLandingPad() {
+<a name="l00791"></a>00791   <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *MBB = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>;
+<a name="l00792"></a>00792 
+<a name="l00793"></a>00793   <span class="comment">// Add a label to mark the beginning of the landing pad.  Deletion of the</span>
+<a name="l00794"></a>00794   <span class="comment">// landing pad can thus be detected via the MachineModuleInfo.</span>
+<a name="l00795"></a>00795   <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Label = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>-><a class="code" href="classllvm_1_1MachineFunction.html#aaaa58853344cccb2ae6dcecea4ee54ad">getMMI</a>().<a class="code" href="classllvm_1_1MachineModuleInfo.html#ac504b93158e311edcdf423930b998bc9">addLandingPad</a>(MBB);
+<a name="l00796"></a>00796 
+<a name="l00797"></a>00797   <span class="comment">// Assign the call site to the landing pad's begin label.</span>
+<a name="l00798"></a>00798   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>-><a class="code" href="classllvm_1_1MachineFunction.html#aaaa58853344cccb2ae6dcecea4ee54ad">getMMI</a>().<a class="code" href="classllvm_1_1MachineModuleInfo.html#a1c2f69d218d1271947ae1e618cccb34b">setCallSiteLandingPad</a>(Label, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a053b2cccf7a5a9531bb9a91a4eb78311" title="LPadToCallSiteMap - Map a landing pad to the call site indexes.">LPadToCallSiteMap</a>[MBB]);
+<a name="l00799"></a>00799 
+<a name="l00800"></a>00800   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstrDesc.html">MCInstrDesc</a> &II = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a306086e3142a8dd0bdf6698bde8672e1">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#ac13d0f6f2c915757013b101ef6e8afbc">getInstrInfo</a>()-><a class="code" href="classllvm_1_1MCInstrInfo.html#ab16f5a81fccfe4b7f645ba5a74ffad02">get</a>(<a class="code" href="namespacellvm_1_1TargetOpcode.html#aa2b3629c9319f86eee5a2c0e8c75ebfaa4464c39babc8c8afe5055a25af42b548">TargetOpcode::EH_LABEL</a>);
+<a name="l00801"></a>00801   <a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(*MBB, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a>, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a786df6ad0d47c92c8c411ab209dacd32">getCurDebugLoc</a>(), II)
+<a name="l00802"></a>00802     .addSym(Label);
+<a name="l00803"></a>00803 
+<a name="l00804"></a>00804   <span class="comment">// Mark exception register as live in.</span>
+<a name="l00805"></a>00805   <span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad114b2de47d6b8da17f3f60359e4d8e7">TLI</a>.<a class="code" href="classllvm_1_1TargetLowering.html#ab1e1b66a1362edacfd3ff988066fd46a">getExceptionPointerRegister</a>();
+<a name="l00806"></a>00806   <span class="keywordflow">if</span> (Reg) MBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ae26efdb76d5c56388c65dc5b02a2ae6f">addLiveIn</a>(Reg);
+<a name="l00807"></a>00807 
+<a name="l00808"></a>00808   <span class="comment">// Mark exception selector register as live in.</span>
+<a name="l00809"></a>00809   Reg = <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad114b2de47d6b8da17f3f60359e4d8e7">TLI</a>.<a class="code" href="classllvm_1_1TargetLowering.html#ac7d44c84d6fdfadbe86850f7429e1de8">getExceptionSelectorRegister</a>();
+<a name="l00810"></a>00810   <span class="keywordflow">if</span> (Reg) MBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ae26efdb76d5c56388c65dc5b02a2ae6f">addLiveIn</a>(Reg);
+<a name="l00811"></a>00811 }
+<a name="l00812"></a>00812 <span class="comment"></span>
+<a name="l00813"></a>00813 <span class="comment">/// TryToFoldFastISelLoad - We're checking to see if we can fold the specified</span>
+<a name="l00814"></a>00814 <span class="comment">/// load into the specified FoldInst.  Note that we could have a sequence where</span>
+<a name="l00815"></a>00815 <span class="comment">/// multiple LLVM IR instructions are folded into the same machineinstr.  For</span>
+<a name="l00816"></a>00816 <span class="comment">/// example we could have:</span>
+<a name="l00817"></a>00817 <span class="comment">///   A: x = load i32 *P</span>
+<a name="l00818"></a>00818 <span class="comment">///   B: y = icmp A, 42</span>
+<a name="l00819"></a>00819 <span class="comment">///   C: br y, ...</span>
+<a name="l00820"></a>00820 <span class="comment">///</span>
+<a name="l00821"></a>00821 <span class="comment">/// In this scenario, LI is "A", and FoldInst is "C".  We know about "B" (and</span>
+<a name="l00822"></a>00822 <span class="comment">/// any other folded instructions) because it is between A and C.</span>
+<a name="l00823"></a>00823 <span class="comment">///</span>
+<a name="l00824"></a>00824 <span class="comment">/// If we succeed in folding the load into the operation, return true.</span>
+<a name="l00825"></a>00825 <span class="comment">///</span>
+<a name="l00826"></a>00826 <span class="comment"></span><span class="keywordtype">bool</span> SelectionDAGISel::TryToFoldFastISelLoad(<span class="keyword">const</span> <a class="code" href="classllvm_1_1LoadInst.html">LoadInst</a> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>,
+<a name="l00827"></a>00827                                              <span class="keyword">const</span> <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *FoldInst,
+<a name="l00828"></a>00828                                              <a class="code" href="classllvm_1_1FastISel.html">FastISel</a> *FastIS) {
+<a name="l00829"></a>00829   <span class="comment">// We know that the load has a single use, but don't know what it is.  If it</span>
+<a name="l00830"></a>00830   <span class="comment">// isn't one of the folded instructions, then we can't succeed here.  Handle</span>
+<a name="l00831"></a>00831   <span class="comment">// this by scanning the single-use users of the load until we get to FoldInst.</span>
+<a name="l00832"></a>00832   <span class="keywordtype">unsigned</span> MaxUsers = 6;  <span class="comment">// Don't scan down huge single-use chains of instrs.</span>
+<a name="l00833"></a>00833 
+<a name="l00834"></a>00834   <span class="keyword">const</span> <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *TheUser = LI-><a class="code" href="classllvm_1_1Instruction.html#a5ac211f24970dea81fa9a7118a8ce36b">use_back</a>();
+<a name="l00835"></a>00835   <span class="keywordflow">while</span> (TheUser != FoldInst &&   <span class="comment">// Scan up until we find FoldInst.</span>
+<a name="l00836"></a>00836          <span class="comment">// Stay in the right block.</span>
+<a name="l00837"></a>00837          TheUser-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>() == FoldInst-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>() &&
+<a name="l00838"></a>00838          --MaxUsers) {  <span class="comment">// Don't scan too far.</span>
+<a name="l00839"></a>00839     <span class="comment">// If there are multiple or no uses of this instruction, then bail out.</span>
+<a name="l00840"></a>00840     <span class="keywordflow">if</span> (!TheUser-><a class="code" href="classllvm_1_1Value.html#a085b82f074c28030fb8e194377ed2d0c">hasOneUse</a>())
+<a name="l00841"></a>00841       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00842"></a>00842 
+<a name="l00843"></a>00843     TheUser = TheUser-><a class="code" href="classllvm_1_1Instruction.html#a5ac211f24970dea81fa9a7118a8ce36b">use_back</a>();
+<a name="l00844"></a>00844   }
+<a name="l00845"></a>00845 
+<a name="l00846"></a>00846   <span class="comment">// If we didn't find the fold instruction, then we failed to collapse the</span>
+<a name="l00847"></a>00847   <span class="comment">// sequence.</span>
+<a name="l00848"></a>00848   <span class="keywordflow">if</span> (TheUser != FoldInst)
+<a name="l00849"></a>00849     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00850"></a>00850 
+<a name="l00851"></a>00851   <span class="comment">// Don't try to fold volatile loads.  Target has to deal with alignment</span>
+<a name="l00852"></a>00852   <span class="comment">// constraints.</span>
+<a name="l00853"></a>00853   <span class="keywordflow">if</span> (LI-><a class="code" href="classllvm_1_1LoadInst.html#aeb96f1a88b4e58c34a988eebd843f688">isVolatile</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00854"></a>00854 
+<a name="l00855"></a>00855   <span class="comment">// Figure out which vreg this is going into.  If there is no assigned vreg yet</span>
+<a name="l00856"></a>00856   <span class="comment">// then there actually was no reference to it.  Perhaps the load is referenced</span>
+<a name="l00857"></a>00857   <span class="comment">// by a dead instruction.</span>
+<a name="l00858"></a>00858   <span class="keywordtype">unsigned</span> LoadReg = FastIS-><a class="code" href="classllvm_1_1FastISel.html#a622597e6f1bb1a26e91b8fdc2aec0bde">getRegForValue</a>(LI);
+<a name="l00859"></a>00859   <span class="keywordflow">if</span> (LoadReg == 0)
+<a name="l00860"></a>00860     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00861"></a>00861 
+<a name="l00862"></a>00862   <span class="comment">// Check to see what the uses of this vreg are.  If it has no uses, or more</span>
+<a name="l00863"></a>00863   <span class="comment">// than one use (at the machine instr level) then we can't fold it.</span>
+<a name="l00864"></a>00864   <a class="code" href="classllvm_1_1MachineRegisterInfo_1_1defusechain__iterator.html">MachineRegisterInfo::reg_iterator</a> RI = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a303effb01b1d92c71b15cc25b2438917">RegInfo</a>-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#adfeaea4e5c82dea47ff9aa1f8367104c">reg_begin</a>(LoadReg);
+<a name="l00865"></a>00865   <span class="keywordflow">if</span> (RI == <a class="code" href="classllvm_1_1SelectionDAGISel.html#a303effb01b1d92c71b15cc25b2438917">RegInfo</a>-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#a1d8edf72c1d3e14e4d2396b98e07ad72">reg_end</a>())
+<a name="l00866"></a>00866     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00867"></a>00867 
+<a name="l00868"></a>00868   <span class="comment">// See if there is exactly one use of the vreg.  If there are multiple uses,</span>
+<a name="l00869"></a>00869   <span class="comment">// then the instruction got lowered to multiple machine instructions or the</span>
+<a name="l00870"></a>00870   <span class="comment">// use of the loaded value ended up being multiple operands of the result, in</span>
+<a name="l00871"></a>00871   <span class="comment">// either case, we can't fold this.</span>
+<a name="l00872"></a>00872   <a class="code" href="classllvm_1_1MachineRegisterInfo_1_1defusechain__iterator.html">MachineRegisterInfo::reg_iterator</a> PostRI = RI; ++PostRI;
+<a name="l00873"></a>00873   <span class="keywordflow">if</span> (PostRI != <a class="code" href="classllvm_1_1SelectionDAGISel.html#a303effb01b1d92c71b15cc25b2438917">RegInfo</a>-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#a1d8edf72c1d3e14e4d2396b98e07ad72">reg_end</a>())
+<a name="l00874"></a>00874     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00875"></a>00875 
+<a name="l00876"></a>00876   assert(RI.<a class="code" href="classllvm_1_1MachineRegisterInfo_1_1defusechain__iterator.html#a95a32f591bca64490f1fb1d5104e06c8">getOperand</a>().<a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>() &&
+<a name="l00877"></a>00877          <span class="stringliteral">"The only use of the vreg must be a use, we haven't emitted the def!"</span>);
+<a name="l00878"></a>00878 
+<a name="l00879"></a>00879   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="classllvm_1_1User.html">User</a> = &*RI;
+<a name="l00880"></a>00880 
+<a name="l00881"></a>00881   <span class="comment">// Set the insertion point properly.  Folding the load can cause generation of</span>
+<a name="l00882"></a>00882   <span class="comment">// other random instructions (like sign extends) for addressing modes, make</span>
+<a name="l00883"></a>00883   <span class="comment">// sure they get inserted in a logical place before the new instruction.</span>
+<a name="l00884"></a>00884   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a> = User;
+<a name="l00885"></a>00885   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a> = User-><a class="code" href="classllvm_1_1MachineBasicBlock.html#af2e482ff2a9253ec6bc2285491496bd6">getParent</a>();
+<a name="l00886"></a>00886 
+<a name="l00887"></a>00887   <span class="comment">// Ask the target to try folding the load.</span>
+<a name="l00888"></a>00888   <span class="keywordflow">return</span> FastIS-><a class="code" href="classllvm_1_1FastISel.html#a8b27a4680521395dd03291fd7b5372e1">TryToFoldLoad</a>(User, RI.<a class="code" href="classllvm_1_1MachineRegisterInfo_1_1defusechain__iterator.html#a2ae4c129d83e0b28b8c5ca8691fa0a91">getOperandNo</a>(), <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>);
+<a name="l00889"></a>00889 }
+<a name="l00890"></a>00890 <span class="comment"></span>
+<a name="l00891"></a>00891 <span class="comment">/// isFoldedOrDeadInstruction - Return true if the specified instruction is</span>
+<a name="l00892"></a>00892 <span class="comment">/// side-effect free and is either dead or folded into a generated instruction.</span>
+<a name="l00893"></a>00893 <span class="comment">/// Return false if it needs to be emitted.</span>
+<a name="l00894"></a><a class="code" href="SelectionDAGISel_8cpp.html#a9eb151f67a54574fa315413f25a5b53c">00894</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SelectionDAGISel_8cpp.html#a9eb151f67a54574fa315413f25a5b53c">isFoldedOrDeadInstruction</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>,
+<a name="l00895"></a>00895                                       <a class="code" href="classllvm_1_1FunctionLoweringInfo.html">FunctionLoweringInfo</a> *FuncInfo) {
+<a name="l00896"></a>00896   <span class="keywordflow">return</span> !I-><a class="code" href="classllvm_1_1Instruction.html#aa26de3d6e38997b9041e824ea558c770">mayWriteToMemory</a>() && <span class="comment">// Side-effecting instructions aren't folded.</span>
+<a name="l00897"></a>00897          !isa<TerminatorInst>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) && <span class="comment">// Terminators aren't folded.</span>
+<a name="l00898"></a>00898          !isa<DbgInfoIntrinsic>(I) &&  <span class="comment">// Debug instructions aren't folded.</span>
+<a name="l00899"></a>00899          !isa<LandingPadInst>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) &&    <span class="comment">// Landingpad instructions aren't folded.</span>
+<a name="l00900"></a>00900          !FuncInfo-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a5001b6c031e4f880246c271fe3fb87ea">isExportedInst</a>(I); <span class="comment">// Exported instrs must be computed.</span>
+<a name="l00901"></a>00901 }
+<a name="l00902"></a>00902 
+<a name="l00903"></a>00903 <span class="preprocessor">#ifndef NDEBUG</span>
+<a name="l00904"></a>00904 <span class="preprocessor"></span><span class="comment">// Collect per Instruction statistics for fast-isel misses.  Only those</span>
+<a name="l00905"></a>00905 <span class="comment">// instructions that cause the bail are accounted for.  It does not account for</span>
+<a name="l00906"></a>00906 <span class="comment">// instructions higher in the block.  Thus, summing the per instructions stats</span>
+<a name="l00907"></a>00907 <span class="comment">// will not add up to what is reported by NumFastIselFailures.</span>
+<a name="l00908"></a><a class="code" href="SelectionDAGISel_8cpp.html#abc62c7ae4b5f73ce4a6e84dcc10682a3">00908</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SelectionDAGISel_8cpp.html#abc62c7ae4b5f73ce4a6e84dcc10682a3">collectFailStats</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00909"></a>00909   <span class="keywordflow">switch</span> (I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>()) {
+<a name="l00910"></a>00910   <span class="keywordflow">default</span>: assert (0 && <span class="stringliteral">"<Invalid operator> "</span>);
+<a name="l00911"></a>00911 
+<a name="l00912"></a>00912   <span class="comment">// Terminators</span>
+<a name="l00913"></a>00913   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a4e52b775450b88b95f31bae9c160fe01">Instruction::Ret</a>:         NumFastIselFailRet++; <span class="keywordflow">return</span>;
+<a name="l00914"></a>00914   <span class="keywordflow">case</span> Instruction::Br:          NumFastIselFailBr++; <span class="keywordflow">return</span>;
+<a name="l00915"></a>00915   <span class="keywordflow">case</span> Instruction::Switch:      NumFastIselFailSwitch++; <span class="keywordflow">return</span>;
+<a name="l00916"></a>00916   <span class="keywordflow">case</span> Instruction::IndirectBr:  NumFastIselFailIndirectBr++; <span class="keywordflow">return</span>;
+<a name="l00917"></a>00917   <span class="keywordflow">case</span> Instruction::Invoke:      NumFastIselFailInvoke++; <span class="keywordflow">return</span>;
+<a name="l00918"></a>00918   <span class="keywordflow">case</span> Instruction::Resume:      NumFastIselFailResume++; <span class="keywordflow">return</span>;
+<a name="l00919"></a>00919   <span class="keywordflow">case</span> Instruction::Unreachable: NumFastIselFailUnreachable++; <span class="keywordflow">return</span>;
+<a name="l00920"></a>00920 
+<a name="l00921"></a>00921   <span class="comment">// Standard binary operators...</span>
+<a name="l00922"></a>00922   <span class="keywordflow">case</span> Instruction::Add:  NumFastIselFailAdd++; <span class="keywordflow">return</span>;
+<a name="l00923"></a>00923   <span class="keywordflow">case</span> Instruction::FAdd: NumFastIselFailFAdd++; <span class="keywordflow">return</span>;
+<a name="l00924"></a>00924   <span class="keywordflow">case</span> Instruction::Sub:  NumFastIselFailSub++; <span class="keywordflow">return</span>;
+<a name="l00925"></a>00925   <span class="keywordflow">case</span> Instruction::FSub: NumFastIselFailFSub++; <span class="keywordflow">return</span>;
+<a name="l00926"></a>00926   <span class="keywordflow">case</span> Instruction::Mul:  NumFastIselFailMul++; <span class="keywordflow">return</span>;
+<a name="l00927"></a>00927   <span class="keywordflow">case</span> Instruction::FMul: NumFastIselFailFMul++; <span class="keywordflow">return</span>;
+<a name="l00928"></a>00928   <span class="keywordflow">case</span> Instruction::UDiv: NumFastIselFailUDiv++; <span class="keywordflow">return</span>;
+<a name="l00929"></a>00929   <span class="keywordflow">case</span> Instruction::SDiv: NumFastIselFailSDiv++; <span class="keywordflow">return</span>;
+<a name="l00930"></a>00930   <span class="keywordflow">case</span> Instruction::FDiv: NumFastIselFailFDiv++; <span class="keywordflow">return</span>;
+<a name="l00931"></a>00931   <span class="keywordflow">case</span> Instruction::URem: NumFastIselFailURem++; <span class="keywordflow">return</span>;
+<a name="l00932"></a>00932   <span class="keywordflow">case</span> Instruction::SRem: NumFastIselFailSRem++; <span class="keywordflow">return</span>;
+<a name="l00933"></a>00933   <span class="keywordflow">case</span> Instruction::FRem: NumFastIselFailFRem++; <span class="keywordflow">return</span>;
+<a name="l00934"></a>00934 
+<a name="l00935"></a>00935   <span class="comment">// Logical operators...</span>
+<a name="l00936"></a>00936   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1APIntOps.html#a684cfe02c582e8d75cd6d457e63e6c25" title="Bitwise AND function for APInt.">Instruction::And</a>: NumFastIselFailAnd++; <span class="keywordflow">return</span>;
+<a name="l00937"></a>00937   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1APIntOps.html#a22f056804d2b9882f74adc905872bc39" title="Bitwise OR function for APInt.">Instruction::Or</a>:  NumFastIselFailOr++; <span class="keywordflow">return</span>;
+<a name="l00938"></a>00938   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1APIntOps.html#afc7c4d88d09cba0c5e920f8a3a3ace55" title="Bitwise XOR function for APInt.">Instruction::Xor</a>: NumFastIselFailXor++; <span class="keywordflow">return</span>;
+<a name="l00939"></a>00939 
+<a name="l00940"></a>00940   <span class="comment">// Memory instructions...</span>
+<a name="l00941"></a>00941   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a046d5352df590c864fee454e53ac31c6">Instruction::Alloca</a>:        NumFastIselFailAlloca++; <span class="keywordflow">return</span>;
+<a name="l00942"></a>00942   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPII.html#add994c36633ba2d8f6a1366b775e88a6a5069619ca8fdce305534f3fe85091a0f">Instruction::Load</a>:          NumFastIselFailLoad++; <span class="keywordflow">return</span>;
+<a name="l00943"></a>00943   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPII.html#add994c36633ba2d8f6a1366b775e88a6a36b3dd3b84fde3f8494a9b18af131856">Instruction::Store</a>:         NumFastIselFailStore++; <span class="keywordflow">return</span>;
+<a name="l00944"></a>00944   <span class="keywordflow">case</span> Instruction::AtomicCmpXchg: NumFastIselFailAtomicCmpXchg++; <span class="keywordflow">return</span>;
+<a name="l00945"></a>00945   <span class="keywordflow">case</span> Instruction::AtomicRMW:     NumFastIselFailAtomicRMW++; <span class="keywordflow">return</span>;
+<a name="l00946"></a>00946   <span class="keywordflow">case</span> Instruction::Fence:         NumFastIselFailFence++; <span class="keywordflow">return</span>;
+<a name="l00947"></a>00947   <span class="keywordflow">case</span> Instruction::GetElementPtr: NumFastIselFailGetElementPtr++; <span class="keywordflow">return</span>;
+<a name="l00948"></a>00948 
+<a name="l00949"></a>00949   <span class="comment">// Convert instructions...</span>
+<a name="l00950"></a>00950   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a3da04da2a51c5da491960f875a3222ad">Instruction::Trunc</a>:    NumFastIselFailTrunc++; <span class="keywordflow">return</span>;
+<a name="l00951"></a>00951   <span class="keywordflow">case</span> Instruction::ZExt:     NumFastIselFailZExt++; <span class="keywordflow">return</span>;
+<a name="l00952"></a>00952   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#ae2dfc57500e32ee6f5ac871f7ec55d5b">Instruction::SExt</a>:     NumFastIselFailSExt++; <span class="keywordflow">return</span>;
+<a name="l00953"></a>00953   <span class="keywordflow">case</span> Instruction::FPTrunc:  NumFastIselFailFPTrunc++; <span class="keywordflow">return</span>;
+<a name="l00954"></a>00954   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a24e13352d9c828e3de6682f4baae88fd">Instruction::FPExt</a>:    NumFastIselFailFPExt++; <span class="keywordflow">return</span>;
+<a name="l00955"></a>00955   <span class="keywordflow">case</span> Instruction::FPToUI:   NumFastIselFailFPToUI++; <span class="keywordflow">return</span>;
+<a name="l00956"></a>00956   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a3677968984dd841410ed46288fd5ab6c">Instruction::FPToSI</a>:   NumFastIselFailFPToSI++; <span class="keywordflow">return</span>;
+<a name="l00957"></a>00957   <span class="keywordflow">case</span> Instruction::UIToFP:   NumFastIselFailUIToFP++; <span class="keywordflow">return</span>;
+<a name="l00958"></a>00958   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#aa7d131dc7d18431127ae9fe7d4429fa7">Instruction::SIToFP</a>:   NumFastIselFailSIToFP++; <span class="keywordflow">return</span>;
+<a name="l00959"></a>00959   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a20744d4958a3cd24012862024a8b5851">Instruction::IntToPtr</a>: NumFastIselFailIntToPtr++; <span class="keywordflow">return</span>;
+<a name="l00960"></a>00960   <span class="keywordflow">case</span> Instruction::PtrToInt: NumFastIselFailPtrToInt++; <span class="keywordflow">return</span>;
+<a name="l00961"></a>00961   <span class="keywordflow">case</span> Instruction::BitCast:  NumFastIselFailBitCast++; <span class="keywordflow">return</span>;
+<a name="l00962"></a>00962 
+<a name="l00963"></a>00963   <span class="comment">// Other instructions...</span>
+<a name="l00964"></a>00964   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a6a4ce50f71e29df6dd1920cf067a2eb5">Instruction::ICmp</a>:           NumFastIselFailICmp++; <span class="keywordflow">return</span>;
+<a name="l00965"></a>00965   <span class="keywordflow">case</span> Instruction::FCmp:           NumFastIselFailFCmp++; <span class="keywordflow">return</span>;
+<a name="l00966"></a>00966   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">Instruction::PHI</a>:            NumFastIselFailPHI++; <span class="keywordflow">return</span>;
+<a name="l00967"></a>00967   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1MCID.html#accb16fffd544529ed4d816a45e40f425a32dbd2c72a98eaee90e3ad5ef7b5af16">Instruction::Select</a>:         NumFastIselFailSelect++; <span class="keywordflow">return</span>;
+<a name="l00968"></a>00968   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#af6d6a791770bad2303c4399986979e3eae411369b2f0d8f484fec62c3291b1b51">Instruction::Call</a>:           NumFastIselFailCall++; <span class="keywordflow">return</span>;
+<a name="l00969"></a>00969   <span class="keywordflow">case</span> Instruction::Shl:            NumFastIselFailShl++; <span class="keywordflow">return</span>;
+<a name="l00970"></a>00970   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a5d76973fd2e5e0fd234e129d3fb03db0">Instruction::LShr</a>:           NumFastIselFailLShr++; <span class="keywordflow">return</span>;
+<a name="l00971"></a>00971   <span class="keywordflow">case</span> Instruction::AShr:           NumFastIselFailAShr++; <span class="keywordflow">return</span>;
+<a name="l00972"></a>00972   <span class="keywordflow">case</span> Instruction::VAArg:          NumFastIselFailVAArg++; <span class="keywordflow">return</span>;
+<a name="l00973"></a>00973   <span class="keywordflow">case</span> <a class="code" href="InstCombineCompares_8cpp.html#aa5ab8c7b55d8bc7cab66be444daa70a1">Instruction::ExtractElement</a>: NumFastIselFailExtractElement++; <span class="keywordflow">return</span>;
+<a name="l00974"></a>00974   <span class="keywordflow">case</span> Instruction::InsertElement:  NumFastIselFailInsertElement++; <span class="keywordflow">return</span>;
+<a name="l00975"></a>00975   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#adf8e6afb8f89abc3900677224e37e9fc">Instruction::ShuffleVector</a>:  NumFastIselFailShuffleVector++; <span class="keywordflow">return</span>;
+<a name="l00976"></a>00976   <span class="keywordflow">case</span> Instruction::ExtractValue:   NumFastIselFailExtractValue++; <span class="keywordflow">return</span>;
+<a name="l00977"></a>00977   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a76c28bb2ffedc276a40a8898166e0d3a">Instruction::InsertValue</a>:    NumFastIselFailInsertValue++; <span class="keywordflow">return</span>;
+<a name="l00978"></a>00978   <span class="keywordflow">case</span> Instruction::LandingPad:     NumFastIselFailLandingPad++; <span class="keywordflow">return</span>;
+<a name="l00979"></a>00979   }
+<a name="l00980"></a>00980 }
+<a name="l00981"></a>00981 <span class="preprocessor">#endif</span>
+<a name="l00982"></a>00982 <span class="preprocessor"></span>
+<a name="l00983"></a>00983 <span class="keywordtype">void</span> SelectionDAGISel::SelectAllBasicBlocks(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Function.html">Function</a> &Fn) {
+<a name="l00984"></a>00984   <span class="comment">// Initialize the Fast-ISel state, if needed.</span>
+<a name="l00985"></a>00985   <a class="code" href="classllvm_1_1FastISel.html">FastISel</a> *FastIS = 0;
+<a name="l00986"></a>00986   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a306086e3142a8dd0bdf6698bde8672e1">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#ab1fb67187fc37e569cc5171cbebba873">Options</a>.<a class="code" href="classllvm_1_1TargetOptions.html#ab26d50483184808463759bea1da917f8">EnableFastISel</a>)
+<a name="l00987"></a>00987     FastIS = <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad114b2de47d6b8da17f3f60359e4d8e7">TLI</a>.<a class="code" href="classllvm_1_1TargetLowering.html#ac0464176c5e6cc20826b9ad8495067df">createFastISel</a>(*<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a4539a142623c3a6f33247c1f291b742e">LibInfo</a>);
+<a name="l00988"></a>00988 
+<a name="l00989"></a>00989   <span class="comment">// Iterate over all basic blocks in the function.</span>
+<a name="l00990"></a>00990   <a class="code" href="classllvm_1_1ReversePostOrderTraversal.html">ReversePostOrderTraversal<const Function*></a> RPOT(&Fn);
+<a name="l00991"></a>00991   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ReversePostOrderTraversal.html#aa447608e2881e813215c3f289496c6ea">ReversePostOrderTraversal<const Function*>::rpo_iterator</a>
+<a name="l00992"></a>00992        <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = RPOT.begin(), E = RPOT.end(); <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00993"></a>00993     <span class="keyword">const</span> <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *LLVMBB = *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00994"></a>00994 
+<a name="l00995"></a>00995     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a1a7c2a3380a9f770ba082a070c592df6">OptLevel</a> != <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4a451bbac85aff02d070be3c17a6bef928">CodeGenOpt::None</a>) {
+<a name="l00996"></a>00996       <span class="keywordtype">bool</span> AllPredsVisited = <span class="keyword">true</span>;
+<a name="l00997"></a>00997       <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1PredIterator.html">const_pred_iterator</a> PI = <a class="code" href="namespacellvm.html#a7e108932dc3da5294aed99a353aac9c4">pred_begin</a>(LLVMBB), PE = <a class="code" href="namespacellvm.html#a5eeaf08e96168c2cac8960f87f0ef360">pred_end</a>(LLVMBB);
+<a name="l00998"></a>00998            PI != PE; ++PI) {
+<a name="l00999"></a>00999         <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a451ef41c10474698faf84831057575a1">VisitedBBs</a>.<a class="code" href="classllvm_1_1SmallPtrSet.html#a2ced6343b8ad006a757059554bbf9f37" title="count - Return true if the specified pointer is in the set.">count</a>(*PI)) {
+<a name="l01000"></a>01000           AllPredsVisited = <span class="keyword">false</span>;
+<a name="l01001"></a>01001           <span class="keywordflow">break</span>;
+<a name="l01002"></a>01002         }
+<a name="l01003"></a>01003       }
+<a name="l01004"></a>01004 
+<a name="l01005"></a>01005       <span class="keywordflow">if</span> (AllPredsVisited) {
+<a name="l01006"></a>01006         <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::const_iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = LLVMBB-><a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>();
+<a name="l01007"></a>01007              isa<PHINode>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>); ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)
+<a name="l01008"></a>01008           <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#acada979e9424b6f61142bbca85a0fea0">ComputePHILiveOutRegInfo</a>(cast<PHINode>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>));
+<a name="l01009"></a>01009       } <span class="keywordflow">else</span> {
+<a name="l01010"></a>01010         <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::const_iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = LLVMBB-><a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>();
+<a name="l01011"></a>01011              isa<PHINode>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>); ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)
+<a name="l01012"></a>01012           <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a39bc44baeb40615967a3ce797fb27900">InvalidatePHILiveOutRegInfo</a>(cast<PHINode>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>));
+<a name="l01013"></a>01013       }
+<a name="l01014"></a>01014 
+<a name="l01015"></a>01015       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a451ef41c10474698faf84831057575a1">VisitedBBs</a>.<a class="code" href="classllvm_1_1SmallPtrSet.html#a9b6dd0fc7a648a939e571246045b673e">insert</a>(LLVMBB);
+<a name="l01016"></a>01016     }
+<a name="l01017"></a>01017 
+<a name="l01018"></a>01018     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a4c53c37d30d9482f565f78751a3797d3" title="MBBMap - A mapping from LLVM basic blocks to their machine code entry.">MBBMap</a>[LLVMBB];
+<a name="l01019"></a>01019     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#aa7dc7faaab4856b8f0014b8283e26c7b">getFirstNonPHI</a>();
+<a name="l01020"></a>01020 
+<a name="l01021"></a>01021     <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::const_iterator</a> <span class="keyword">const</span> Begin = LLVMBB-><a class="code" href="classllvm_1_1BasicBlock.html#a0e73f4e09745bb69fdd7b15232c45428">getFirstNonPHI</a>();
+<a name="l01022"></a>01022     <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::const_iterator</a> <span class="keyword">const</span> End = LLVMBB-><a class="code" href="classllvm_1_1BasicBlock.html#a0b4e7bee9b8575cc7db73329f1a561bd">end</a>();
+<a name="l01023"></a>01023     <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::const_iterator</a> BI = End;
+<a name="l01024"></a>01024 
+<a name="l01025"></a>01025     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#aa7dc7faaab4856b8f0014b8283e26c7b">getFirstNonPHI</a>();
+<a name="l01026"></a>01026 
+<a name="l01027"></a>01027     <span class="comment">// Setup an EH landing-pad block.</span>
+<a name="l01028"></a>01028     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a3f522ae33859d693fb5781efe690e9e6">isLandingPad</a>())
+<a name="l01029"></a>01029       PrepareEHLandingPad();
+<a name="l01030"></a>01030 
+<a name="l01031"></a>01031     <span class="comment">// Lower any arguments needed in this block if this is the entry block.</span>
+<a name="l01032"></a>01032     <span class="keywordflow">if</span> (LLVMBB == &Fn.<a class="code" href="classllvm_1_1Function.html#a30f2c362631e3728d2f47a8203071ade">getEntryBlock</a>())
+<a name="l01033"></a>01033       LowerArguments(LLVMBB);
+<a name="l01034"></a>01034 
+<a name="l01035"></a>01035     <span class="comment">// Before doing SelectionDAG ISel, see if FastISel has been requested.</span>
+<a name="l01036"></a>01036     <span class="keywordflow">if</span> (FastIS) {
+<a name="l01037"></a>01037       FastIS-><a class="code" href="classllvm_1_1FastISel.html#a6a4d1b2ae70640755d4942597b65376e">startNewBlock</a>();
+<a name="l01038"></a>01038 
+<a name="l01039"></a>01039       <span class="comment">// Emit code for any incoming arguments. This must happen before</span>
+<a name="l01040"></a>01040       <span class="comment">// beginning FastISel on the entry block.</span>
+<a name="l01041"></a>01041       <span class="keywordflow">if</span> (LLVMBB == &Fn.<a class="code" href="classllvm_1_1Function.html#a30f2c362631e3728d2f47a8203071ade">getEntryBlock</a>()) {
+<a name="l01042"></a>01042         <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a3d2e079387a6e69ce2c8bb27bf7c2f32">setRoot</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#aef34360e8bb4bdecf3fd6345ff504f81">getControlRoot</a>());
+<a name="l01043"></a>01043         <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2c224fcb5175ab1e842dd2a1371eb3d8">clear</a>();
+<a name="l01044"></a>01044         CodeGenAndEmitDAG();
+<a name="l01045"></a>01045 
+<a name="l01046"></a>01046         <span class="comment">// If we inserted any instructions at the beginning, make a note of</span>
+<a name="l01047"></a>01047         <span class="comment">// where they are, so we can be sure to emit subsequent instructions</span>
+<a name="l01048"></a>01048         <span class="comment">// after them.</span>
+<a name="l01049"></a>01049         <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a> != <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab2d91e7bec944efcbc39d8e30644f111">begin</a>())
+<a name="l01050"></a>01050           FastIS-><a class="code" href="classllvm_1_1FastISel.html#a0bfa1f986356fdcdcab1c98dcf9a84e5">setLastLocalValue</a>(<a class="code" href="namespacellvm.html#a7923e3e207de8bc1d0d6a5091316ddde">llvm::prior</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a>));
+<a name="l01051"></a>01051         <span class="keywordflow">else</span>
+<a name="l01052"></a>01052           FastIS-><a class="code" href="classllvm_1_1FastISel.html#a0bfa1f986356fdcdcab1c98dcf9a84e5">setLastLocalValue</a>(0);
+<a name="l01053"></a>01053       }
+<a name="l01054"></a>01054 
+<a name="l01055"></a>01055       <span class="keywordtype">unsigned</span> NumFastIselRemaining = std::distance(Begin, End);
+<a name="l01056"></a>01056       <span class="comment">// Do FastISel on as many instructions as possible.</span>
+<a name="l01057"></a>01057       <span class="keywordflow">for</span> (; BI != Begin; --BI) {
+<a name="l01058"></a>01058         <span class="keyword">const</span> <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *Inst = <a class="code" href="namespacellvm.html#a7923e3e207de8bc1d0d6a5091316ddde">llvm::prior</a>(BI);
+<a name="l01059"></a>01059 
+<a name="l01060"></a>01060         <span class="comment">// If we no longer require this instruction, skip it.</span>
+<a name="l01061"></a>01061         <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a9eb151f67a54574fa315413f25a5b53c">isFoldedOrDeadInstruction</a>(Inst, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>)) {
+<a name="l01062"></a>01062           --NumFastIselRemaining;
+<a name="l01063"></a>01063           <span class="keywordflow">continue</span>;
+<a name="l01064"></a>01064         }
+<a name="l01065"></a>01065 
+<a name="l01066"></a>01066         <span class="comment">// Bottom-up: reset the insert pos at the top, after any local-value</span>
+<a name="l01067"></a>01067         <span class="comment">// instructions.</span>
+<a name="l01068"></a>01068         FastIS-><a class="code" href="classllvm_1_1FastISel.html#acb5337d3078000bf9b580b28031136af">recomputeInsertPt</a>();
+<a name="l01069"></a>01069 
+<a name="l01070"></a>01070         <span class="comment">// Try to select the instruction with FastISel.</span>
+<a name="l01071"></a>01071         <span class="keywordflow">if</span> (FastIS-><a class="code" href="classllvm_1_1FastISel.html#a81099b1c657ff7348cc7d25130149f6b">SelectInstruction</a>(Inst)) {
+<a name="l01072"></a>01072           --NumFastIselRemaining;
+<a name="l01073"></a>01073           ++NumFastIselSuccess;
+<a name="l01074"></a>01074           <span class="comment">// If fast isel succeeded, skip over all the folded instructions, and</span>
+<a name="l01075"></a>01075           <span class="comment">// then see if there is a load right before the selected instructions.</span>
+<a name="l01076"></a>01076           <span class="comment">// Try to fold the load if so.</span>
+<a name="l01077"></a>01077           <span class="keyword">const</span> <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *BeforeInst = Inst;
+<a name="l01078"></a>01078           <span class="keywordflow">while</span> (BeforeInst != Begin) {
+<a name="l01079"></a>01079             BeforeInst = <a class="code" href="namespacellvm.html#a7923e3e207de8bc1d0d6a5091316ddde">llvm::prior</a>(<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::const_iterator</a>(BeforeInst));
+<a name="l01080"></a>01080             <span class="keywordflow">if</span> (!<a class="code" href="SelectionDAGISel_8cpp.html#a9eb151f67a54574fa315413f25a5b53c">isFoldedOrDeadInstruction</a>(BeforeInst, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>))
+<a name="l01081"></a>01081               <span class="keywordflow">break</span>;
+<a name="l01082"></a>01082           }
+<a name="l01083"></a>01083           <span class="keywordflow">if</span> (BeforeInst != Inst && isa<LoadInst>(BeforeInst) &&
+<a name="l01084"></a>01084               BeforeInst-><a class="code" href="classllvm_1_1Value.html#a085b82f074c28030fb8e194377ed2d0c">hasOneUse</a>() &&
+<a name="l01085"></a>01085               TryToFoldFastISelLoad(cast<LoadInst>(BeforeInst), Inst, FastIS)) {
+<a name="l01086"></a>01086             <span class="comment">// If we succeeded, don't re-select the load.</span>
+<a name="l01087"></a>01087             BI = <a class="code" href="namespacellvm.html#aa1704159f75e6eacd595962ea6d93ffe">llvm::next</a>(<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::const_iterator</a>(BeforeInst));
+<a name="l01088"></a>01088             --NumFastIselRemaining;
+<a name="l01089"></a>01089             ++NumFastIselSuccess;
+<a name="l01090"></a>01090           }
+<a name="l01091"></a>01091           <span class="keywordflow">continue</span>;
+<a name="l01092"></a>01092         }
+<a name="l01093"></a>01093 
+<a name="l01094"></a>01094 <span class="preprocessor">#ifndef NDEBUG</span>
+<a name="l01095"></a>01095 <span class="preprocessor"></span>        <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a086b60310efb455c4b210eeae130b974">EnableFastISelVerbose2</a>)
+<a name="l01096"></a>01096           <a class="code" href="SelectionDAGISel_8cpp.html#abc62c7ae4b5f73ce4a6e84dcc10682a3">collectFailStats</a>(Inst);
+<a name="l01097"></a>01097 <span class="preprocessor">#endif</span>
+<a name="l01098"></a>01098 <span class="preprocessor"></span>
+<a name="l01099"></a>01099         <span class="comment">// Then handle certain instructions as single-LLVM-Instruction blocks.</span>
+<a name="l01100"></a>01100         <span class="keywordflow">if</span> (isa<CallInst>(Inst)) {
+<a name="l01101"></a>01101 
+<a name="l01102"></a>01102           <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#ad64839db51b02e2d40ec293faabeeec2">EnableFastISelVerbose</a> || <a class="code" href="SelectionDAGISel_8cpp.html#a9d50504a9daa484cb9ffe06b0a4e8d0c">EnableFastISelAbort</a>) {
+<a name="l01103"></a>01103             <a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"FastISel missed call: "</span>;
+<a name="l01104"></a>01104             Inst-><a class="code" href="classllvm_1_1Value.html#a1933ce346f4cbadcc151cea432c2b316" title="dump - Support for debugging, callable in GDB: V->dump()">dump</a>();
+<a name="l01105"></a>01105           }
+<a name="l01106"></a>01106 
+<a name="l01107"></a>01107           <span class="keywordflow">if</span> (!Inst-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()-><a class="code" href="classllvm_1_1Type.html#af5c7041df3ad5edffe5da17b5264c1fc" title="isVoidTy - Return true if this is 'void'.">isVoidTy</a>() && !Inst-><a class="code" href="classllvm_1_1Value.html#ac38c53f76ef532f91f1666c8a87370e9">use_empty</a>()) {
+<a name="l01108"></a>01108             <span class="keywordtype">unsigned</span> &R = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a7465059e82380b0b0aa6f103ed28c8dc">ValueMap</a>[Inst];
+<a name="l01109"></a>01109             <span class="keywordflow">if</span> (!R)
+<a name="l01110"></a>01110               R = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a2d6bdc7bcc1f94fb003f83533c11819c">CreateRegs</a>(Inst-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l01111"></a>01111           }
+<a name="l01112"></a>01112 
+<a name="l01113"></a>01113           <span class="keywordtype">bool</span> HadTailCall = <span class="keyword">false</span>;
+<a name="l01114"></a>01114           SelectBasicBlock(Inst, BI, HadTailCall);
+<a name="l01115"></a>01115 
+<a name="l01116"></a>01116           <span class="comment">// Recompute NumFastIselRemaining as Selection DAG instruction</span>
+<a name="l01117"></a>01117           <span class="comment">// selection may have handled the call, input args, etc.</span>
+<a name="l01118"></a>01118           <span class="keywordtype">unsigned</span> RemainingNow = std::distance(Begin, BI);
+<a name="l01119"></a>01119           NumFastIselFailures += NumFastIselRemaining - RemainingNow;
+<a name="l01120"></a>01120 
+<a name="l01121"></a>01121           <span class="comment">// If the call was emitted as a tail call, we're done with the block.</span>
+<a name="l01122"></a>01122           <span class="keywordflow">if</span> (HadTailCall) {
+<a name="l01123"></a>01123             --BI;
+<a name="l01124"></a>01124             <span class="keywordflow">break</span>;
+<a name="l01125"></a>01125           }
+<a name="l01126"></a>01126 
+<a name="l01127"></a>01127           NumFastIselRemaining = RemainingNow;
+<a name="l01128"></a>01128           <span class="keywordflow">continue</span>;
+<a name="l01129"></a>01129         }
+<a name="l01130"></a>01130 
+<a name="l01131"></a>01131         <span class="keywordflow">if</span> (isa<TerminatorInst>(Inst) && !isa<BranchInst>(Inst)) {
+<a name="l01132"></a>01132           <span class="comment">// Don't abort, and use a different message for terminator misses.</span>
+<a name="l01133"></a>01133           NumFastIselFailures += NumFastIselRemaining;
+<a name="l01134"></a>01134           <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#ad64839db51b02e2d40ec293faabeeec2">EnableFastISelVerbose</a> || <a class="code" href="SelectionDAGISel_8cpp.html#a9d50504a9daa484cb9ffe06b0a4e8d0c">EnableFastISelAbort</a>) {
+<a name="l01135"></a>01135             <a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"FastISel missed terminator: "</span>;
+<a name="l01136"></a>01136             Inst-><a class="code" href="classllvm_1_1Value.html#a1933ce346f4cbadcc151cea432c2b316" title="dump - Support for debugging, callable in GDB: V->dump()">dump</a>();
+<a name="l01137"></a>01137           }
+<a name="l01138"></a>01138         } <span class="keywordflow">else</span> {
+<a name="l01139"></a>01139           NumFastIselFailures += NumFastIselRemaining;
+<a name="l01140"></a>01140           <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#ad64839db51b02e2d40ec293faabeeec2">EnableFastISelVerbose</a> || <a class="code" href="SelectionDAGISel_8cpp.html#a9d50504a9daa484cb9ffe06b0a4e8d0c">EnableFastISelAbort</a>) {
+<a name="l01141"></a>01141             <a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"FastISel miss: "</span>;
+<a name="l01142"></a>01142             Inst-><a class="code" href="classllvm_1_1Value.html#a1933ce346f4cbadcc151cea432c2b316" title="dump - Support for debugging, callable in GDB: V->dump()">dump</a>();
+<a name="l01143"></a>01143           }
+<a name="l01144"></a>01144           <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a9d50504a9daa484cb9ffe06b0a4e8d0c">EnableFastISelAbort</a>)
+<a name="l01145"></a>01145             <span class="comment">// The "fast" selector couldn't handle something and bailed.</span>
+<a name="l01146"></a>01146             <span class="comment">// For the purpose of debugging, just abort.</span>
+<a name="l01147"></a>01147             <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"FastISel didn't select the entire block"</span>);
+<a name="l01148"></a>01148         }
+<a name="l01149"></a>01149         <span class="keywordflow">break</span>;
+<a name="l01150"></a>01150       }
+<a name="l01151"></a>01151 
+<a name="l01152"></a>01152       FastIS-><a class="code" href="classllvm_1_1FastISel.html#acb5337d3078000bf9b580b28031136af">recomputeInsertPt</a>();
+<a name="l01153"></a>01153     }
+<a name="l01154"></a>01154 
+<a name="l01155"></a>01155     <span class="keywordflow">if</span> (Begin != BI)
+<a name="l01156"></a>01156       ++NumDAGBlocks;
+<a name="l01157"></a>01157     <span class="keywordflow">else</span>
+<a name="l01158"></a>01158       ++NumFastIselBlocks;
+<a name="l01159"></a>01159 
+<a name="l01160"></a>01160     <span class="keywordflow">if</span> (Begin != BI) {
+<a name="l01161"></a>01161       <span class="comment">// Run SelectionDAG instruction selection on the remainder of the block</span>
+<a name="l01162"></a>01162       <span class="comment">// not handled by FastISel. If FastISel is not run, this is the entire</span>
+<a name="l01163"></a>01163       <span class="comment">// block.</span>
+<a name="l01164"></a>01164       <span class="keywordtype">bool</span> HadTailCall;
+<a name="l01165"></a>01165       SelectBasicBlock(Begin, BI, HadTailCall);
+<a name="l01166"></a>01166     }
+<a name="l01167"></a>01167 
+<a name="l01168"></a>01168     FinishBasicBlock();
+<a name="l01169"></a>01169     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>.clear();
+<a name="l01170"></a>01170   }
+<a name="l01171"></a>01171 
+<a name="l01172"></a>01172   <span class="keyword">delete</span> FastIS;
+<a name="l01173"></a>01173   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a1b90604db120716e786d9d33babc3edd">clearDanglingDebugInfo</a>();
+<a name="l01174"></a>01174 }
+<a name="l01175"></a>01175 
+<a name="l01176"></a>01176 <span class="keywordtype">void</span>
+<a name="l01177"></a>01177 SelectionDAGISel::FinishBasicBlock() {
+<a name="l01178"></a>01178 
+<a name="l01179"></a>01179   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Total amount of phi nodes to update: "</span>
+<a name="l01180"></a>01180                << <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>.size() << <span class="stringliteral">"\n"</span>;
+<a name="l01181"></a>01181         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>.size(); i != e; ++i)
+<a name="l01182"></a>01182           <a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Node "</span> << i << <span class="stringliteral">" : ("</span>
+<a name="l01183"></a>01183                  << <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[i].first
+<a name="l01184"></a>01184                  << <span class="stringliteral">", "</span> << <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[i].second << <span class="stringliteral">")\n"</span>);
+<a name="l01185"></a>01185 
+<a name="l01186"></a>01186   <span class="comment">// Next, now that we know what the last MBB the LLVM BB expanded is, update</span>
+<a name="l01187"></a>01187   <span class="comment">// PHI nodes in successors.</span>
+<a name="l01188"></a>01188   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2399a2e82821e050e9a00c8ad33e2aae">SwitchCases</a>.empty() &&
+<a name="l01189"></a>01189       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a9e9f0e8bba0c07aa975df97765117fa5">JTCases</a>.empty() &&
+<a name="l01190"></a>01190       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>.empty()) {
+<a name="l01191"></a>01191     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>.size(); i != e; ++i) {
+<a name="l01192"></a>01192       <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[i].first;
+<a name="l01193"></a>01193       assert(PHI-><a class="code" href="classllvm_1_1MachineInstr.html#ad70025709baab4e42d5d9d83023bc402">isPHI</a>() &&
+<a name="l01194"></a>01194              <span class="stringliteral">"This is not a machine PHI node that we are updating!"</span>);
+<a name="l01195"></a>01195       <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a57f25804288bc580d7b2e4016a38aec9">isSuccessor</a>(PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>()))
+<a name="l01196"></a>01196         <span class="keywordflow">continue</span>;
+<a name="l01197"></a>01197       PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(
+<a name="l01198"></a>01198         <a class="code" href="classllvm_1_1MachineOperand.html#a18124eff2d5106b9bf041f948a1912cc">MachineOperand::CreateReg</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[i].second, <span class="keyword">false</span>));
+<a name="l01199"></a>01199       PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html#afff7622ffefd3560aafe2025d245d4c5">MachineOperand::CreateMBB</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>));
+<a name="l01200"></a>01200     }
+<a name="l01201"></a>01201     <span class="keywordflow">return</span>;
+<a name="l01202"></a>01202   }
+<a name="l01203"></a>01203 
+<a name="l01204"></a>01204   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>.size(); i != e; ++i) {
+<a name="l01205"></a>01205     <span class="comment">// Lower header first, if it wasn't already lowered</span>
+<a name="l01206"></a>01206     <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Emitted) {
+<a name="l01207"></a>01207       <span class="comment">// Set the current basic block to the mbb we wish to insert the code into</span>
+<a name="l01208"></a>01208       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Parent;
+<a name="l01209"></a>01209       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>();
+<a name="l01210"></a>01210       <span class="comment">// Emit the code</span>
+<a name="l01211"></a>01211       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#aa57e81be4daba055c7fa4a6fea96ce8d">visitBitTestHeader</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i], <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>);
+<a name="l01212"></a>01212       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a3d2e079387a6e69ce2c8bb27bf7c2f32">setRoot</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#aa3e946c1fc678a70e849244389bd929a">getRoot</a>());
+<a name="l01213"></a>01213       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2c224fcb5175ab1e842dd2a1371eb3d8">clear</a>();
+<a name="l01214"></a>01214       CodeGenAndEmitDAG();
+<a name="l01215"></a>01215     }
+<a name="l01216"></a>01216 
+<a name="l01217"></a>01217     uint32_t UnhandledWeight = 0;
+<a name="l01218"></a>01218     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0, ej = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Cases.size(); j != ej; ++j)
+<a name="l01219"></a>01219       UnhandledWeight += <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Cases[j].ExtraWeight;
+<a name="l01220"></a>01220 
+<a name="l01221"></a>01221     for (<span class="keywordtype">unsigned</span> j = 0, ej = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Cases.size(); j != ej; ++j) {
+<a name="l01222"></a>01222       UnhandledWeight -= <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Cases[j].ExtraWeight;
+<a name="l01223"></a>01223       <span class="comment">// Set the current basic block to the mbb we wish to insert the code into</span>
+<a name="l01224"></a>01224       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Cases[j].ThisBB;
+<a name="l01225"></a>01225       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>();
+<a name="l01226"></a>01226       <span class="comment">// Emit the code</span>
+<a name="l01227"></a>01227       <span class="keywordflow">if</span> (j+1 != ej)
+<a name="l01228"></a>01228         <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a318504e3fe7e4589c750f145a1f663f3" title="visitBitTestCase - this function produces one "bit test"">visitBitTestCase</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i],
+<a name="l01229"></a>01229                               <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Cases[j+1].ThisBB,
+<a name="l01230"></a>01230                               UnhandledWeight,
+<a name="l01231"></a>01231                               <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Reg,
+<a name="l01232"></a>01232                               <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Cases[j],
+<a name="l01233"></a>01233                               <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>);
+<a name="l01234"></a>01234       <span class="keywordflow">else</span>
+<a name="l01235"></a>01235         <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a318504e3fe7e4589c750f145a1f663f3" title="visitBitTestCase - this function produces one "bit test"">visitBitTestCase</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i],
+<a name="l01236"></a>01236                               <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Default,
+<a name="l01237"></a>01237                               UnhandledWeight,
+<a name="l01238"></a>01238                               <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Reg,
+<a name="l01239"></a>01239                               <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Cases[j],
+<a name="l01240"></a>01240                               <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>);
+<a name="l01241"></a>01241 
+<a name="l01242"></a>01242 
+<a name="l01243"></a>01243       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a3d2e079387a6e69ce2c8bb27bf7c2f32">setRoot</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#aa3e946c1fc678a70e849244389bd929a">getRoot</a>());
+<a name="l01244"></a>01244       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2c224fcb5175ab1e842dd2a1371eb3d8">clear</a>();
+<a name="l01245"></a>01245       CodeGenAndEmitDAG();
+<a name="l01246"></a>01246     }
+<a name="l01247"></a>01247 
+<a name="l01248"></a>01248     <span class="comment">// Update PHI Nodes</span>
+<a name="l01249"></a>01249     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> pi = 0, pe = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>.size();
+<a name="l01250"></a>01250          pi != pe; ++pi) {
+<a name="l01251"></a>01251       <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *PHI = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[pi].first;
+<a name="l01252"></a>01252       <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *PHIBB = PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>();
+<a name="l01253"></a>01253       assert(PHI-><a class="code" href="classllvm_1_1MachineInstr.html#ad70025709baab4e42d5d9d83023bc402">isPHI</a>() &&
+<a name="l01254"></a>01254              <span class="stringliteral">"This is not a machine PHI node that we are updating!"</span>);
+<a name="l01255"></a>01255       <span class="comment">// This is "default" BB. We have two jumps to it. From "header" BB and</span>
+<a name="l01256"></a>01256       <span class="comment">// from last "case" BB.</span>
+<a name="l01257"></a>01257       <span class="keywordflow">if</span> (PHIBB == <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Default) {
+<a name="l01258"></a>01258         PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a>::
+<a name="l01259"></a>01259                         CreateReg(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[pi].second,
+<a name="l01260"></a>01260                                   <span class="keyword">false</span>));
+<a name="l01261"></a>01261         PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html#afff7622ffefd3560aafe2025d245d4c5">MachineOperand::CreateMBB</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Parent));
+<a name="l01262"></a>01262         PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a>::
+<a name="l01263"></a>01263                         CreateReg(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[pi].second,
+<a name="l01264"></a>01264                                   <span class="keyword">false</span>));
+<a name="l01265"></a>01265         PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html#afff7622ffefd3560aafe2025d245d4c5">MachineOperand::CreateMBB</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Cases.
+<a name="l01266"></a>01266                                                   back().ThisBB));
+<a name="l01267"></a>01267       }
+<a name="l01268"></a>01268       <span class="comment">// One of "cases" BB.</span>
+<a name="l01269"></a>01269       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0, ej = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Cases.size();
+<a name="l01270"></a>01270            j != ej; ++j) {
+<a name="l01271"></a>01271         <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a>* cBB = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>[i].Cases[j].ThisBB;
+<a name="l01272"></a>01272         <span class="keywordflow">if</span> (cBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a57f25804288bc580d7b2e4016a38aec9">isSuccessor</a>(PHIBB)) {
+<a name="l01273"></a>01273           PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a>::
+<a name="l01274"></a>01274                           CreateReg(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[pi].second,
+<a name="l01275"></a>01275                                     <span class="keyword">false</span>));
+<a name="l01276"></a>01276           PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html#afff7622ffefd3560aafe2025d245d4c5">MachineOperand::CreateMBB</a>(cBB));
+<a name="l01277"></a>01277         }
+<a name="l01278"></a>01278       }
+<a name="l01279"></a>01279     }
+<a name="l01280"></a>01280   }
+<a name="l01281"></a>01281   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a344f912d5c4f1ec4fdceb14d61a62331">BitTestCases</a>.clear();
+<a name="l01282"></a>01282 
+<a name="l01283"></a>01283   <span class="comment">// If the JumpTable record is filled in, then we need to emit a jump table.</span>
+<a name="l01284"></a>01284   <span class="comment">// Updating the PHI nodes is tricky in this case, since we need to determine</span>
+<a name="l01285"></a>01285   <span class="comment">// whether the PHI is a successor of the range check MBB or the jump table MBB</span>
+<a name="l01286"></a>01286   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a9e9f0e8bba0c07aa975df97765117fa5">JTCases</a>.size(); i != e; ++i) {
+<a name="l01287"></a>01287     <span class="comment">// Lower header first, if it wasn't already lowered</span>
+<a name="l01288"></a>01288     <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a9e9f0e8bba0c07aa975df97765117fa5">JTCases</a>[i].first.Emitted) {
+<a name="l01289"></a>01289       <span class="comment">// Set the current basic block to the mbb we wish to insert the code into</span>
+<a name="l01290"></a>01290       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a9e9f0e8bba0c07aa975df97765117fa5">JTCases</a>[i].first.HeaderBB;
+<a name="l01291"></a>01291       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>();
+<a name="l01292"></a>01292       <span class="comment">// Emit the code</span>
+<a name="l01293"></a>01293       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#afe740b90e18adb6aa5f36a308c37398e">visitJumpTableHeader</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a9e9f0e8bba0c07aa975df97765117fa5">JTCases</a>[i].second, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a9e9f0e8bba0c07aa975df97765117fa5">JTCases</a>[i].first,
+<a name="l01294"></a>01294                                 <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>);
+<a name="l01295"></a>01295       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a3d2e079387a6e69ce2c8bb27bf7c2f32">setRoot</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#aa3e946c1fc678a70e849244389bd929a">getRoot</a>());
+<a name="l01296"></a>01296       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2c224fcb5175ab1e842dd2a1371eb3d8">clear</a>();
+<a name="l01297"></a>01297       CodeGenAndEmitDAG();
+<a name="l01298"></a>01298     }
+<a name="l01299"></a>01299 
+<a name="l01300"></a>01300     <span class="comment">// Set the current basic block to the mbb we wish to insert the code into</span>
+<a name="l01301"></a>01301     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a9e9f0e8bba0c07aa975df97765117fa5">JTCases</a>[i].second.MBB;
+<a name="l01302"></a>01302     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>();
+<a name="l01303"></a>01303     <span class="comment">// Emit the code</span>
+<a name="l01304"></a>01304     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a8b4ce7202ecace03bcfa27f8be506c81" title="visitJumpTable - Emit JumpTable node in the current MBB">visitJumpTable</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a9e9f0e8bba0c07aa975df97765117fa5">JTCases</a>[i].second);
+<a name="l01305"></a>01305     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a3d2e079387a6e69ce2c8bb27bf7c2f32">setRoot</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#aa3e946c1fc678a70e849244389bd929a">getRoot</a>());
+<a name="l01306"></a>01306     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2c224fcb5175ab1e842dd2a1371eb3d8">clear</a>();
+<a name="l01307"></a>01307     CodeGenAndEmitDAG();
+<a name="l01308"></a>01308 
+<a name="l01309"></a>01309     <span class="comment">// Update PHI Nodes</span>
+<a name="l01310"></a>01310     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> pi = 0, pe = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>.size();
+<a name="l01311"></a>01311          pi != pe; ++pi) {
+<a name="l01312"></a>01312       <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *PHI = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[pi].first;
+<a name="l01313"></a>01313       <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *PHIBB = PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>();
+<a name="l01314"></a>01314       assert(PHI-><a class="code" href="classllvm_1_1MachineInstr.html#ad70025709baab4e42d5d9d83023bc402">isPHI</a>() &&
+<a name="l01315"></a>01315              <span class="stringliteral">"This is not a machine PHI node that we are updating!"</span>);
+<a name="l01316"></a>01316       <span class="comment">// "default" BB. We can go there only from header BB.</span>
+<a name="l01317"></a>01317       <span class="keywordflow">if</span> (PHIBB == <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a9e9f0e8bba0c07aa975df97765117fa5">JTCases</a>[i].second.Default) {
+<a name="l01318"></a>01318         PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>
+<a name="l01319"></a>01319           (<a class="code" href="classllvm_1_1MachineOperand.html#a18124eff2d5106b9bf041f948a1912cc">MachineOperand::CreateReg</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[pi].second,
+<a name="l01320"></a>01320                                      <span class="keyword">false</span>));
+<a name="l01321"></a>01321         PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>
+<a name="l01322"></a>01322           (<a class="code" href="classllvm_1_1MachineOperand.html#afff7622ffefd3560aafe2025d245d4c5">MachineOperand::CreateMBB</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a9e9f0e8bba0c07aa975df97765117fa5">JTCases</a>[i].first.HeaderBB));
+<a name="l01323"></a>01323       }
+<a name="l01324"></a>01324       <span class="comment">// JT BB. Just iterate over successors here</span>
+<a name="l01325"></a>01325       <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a57f25804288bc580d7b2e4016a38aec9">isSuccessor</a>(PHIBB)) {
+<a name="l01326"></a>01326         PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>
+<a name="l01327"></a>01327           (<a class="code" href="classllvm_1_1MachineOperand.html#a18124eff2d5106b9bf041f948a1912cc">MachineOperand::CreateReg</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[pi].second,
+<a name="l01328"></a>01328                                      <span class="keyword">false</span>));
+<a name="l01329"></a>01329         PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html#afff7622ffefd3560aafe2025d245d4c5">MachineOperand::CreateMBB</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>));
+<a name="l01330"></a>01330       }
+<a name="l01331"></a>01331     }
+<a name="l01332"></a>01332   }
+<a name="l01333"></a>01333   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a9e9f0e8bba0c07aa975df97765117fa5">JTCases</a>.clear();
+<a name="l01334"></a>01334 
+<a name="l01335"></a>01335   <span class="comment">// If the switch block involved a branch to one of the actual successors, we</span>
+<a name="l01336"></a>01336   <span class="comment">// need to update PHI nodes in that block.</span>
+<a name="l01337"></a>01337   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>.size(); i != e; ++i) {
+<a name="l01338"></a>01338     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *PHI = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[i].first;
+<a name="l01339"></a>01339     assert(PHI-><a class="code" href="classllvm_1_1MachineInstr.html#ad70025709baab4e42d5d9d83023bc402">isPHI</a>() &&
+<a name="l01340"></a>01340            <span class="stringliteral">"This is not a machine PHI node that we are updating!"</span>);
+<a name="l01341"></a>01341     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a57f25804288bc580d7b2e4016a38aec9">isSuccessor</a>(PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>())) {
+<a name="l01342"></a>01342       PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(
+<a name="l01343"></a>01343         <a class="code" href="classllvm_1_1MachineOperand.html#a18124eff2d5106b9bf041f948a1912cc">MachineOperand::CreateReg</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[i].second, <span class="keyword">false</span>));
+<a name="l01344"></a>01344       PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html#afff7622ffefd3560aafe2025d245d4c5">MachineOperand::CreateMBB</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>));
+<a name="l01345"></a>01345     }
+<a name="l01346"></a>01346   }
+<a name="l01347"></a>01347 
+<a name="l01348"></a>01348   <span class="comment">// If we generated any switch lowering information, build and codegen any</span>
+<a name="l01349"></a>01349   <span class="comment">// additional DAGs necessary.</span>
+<a name="l01350"></a>01350   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2399a2e82821e050e9a00c8ad33e2aae">SwitchCases</a>.size(); i != e; ++i) {
+<a name="l01351"></a>01351     <span class="comment">// Set the current basic block to the mbb we wish to insert the code into</span>
+<a name="l01352"></a>01352     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2399a2e82821e050e9a00c8ad33e2aae">SwitchCases</a>[i].ThisBB;
+<a name="l01353"></a>01353     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>();
+<a name="l01354"></a>01354 
+<a name="l01355"></a>01355     <span class="comment">// Determine the unique successors.</span>
+<a name="l01356"></a>01356     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<MachineBasicBlock *, 2></a> Succs;
+<a name="l01357"></a>01357     Succs.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2399a2e82821e050e9a00c8ad33e2aae">SwitchCases</a>[i].TrueBB);
+<a name="l01358"></a>01358     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2399a2e82821e050e9a00c8ad33e2aae">SwitchCases</a>[i].TrueBB != <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2399a2e82821e050e9a00c8ad33e2aae">SwitchCases</a>[i].FalseBB)
+<a name="l01359"></a>01359       Succs.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2399a2e82821e050e9a00c8ad33e2aae">SwitchCases</a>[i].FalseBB);
+<a name="l01360"></a>01360 
+<a name="l01361"></a>01361     <span class="comment">// Emit the code. Note that this could result in FuncInfo->MBB being split.</span>
+<a name="l01362"></a>01362     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a23e7312cc9cf434846a35684ccd4b28d">visitSwitchCase</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2399a2e82821e050e9a00c8ad33e2aae">SwitchCases</a>[i], <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>);
+<a name="l01363"></a>01363     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a3d2e079387a6e69ce2c8bb27bf7c2f32">setRoot</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#aa3e946c1fc678a70e849244389bd929a">getRoot</a>());
+<a name="l01364"></a>01364     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2c224fcb5175ab1e842dd2a1371eb3d8">clear</a>();
+<a name="l01365"></a>01365     CodeGenAndEmitDAG();
+<a name="l01366"></a>01366 
+<a name="l01367"></a>01367     <span class="comment">// Remember the last block, now that any splitting is done, for use in</span>
+<a name="l01368"></a>01368     <span class="comment">// populating PHI nodes in successors.</span>
+<a name="l01369"></a>01369     <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *ThisBB = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>;
+<a name="l01370"></a>01370 
+<a name="l01371"></a>01371     <span class="comment">// Handle any PHI nodes in successors of this chunk, as if we were coming</span>
+<a name="l01372"></a>01372     <span class="comment">// from the original BB before switch expansion.  Note that PHI nodes can</span>
+<a name="l01373"></a>01373     <span class="comment">// occur multiple times in PHINodesToUpdate.  We have to be very careful to</span>
+<a name="l01374"></a>01374     <span class="comment">// handle them the right number of times.</span>
+<a name="l01375"></a>01375     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Succs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>(); i != e; ++i) {
+<a name="l01376"></a>01376       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a> = Succs[i];
+<a name="l01377"></a>01377       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a90b6dd55afe6936ce5854c71baadbf92" title="MBB - The current insert position inside the current block.">InsertPt</a> = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>();
+<a name="l01378"></a>01378       <span class="comment">// FuncInfo->MBB may have been removed from the CFG if a branch was</span>
+<a name="l01379"></a>01379       <span class="comment">// constant folded.</span>
+<a name="l01380"></a>01380       <span class="keywordflow">if</span> (ThisBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a57f25804288bc580d7b2e4016a38aec9">isSuccessor</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>)) {
+<a name="l01381"></a>01381         <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> Phi = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab2d91e7bec944efcbc39d8e30644f111">begin</a>();
+<a name="l01382"></a>01382              Phi != <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a9893077f1825192ca0f3d173afefb573" title="MBB - The current block.">MBB</a>-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>() && Phi->isPHI();
+<a name="l01383"></a>01383              ++Phi) {
+<a name="l01384"></a>01384           <span class="comment">// This value for this PHI node is recorded in PHINodesToUpdate.</span>
+<a name="l01385"></a>01385           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> pn = 0; ; ++pn) {
+<a name="l01386"></a>01386             assert(pn != <a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>.size() &&
+<a name="l01387"></a>01387                    <span class="stringliteral">"Didn't find PHI entry!"</span>);
+<a name="l01388"></a>01388             <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[pn].first == Phi) {
+<a name="l01389"></a>01389               Phi->addOperand(<a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a>::
+<a name="l01390"></a>01390                               CreateReg(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a67db3969c1e61b8d020a3817d1f755cb">FuncInfo</a>-><a class="code" href="classllvm_1_1FunctionLoweringInfo.html#a99d5184cf5e487012782adccecbc2dd6">PHINodesToUpdate</a>[pn].second,
+<a name="l01391"></a>01391                                         <span class="keyword">false</span>));
+<a name="l01392"></a>01392               Phi->addOperand(<a class="code" href="classllvm_1_1MachineOperand.html#afff7622ffefd3560aafe2025d245d4c5">MachineOperand::CreateMBB</a>(ThisBB));
+<a name="l01393"></a>01393               <span class="keywordflow">break</span>;
+<a name="l01394"></a>01394             }
+<a name="l01395"></a>01395           }
+<a name="l01396"></a>01396         }
+<a name="l01397"></a>01397       }
+<a name="l01398"></a>01398     }
+<a name="l01399"></a>01399   }
+<a name="l01400"></a>01400   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a312f923b3a36e342969c005f7779f761">SDB</a>-><a class="code" href="classllvm_1_1SelectionDAGBuilder.html#a2399a2e82821e050e9a00c8ad33e2aae">SwitchCases</a>.clear();
+<a name="l01401"></a>01401 }
+<a name="l01402"></a>01402 
+<a name="l01403"></a>01403 <span class="comment"></span>
+<a name="l01404"></a>01404 <span class="comment">/// Create the scheduler. If a specific scheduler was specified</span>
+<a name="l01405"></a>01405 <span class="comment">/// via the SchedulerRegistry, use it, otherwise select the</span>
+<a name="l01406"></a>01406 <span class="comment">/// one preferred by the target.</span>
+<a name="l01407"></a>01407 <span class="comment">///</span>
+<a name="l01408"></a>01408 <span class="comment"></span><a class="code" href="classllvm_1_1ScheduleDAGSDNodes.html">ScheduleDAGSDNodes</a> *SelectionDAGISel::CreateScheduler() {
+<a name="l01409"></a>01409   <a class="code" href="classllvm_1_1RegisterScheduler.html#a360361b84089ef7c4103152b3c02a40e">RegisterScheduler::FunctionPassCtor</a> Ctor = <a class="code" href="classllvm_1_1RegisterScheduler.html#ac22e4155a7381e68c1180117fea35c75">RegisterScheduler::getDefault</a>();
+<a name="l01410"></a>01410 
+<a name="l01411"></a>01411   <span class="keywordflow">if</span> (!Ctor) {
+<a name="l01412"></a>01412     Ctor = <a class="code" href="SelectionDAGISel_8cpp.html#afabfb264c515ec09675c6a53ecf95785">ISHeuristic</a>;
+<a name="l01413"></a>01413     <a class="code" href="classllvm_1_1RegisterScheduler.html#a40bdb2b1f28b916e0fdcd93453fdfd73">RegisterScheduler::setDefault</a>(Ctor);
+<a name="l01414"></a>01414   }
+<a name="l01415"></a>01415 
+<a name="l01416"></a>01416   <span class="keywordflow">return</span> Ctor(<span class="keyword">this</span>, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a1a7c2a3380a9f770ba082a070c592df6">OptLevel</a>);
+<a name="l01417"></a>01417 }
+<a name="l01418"></a>01418 
+<a name="l01419"></a>01419 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l01420"></a>01420 <span class="comment">// Helper functions used by the generated instruction selector.</span>
+<a name="l01421"></a>01421 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l01422"></a>01422 <span class="comment">// Calls to these methods are generated by tblgen.</span>
+<a name="l01423"></a>01423 <span class="comment"></span>
+<a name="l01424"></a>01424 <span class="comment">/// CheckAndMask - The isel is trying to match something like (and X, 255).  If</span>
+<a name="l01425"></a>01425 <span class="comment">/// the dag combiner simplified the 255, we still want to match.  RHS is the</span>
+<a name="l01426"></a>01426 <span class="comment">/// actual value in the DAG on the RHS of an AND, and DesiredMaskS is the value</span>
+<a name="l01427"></a>01427 <span class="comment">/// specified in the .td file (e.g. 255).</span>
+<a name="l01428"></a><a class="code" href="classllvm_1_1SelectionDAGISel.html#ad51b12121dcca6c724763203d1132498">01428</a> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad51b12121dcca6c724763203d1132498">SelectionDAGISel::CheckAndMask</a>(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a> LHS, <a class="code" href="classllvm_1_1ConstantSDNode.html">ConstantSDNode</a> *RHS,
+<a name="l01429"></a>01429                                     <a class="code" href="classint64__t.html">int64_t</a> DesiredMaskS)<span class="keyword"> const </span>{
+<a name="l01430"></a>01430   <span class="keyword">const</span> <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a> &ActualMask = RHS-><a class="code" href="classllvm_1_1ConstantSDNode.html#a7951626d3fc3c89c4efee59ed9c3d8bf">getAPIntValue</a>();
+<a name="l01431"></a>01431   <span class="keyword">const</span> <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a> &DesiredMask = <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a>(LHS.<a class="code" href="classllvm_1_1SDValue.html#a70aa652293da070dfe5b9fae309d0112">getValueSizeInBits</a>(), DesiredMaskS);
+<a name="l01432"></a>01432 
+<a name="l01433"></a>01433   <span class="comment">// If the actual mask exactly matches, success!</span>
+<a name="l01434"></a>01434   <span class="keywordflow">if</span> (ActualMask == DesiredMask)
+<a name="l01435"></a>01435     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01436"></a>01436 
+<a name="l01437"></a>01437   <span class="comment">// If the actual AND mask is allowing unallowed bits, this doesn't match.</span>
+<a name="l01438"></a>01438   <span class="keywordflow">if</span> (ActualMask.<a class="code" href="classllvm_1_1APInt.html#ab632770908427bb412c81505b13feada">intersects</a>(~DesiredMask))
+<a name="l01439"></a>01439     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01440"></a>01440 
+<a name="l01441"></a>01441   <span class="comment">// Otherwise, the DAG Combiner may have proven that the value coming in is</span>
+<a name="l01442"></a>01442   <span class="comment">// either already zero or is not demanded.  Check for known zero input bits.</span>
+<a name="l01443"></a>01443   <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a> NeededMask = DesiredMask & ~ActualMask;
+<a name="l01444"></a>01444   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#af99f246db9e144fefd7a73b54ef0bbf7">MaskedValueIsZero</a>(LHS, NeededMask))
+<a name="l01445"></a>01445     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01446"></a>01446 
+<a name="l01447"></a>01447   <span class="comment">// TODO: check to see if missing bits are just not demanded.</span>
+<a name="l01448"></a>01448 
+<a name="l01449"></a>01449   <span class="comment">// Otherwise, this pattern doesn't match.</span>
+<a name="l01450"></a>01450   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01451"></a>01451 }
+<a name="l01452"></a>01452 <span class="comment"></span>
+<a name="l01453"></a>01453 <span class="comment">/// CheckOrMask - The isel is trying to match something like (or X, 255).  If</span>
+<a name="l01454"></a>01454 <span class="comment">/// the dag combiner simplified the 255, we still want to match.  RHS is the</span>
+<a name="l01455"></a>01455 <span class="comment">/// actual value in the DAG on the RHS of an OR, and DesiredMaskS is the value</span>
+<a name="l01456"></a>01456 <span class="comment">/// specified in the .td file (e.g. 255).</span>
+<a name="l01457"></a><a class="code" href="classllvm_1_1SelectionDAGISel.html#a34ef61e9e1f8ff4fa700ad52648e19cf">01457</a> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a34ef61e9e1f8ff4fa700ad52648e19cf">SelectionDAGISel::CheckOrMask</a>(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a> LHS, <a class="code" href="classllvm_1_1ConstantSDNode.html">ConstantSDNode</a> *RHS,
+<a name="l01458"></a>01458                                    <a class="code" href="classint64__t.html">int64_t</a> DesiredMaskS)<span class="keyword"> const </span>{
+<a name="l01459"></a>01459   <span class="keyword">const</span> <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a> &ActualMask = RHS-><a class="code" href="classllvm_1_1ConstantSDNode.html#a7951626d3fc3c89c4efee59ed9c3d8bf">getAPIntValue</a>();
+<a name="l01460"></a>01460   <span class="keyword">const</span> <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a> &DesiredMask = <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a>(LHS.<a class="code" href="classllvm_1_1SDValue.html#a70aa652293da070dfe5b9fae309d0112">getValueSizeInBits</a>(), DesiredMaskS);
+<a name="l01461"></a>01461 
+<a name="l01462"></a>01462   <span class="comment">// If the actual mask exactly matches, success!</span>
+<a name="l01463"></a>01463   <span class="keywordflow">if</span> (ActualMask == DesiredMask)
+<a name="l01464"></a>01464     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01465"></a>01465 
+<a name="l01466"></a>01466   <span class="comment">// If the actual AND mask is allowing unallowed bits, this doesn't match.</span>
+<a name="l01467"></a>01467   <span class="keywordflow">if</span> (ActualMask.<a class="code" href="classllvm_1_1APInt.html#ab632770908427bb412c81505b13feada">intersects</a>(~DesiredMask))
+<a name="l01468"></a>01468     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01469"></a>01469 
+<a name="l01470"></a>01470   <span class="comment">// Otherwise, the DAG Combiner may have proven that the value coming in is</span>
+<a name="l01471"></a>01471   <span class="comment">// either already zero or is not demanded.  Check for known zero input bits.</span>
+<a name="l01472"></a>01472   <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a> NeededMask = DesiredMask & ~ActualMask;
+<a name="l01473"></a>01473 
+<a name="l01474"></a>01474   <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a> KnownZero, KnownOne;
+<a name="l01475"></a>01475   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ad06ca140783fd9f03eed498e8485fc3d">ComputeMaskedBits</a>(LHS, KnownZero, KnownOne);
+<a name="l01476"></a>01476 
+<a name="l01477"></a>01477   <span class="comment">// If all the missing bits in the or are already known to be set, match!</span>
+<a name="l01478"></a>01478   <span class="keywordflow">if</span> ((NeededMask & KnownOne) == NeededMask)
+<a name="l01479"></a>01479     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01480"></a>01480 
+<a name="l01481"></a>01481   <span class="comment">// TODO: check to see if missing bits are just not demanded.</span>
+<a name="l01482"></a>01482 
+<a name="l01483"></a>01483   <span class="comment">// Otherwise, this pattern doesn't match.</span>
+<a name="l01484"></a>01484   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01485"></a>01485 }
+<a name="l01486"></a>01486 
+<a name="l01487"></a>01487 <span class="comment"></span>
+<a name="l01488"></a>01488 <span class="comment">/// SelectInlineAsmMemoryOperands - Calls to this are automatically generated</span>
+<a name="l01489"></a>01489 <span class="comment">/// by tblgen.  Others should not call it.</span>
+<a name="l01490"></a>01490 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a93c0fc0673147d4ecb1e4731f9cce4ad">SelectionDAGISel::</a>
+<a name="l01491"></a><a class="code" href="classllvm_1_1SelectionDAGISel.html#a93c0fc0673147d4ecb1e4731f9cce4ad">01491</a> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a93c0fc0673147d4ecb1e4731f9cce4ad">SelectInlineAsmMemoryOperands</a>(std::vector<SDValue> &Ops) {
+<a name="l01492"></a>01492   std::vector<SDValue> InOps;
+<a name="l01493"></a>01493   <a class="code" href="namespacellvm.html#a39bdaf6372ed2ef16d951fc0f6d54dd4">std::swap</a>(InOps, Ops);
+<a name="l01494"></a>01494 
+<a name="l01495"></a>01495   Ops.push_back(InOps[<a class="code" href="classllvm_1_1InlineAsm.html#a25464ee25a64b02cb48356ca2284dab5a561c23f9fc6d8fe79f70cebf74937b30">InlineAsm::Op_InputChain</a>]); <span class="comment">// 0</span>
+<a name="l01496"></a>01496   Ops.push_back(InOps[<a class="code" href="classllvm_1_1InlineAsm.html#a25464ee25a64b02cb48356ca2284dab5a697a92728413dc065842407e006b87fe">InlineAsm::Op_AsmString</a>]);  <span class="comment">// 1</span>
+<a name="l01497"></a>01497   Ops.push_back(InOps[<a class="code" href="classllvm_1_1InlineAsm.html#a25464ee25a64b02cb48356ca2284dab5aa7de3aedc6eaa004e9c6523f21fa4a53">InlineAsm::Op_MDNode</a>]);     <span class="comment">// 2, !srcloc</span>
+<a name="l01498"></a>01498   Ops.push_back(InOps[<a class="code" href="classllvm_1_1InlineAsm.html#a25464ee25a64b02cb48356ca2284dab5a5c9183275c4ec573ab0f9ecc202ed26e">InlineAsm::Op_ExtraInfo</a>]);  <span class="comment">// 3 (SideEffect, AlignStack)</span>
+<a name="l01499"></a>01499 
+<a name="l01500"></a>01500   <span class="keywordtype">unsigned</span> i = <a class="code" href="classllvm_1_1InlineAsm.html#a25464ee25a64b02cb48356ca2284dab5afed51603ce2d64ec9af92ff0154913ca">InlineAsm::Op_FirstOperand</a>, e = InOps.size();
+<a name="l01501"></a>01501   <span class="keywordflow">if</span> (InOps[e-1].getValueType() == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a>)
+<a name="l01502"></a>01502     --e;  <span class="comment">// Don't process a glue operand if it is here.</span>
+<a name="l01503"></a>01503 
+<a name="l01504"></a>01504   <span class="keywordflow">while</span> (i != e) {
+<a name="l01505"></a>01505     <span class="keywordtype">unsigned</span> Flags = cast<ConstantSDNode>(InOps[i])->getZExtValue();
+<a name="l01506"></a>01506     <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1InlineAsm.html#a20a6d489de78da41c6032c7651f405a6">InlineAsm::isMemKind</a>(Flags)) {
+<a name="l01507"></a>01507       <span class="comment">// Just skip over this operand, copying the operands verbatim.</span>
+<a name="l01508"></a>01508       Ops.insert(Ops.end(), InOps.begin()+i,
+<a name="l01509"></a>01509                  InOps.begin()+i+<a class="code" href="classllvm_1_1InlineAsm.html#a4437506c56127755bed59ee1b30e95b9">InlineAsm::getNumOperandRegisters</a>(Flags) + 1);
+<a name="l01510"></a>01510       i += <a class="code" href="classllvm_1_1InlineAsm.html#a4437506c56127755bed59ee1b30e95b9">InlineAsm::getNumOperandRegisters</a>(Flags) + 1;
+<a name="l01511"></a>01511     } <span class="keywordflow">else</span> {
+<a name="l01512"></a>01512       assert(<a class="code" href="classllvm_1_1InlineAsm.html#a4437506c56127755bed59ee1b30e95b9">InlineAsm::getNumOperandRegisters</a>(Flags) == 1 &&
+<a name="l01513"></a>01513              <span class="stringliteral">"Memory operand with multiple values?"</span>);
+<a name="l01514"></a>01514       <span class="comment">// Otherwise, this is a memory operand.  Ask the target to select it.</span>
+<a name="l01515"></a>01515       std::vector<SDValue> SelOps;
+<a name="l01516"></a>01516       <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#ab063178098b4d0bc5a50a94195c28590">SelectInlineAsmMemoryOperand</a>(InOps[i+1], <span class="charliteral">'m'</span>, SelOps))
+<a name="l01517"></a>01517         <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(<span class="stringliteral">"Could not match memory address.  Inline asm"</span>
+<a name="l01518"></a>01518                            <span class="stringliteral">" failure!"</span>);
+<a name="l01519"></a>01519 
+<a name="l01520"></a>01520       <span class="comment">// Add this to the output node.</span>
+<a name="l01521"></a>01521       <span class="keywordtype">unsigned</span> NewFlags =
+<a name="l01522"></a>01522         <a class="code" href="classllvm_1_1InlineAsm.html#a14fae851fdfe0477b8017dfde555e083">InlineAsm::getFlagWord</a>(<a class="code" href="classllvm_1_1InlineAsm.html#a25464ee25a64b02cb48356ca2284dab5ab0e1673a8cfccd30c66a4beaf1dd6368">InlineAsm::Kind_Mem</a>, SelOps.size());
+<a name="l01523"></a>01523       Ops.push_back(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ace5bddfde14abf966790e8438e88d6d2">getTargetConstant</a>(NewFlags, <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">MVT::i32</a>));
+<a name="l01524"></a>01524       Ops.insert(Ops.end(), SelOps.begin(), SelOps.end());
+<a name="l01525"></a>01525       i += 2;
+<a name="l01526"></a>01526     }
+<a name="l01527"></a>01527   }
+<a name="l01528"></a>01528 
+<a name="l01529"></a>01529   <span class="comment">// Add the glue input back if present.</span>
+<a name="l01530"></a>01530   <span class="keywordflow">if</span> (e != InOps.size())
+<a name="l01531"></a>01531     Ops.push_back(InOps.back());
+<a name="l01532"></a>01532 }
+<a name="l01533"></a>01533 <span class="comment"></span>
+<a name="l01534"></a>01534 <span class="comment">/// findGlueUse - Return use of MVT::Glue value produced by the specified</span>
+<a name="l01535"></a>01535 <span class="comment">/// SDNode.</span>
+<a name="l01536"></a>01536 <span class="comment">///</span>
+<a name="l01537"></a><a class="code" href="SelectionDAGISel_8cpp.html#ad2b055f61a61a64d892bdae575ca6209">01537</a> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *<a class="code" href="SelectionDAGISel_8cpp.html#ad2b055f61a61a64d892bdae575ca6209">findGlueUse</a>(<a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *N) {
+<a name="l01538"></a>01538   <span class="keywordtype">unsigned</span> FlagResNo = N-><a class="code" href="classllvm_1_1SDNode.html#ab319fc51db27ec95fd50a910c7ccec94">getNumValues</a>()-1;
+<a name="l01539"></a>01539   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SDNode_1_1use__iterator.html">SDNode::use_iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = N-><a class="code" href="classllvm_1_1SDNode.html#a8810bf428dcf84d48f39c8f5ba9a8c94">use_begin</a>(), E = N-><a class="code" href="classllvm_1_1SDNode.html#aef02f2c1bd12936a80611b134b24a47d">use_end</a>(); <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l01540"></a>01540     <a class="code" href="classllvm_1_1SDUse.html">SDUse</a> &<a class="code" href="classllvm_1_1Use.html">Use</a> = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>.getUse();
+<a name="l01541"></a>01541     <span class="keywordflow">if</span> (Use.<a class="code" href="classllvm_1_1SDUse.html#a837a4522010445da3f5161dcd2b95880" title="getResNo - Convenience function for get().getResNo().">getResNo</a>() == FlagResNo)
+<a name="l01542"></a>01542       <span class="keywordflow">return</span> Use.<a class="code" href="classllvm_1_1SDUse.html#a469c58f8a39344294563f11514c352de" title="getUser - This returns the SDNode that contains this Use.">getUser</a>();
+<a name="l01543"></a>01543   }
+<a name="l01544"></a>01544   <span class="keywordflow">return</span> NULL;
+<a name="l01545"></a>01545 }
+<a name="l01546"></a>01546 <span class="comment"></span>
+<a name="l01547"></a>01547 <span class="comment">/// findNonImmUse - Return true if "Use" is a non-immediate use of "Def".</span>
+<a name="l01548"></a>01548 <span class="comment">/// This function recursively traverses up the operand chain, ignoring</span>
+<a name="l01549"></a>01549 <span class="comment">/// certain nodes.</span>
+<a name="l01550"></a><a class="code" href="SelectionDAGISel_8cpp.html#a3834318b09ff2507fd007a27e734d8d6">01550</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SelectionDAGISel_8cpp.html#a3834318b09ff2507fd007a27e734d8d6">findNonImmUse</a>(<a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *<a class="code" href="classllvm_1_1Use.html">Use</a>, <a class="code" href="classllvm_1_1SDNode.html">SDNode</a>* <a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5aceb138f68fe183995736614928e3394a">Def</a>, <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *ImmedUse,
+<a name="l01551"></a>01551                           <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *Root, <a class="code" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet<SDNode*, 16></a> &Visited,
+<a name="l01552"></a>01552                           <span class="keywordtype">bool</span> IgnoreChains) {
+<a name="l01553"></a>01553   <span class="comment">// The NodeID's are given uniques ID's where a node ID is guaranteed to be</span>
+<a name="l01554"></a>01554   <span class="comment">// greater than all of its (recursive) operands.  If we scan to a point where</span>
+<a name="l01555"></a>01555   <span class="comment">// 'use' is smaller than the node we're scanning for, then we know we will</span>
+<a name="l01556"></a>01556   <span class="comment">// never find it.</span>
+<a name="l01557"></a>01557   <span class="comment">//</span>
+<a name="l01558"></a>01558   <span class="comment">// The Use may be -1 (unassigned) if it is a newly allocated node.  This can</span>
+<a name="l01559"></a>01559   <span class="comment">// happen because we scan down to newly selected nodes in the case of glue</span>
+<a name="l01560"></a>01560   <span class="comment">// uses.</span>
+<a name="l01561"></a>01561   <span class="keywordflow">if</span> ((Use-><a class="code" href="classllvm_1_1SDNode.html#a7869db2aca4044d21da972bed855b0d0">getNodeId</a>() < Def-><a class="code" href="classllvm_1_1SDNode.html#a7869db2aca4044d21da972bed855b0d0">getNodeId</a>() && Use-><a class="code" href="classllvm_1_1SDNode.html#a7869db2aca4044d21da972bed855b0d0">getNodeId</a>() != -1))
+<a name="l01562"></a>01562     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01563"></a>01563 
+<a name="l01564"></a>01564   <span class="comment">// Don't revisit nodes if we already scanned it and didn't fail, we know we</span>
+<a name="l01565"></a>01565   <span class="comment">// won't fail if we scan it again.</span>
+<a name="l01566"></a>01566   <span class="keywordflow">if</span> (!Visited.<a class="code" href="classllvm_1_1SmallPtrSet.html#a9b6dd0fc7a648a939e571246045b673e">insert</a>(Use))
+<a name="l01567"></a>01567     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01568"></a>01568 
+<a name="l01569"></a>01569   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Use-><a class="code" href="classllvm_1_1SDNode.html#abc5c2f1d47a517373030133c6a102106">getNumOperands</a>(); i != e; ++i) {
+<a name="l01570"></a>01570     <span class="comment">// Ignore chain uses, they are validated by HandleMergeInputChains.</span>
+<a name="l01571"></a>01571     <span class="keywordflow">if</span> (Use-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(i).<a class="code" href="classllvm_1_1SDValue.html#a7d2ad4aa4277eb4e1138ff9791c8fbb7">getValueType</a>() == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a> && IgnoreChains)
+<a name="l01572"></a>01572       <span class="keywordflow">continue</span>;
+<a name="l01573"></a>01573 
+<a name="l01574"></a>01574     <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *N = Use-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(i).<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>();
+<a name="l01575"></a>01575     <span class="keywordflow">if</span> (N == Def) {
+<a name="l01576"></a>01576       <span class="keywordflow">if</span> (Use == ImmedUse || Use == Root)
+<a name="l01577"></a>01577         <span class="keywordflow">continue</span>;  <span class="comment">// We are not looking for immediate use.</span>
+<a name="l01578"></a>01578       assert(N != Root);
+<a name="l01579"></a>01579       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01580"></a>01580     }
+<a name="l01581"></a>01581 
+<a name="l01582"></a>01582     <span class="comment">// Traverse up the operand chain.</span>
+<a name="l01583"></a>01583     <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#a3834318b09ff2507fd007a27e734d8d6">findNonImmUse</a>(N, Def, ImmedUse, Root, Visited, IgnoreChains))
+<a name="l01584"></a>01584       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01585"></a>01585   }
+<a name="l01586"></a>01586   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01587"></a>01587 }
+<a name="l01588"></a>01588 <span class="comment"></span>
+<a name="l01589"></a>01589 <span class="comment">/// IsProfitableToFold - Returns true if it's profitable to fold the specific</span>
+<a name="l01590"></a>01590 <span class="comment">/// operand node N of U during instruction selection that starts at Root.</span>
+<a name="l01591"></a><a class="code" href="classllvm_1_1SelectionDAGISel.html#a7c45584212fcb230d5bcee0754b3ce64">01591</a> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a7c45584212fcb230d5bcee0754b3ce64">SelectionDAGISel::IsProfitableToFold</a>(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N, <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *U,
+<a name="l01592"></a>01592                                           <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *Root)<span class="keyword"> const </span>{
+<a name="l01593"></a>01593   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a1a7c2a3380a9f770ba082a070c592df6">OptLevel</a> == <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4a451bbac85aff02d070be3c17a6bef928">CodeGenOpt::None</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01594"></a>01594   <span class="keywordflow">return</span> N.<a class="code" href="classllvm_1_1SDValue.html#a97b0f24f3e52f030830fca6fbfcbd37d">hasOneUse</a>();
+<a name="l01595"></a>01595 }
+<a name="l01596"></a>01596 <span class="comment"></span>
+<a name="l01597"></a>01597 <span class="comment">/// IsLegalToFold - Returns true if the specific operand node N of</span>
+<a name="l01598"></a>01598 <span class="comment">/// U can be folded during instruction selection that starts at Root.</span>
+<a name="l01599"></a><a class="code" href="classllvm_1_1SelectionDAGISel.html#afde899bbadc9622ad6108694d44d7f36">01599</a> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#afde899bbadc9622ad6108694d44d7f36">SelectionDAGISel::IsLegalToFold</a>(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N, <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *U, <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *Root,
+<a name="l01600"></a>01600                                      <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4">CodeGenOpt::Level</a> OptLevel,
+<a name="l01601"></a>01601                                      <span class="keywordtype">bool</span> IgnoreChains) {
+<a name="l01602"></a>01602   <span class="keywordflow">if</span> (OptLevel == <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4a451bbac85aff02d070be3c17a6bef928">CodeGenOpt::None</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01603"></a>01603 
+<a name="l01604"></a>01604   <span class="comment">// If Root use can somehow reach N through a path that that doesn't contain</span>
+<a name="l01605"></a>01605   <span class="comment">// U then folding N would create a cycle. e.g. In the following</span>
+<a name="l01606"></a>01606   <span class="comment">// diagram, Root can reach N through X. If N is folded into into Root, then</span>
+<a name="l01607"></a>01607   <span class="comment">// X is both a predecessor and a successor of U.</span>
+<a name="l01608"></a>01608   <span class="comment">//</span>
+<a name="l01609"></a>01609   <span class="comment">//          [N*]           //</span>
+<a name="l01610"></a>01610   <span class="comment">//         ^   ^           //</span>
+<a name="l01611"></a>01611   <span class="comment">//        /     \          //</span>
+<a name="l01612"></a>01612   <span class="comment">//      [U*]    [X]?       //</span>
+<a name="l01613"></a>01613   <span class="comment">//        ^     ^          //</span>
+<a name="l01614"></a>01614   <span class="comment">//         \   /           //</span>
+<a name="l01615"></a>01615   <span class="comment">//          \ /            //</span>
+<a name="l01616"></a>01616   <span class="comment">//         [Root*]         //</span>
+<a name="l01617"></a>01617   <span class="comment">//</span>
+<a name="l01618"></a>01618   <span class="comment">// * indicates nodes to be folded together.</span>
+<a name="l01619"></a>01619   <span class="comment">//</span>
+<a name="l01620"></a>01620   <span class="comment">// If Root produces glue, then it gets (even more) interesting. Since it</span>
+<a name="l01621"></a>01621   <span class="comment">// will be "glued" together with its glue use in the scheduler, we need to</span>
+<a name="l01622"></a>01622   <span class="comment">// check if it might reach N.</span>
+<a name="l01623"></a>01623   <span class="comment">//</span>
+<a name="l01624"></a>01624   <span class="comment">//          [N*]           //</span>
+<a name="l01625"></a>01625   <span class="comment">//         ^   ^           //</span>
+<a name="l01626"></a>01626   <span class="comment">//        /     \          //</span>
+<a name="l01627"></a>01627   <span class="comment">//      [U*]    [X]?       //</span>
+<a name="l01628"></a>01628   <span class="comment">//        ^       ^        //</span>
+<a name="l01629"></a>01629   <span class="comment">//         \       \       //</span>
+<a name="l01630"></a>01630   <span class="comment">//          \      |       //</span>
+<a name="l01631"></a>01631   <span class="comment">//         [Root*] |       //</span>
+<a name="l01632"></a>01632   <span class="comment">//          ^      |       //</span>
+<a name="l01633"></a>01633   <span class="comment">//          f      |       //</span>
+<a name="l01634"></a>01634   <span class="comment">//          |      /       //</span>
+<a name="l01635"></a>01635   <span class="comment">//         [Y]    /        //</span>
+<a name="l01636"></a>01636   <span class="comment">//           ^   /         //</span>
+<a name="l01637"></a>01637   <span class="comment">//           f  /          //</span>
+<a name="l01638"></a>01638   <span class="comment">//           | /           //</span>
+<a name="l01639"></a>01639   <span class="comment">//          [GU]           //</span>
+<a name="l01640"></a>01640   <span class="comment">//</span>
+<a name="l01641"></a>01641   <span class="comment">// If GU (glue use) indirectly reaches N (the load), and Root folds N</span>
+<a name="l01642"></a>01642   <span class="comment">// (call it Fold), then X is a predecessor of GU and a successor of</span>
+<a name="l01643"></a>01643   <span class="comment">// Fold. But since Fold and GU are glued together, this will create</span>
+<a name="l01644"></a>01644   <span class="comment">// a cycle in the scheduling graph.</span>
+<a name="l01645"></a>01645 
+<a name="l01646"></a>01646   <span class="comment">// If the node has glue, walk down the graph to the "lowest" node in the</span>
+<a name="l01647"></a>01647   <span class="comment">// glueged set.</span>
+<a name="l01648"></a>01648   <a class="code" href="structllvm_1_1EVT.html">EVT</a> VT = Root-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(Root-><a class="code" href="classllvm_1_1SDNode.html#ab319fc51db27ec95fd50a910c7ccec94">getNumValues</a>()-1);
+<a name="l01649"></a>01649   <span class="keywordflow">while</span> (VT == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a>) {
+<a name="l01650"></a>01650     <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *GU = <a class="code" href="SelectionDAGISel_8cpp.html#ad2b055f61a61a64d892bdae575ca6209">findGlueUse</a>(Root);
+<a name="l01651"></a>01651     <span class="keywordflow">if</span> (GU == NULL)
+<a name="l01652"></a>01652       <span class="keywordflow">break</span>;
+<a name="l01653"></a>01653     Root = GU;
+<a name="l01654"></a>01654     VT = Root-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(Root-><a class="code" href="classllvm_1_1SDNode.html#ab319fc51db27ec95fd50a910c7ccec94">getNumValues</a>()-1);
+<a name="l01655"></a>01655 
+<a name="l01656"></a>01656     <span class="comment">// If our query node has a glue result with a use, we've walked up it.  If</span>
+<a name="l01657"></a>01657     <span class="comment">// the user (which has already been selected) has a chain or indirectly uses</span>
+<a name="l01658"></a>01658     <span class="comment">// the chain, our WalkChainUsers predicate will not consider it.  Because of</span>
+<a name="l01659"></a>01659     <span class="comment">// this, we cannot ignore chains in this predicate.</span>
+<a name="l01660"></a>01660     IgnoreChains = <span class="keyword">false</span>;
+<a name="l01661"></a>01661   }
+<a name="l01662"></a>01662 
+<a name="l01663"></a>01663 
+<a name="l01664"></a>01664   <a class="code" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet<SDNode*, 16></a> Visited;
+<a name="l01665"></a>01665   <span class="keywordflow">return</span> !<a class="code" href="SelectionDAGISel_8cpp.html#a3834318b09ff2507fd007a27e734d8d6">findNonImmUse</a>(Root, N.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>(), U, Root, Visited, IgnoreChains);
+<a name="l01666"></a>01666 }
+<a name="l01667"></a>01667 
+<a name="l01668"></a>01668 <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *SelectionDAGISel::Select_INLINEASM(<a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *N) {
+<a name="l01669"></a>01669   std::vector<SDValue> Ops(N-><a class="code" href="classllvm_1_1SDNode.html#a20f382e841761654032bf8b4712e805f">op_begin</a>(), N-><a class="code" href="classllvm_1_1SDNode.html#a992906781101abb22f6e4d16622bbe24">op_end</a>());
+<a name="l01670"></a>01670   <a class="code" href="classllvm_1_1SelectionDAGISel.html#a93c0fc0673147d4ecb1e4731f9cce4ad">SelectInlineAsmMemoryOperands</a>(Ops);
+<a name="l01671"></a>01671 
+<a name="l01672"></a>01672   std::vector<EVT> VTs;
+<a name="l01673"></a>01673   VTs.push_back(<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a>);
+<a name="l01674"></a>01674   VTs.push_back(<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a>);
+<a name="l01675"></a>01675   <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> New = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac65c8a6cfb8608d6722c6df997870780">getNode</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ae35d57f3c020672748fcc95607348986">ISD::INLINEASM</a>, N-><a class="code" href="classllvm_1_1SDNode.html#a630d6793e4444e4996dfa80f1fce18c8" title="getDebugLoc - Return the source location info.">getDebugLoc</a>(),
+<a name="l01676"></a>01676                                 VTs, &Ops[0], Ops.size());
+<a name="l01677"></a>01677   New->setNodeId(-1);
+<a name="l01678"></a>01678   <span class="keywordflow">return</span> New.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>();
+<a name="l01679"></a>01679 }
+<a name="l01680"></a>01680 
+<a name="l01681"></a>01681 <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *SelectionDAGISel::Select_UNDEF(<a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *N) {
+<a name="l01682"></a>01682   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a59d2ddbf50166263a9a5bdbad559fad5">SelectNodeTo</a>(N, <a class="code" href="namespacellvm_1_1TargetOpcode.html#aa2b3629c9319f86eee5a2c0e8c75ebfaa5a91c23866687baf221ce86ff6fde01f" title="IMPLICIT_DEF - This is the MachineInstr-level equivalent of undef.">TargetOpcode::IMPLICIT_DEF</a>,N-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(0));
+<a name="l01683"></a>01683 }
+<a name="l01684"></a>01684 <span class="comment"></span>
+<a name="l01685"></a>01685 <span class="comment">/// GetVBR - decode a vbr encoding whose top bit is set.</span>
+<a name="l01686"></a>01686 <span class="comment"></span><a class="code" href="Compiler_8h.html#a338bdf98e9e600f582b7bef274bc9388">LLVM_ATTRIBUTE_ALWAYS_INLINE</a> <span class="keyword">static</span> uint64_t
+<a name="l01687"></a><a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406">01687</a> <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(uint64_t Val, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable, <span class="keywordtype">unsigned</span> &Idx) {
+<a name="l01688"></a>01688   assert(Val >= 128 && <span class="stringliteral">"Not a VBR"</span>);
+<a name="l01689"></a>01689   Val &= 127;  <span class="comment">// Remove first vbr bit.</span>
+<a name="l01690"></a>01690 
+<a name="l01691"></a>01691   <span class="keywordtype">unsigned</span> Shift = 7;
+<a name="l01692"></a>01692   uint64_t NextBits;
+<a name="l01693"></a>01693   <span class="keywordflow">do</span> {
+<a name="l01694"></a>01694     NextBits = MatcherTable[Idx++];
+<a name="l01695"></a>01695     Val |= (NextBits&127) << Shift;
+<a name="l01696"></a>01696     Shift += 7;
+<a name="l01697"></a>01697   } <span class="keywordflow">while</span> (NextBits & 128);
+<a name="l01698"></a>01698 
+<a name="l01699"></a>01699   <span class="keywordflow">return</span> Val;
+<a name="l01700"></a>01700 }
+<a name="l01701"></a>01701 
+<a name="l01702"></a>01702 <span class="comment"></span>
+<a name="l01703"></a>01703 <span class="comment">/// UpdateChainsAndGlue - When a match is complete, this method updates uses of</span>
+<a name="l01704"></a>01704 <span class="comment">/// interior glue and chain results to use the new glue and chain results.</span>
+<a name="l01705"></a>01705 <span class="comment"></span><span class="keywordtype">void</span> SelectionDAGISel::
+<a name="l01706"></a>01706 UpdateChainsAndGlue(<a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *NodeToMatch, <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> InputChain,
+<a name="l01707"></a>01707                     <span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<SDNode*></a> &ChainNodesMatched,
+<a name="l01708"></a>01708                     <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> InputGlue,
+<a name="l01709"></a>01709                     <span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<SDNode*></a> &GlueResultNodesMatched,
+<a name="l01710"></a>01710                     <span class="keywordtype">bool</span> isMorphNodeTo) {
+<a name="l01711"></a>01711   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SDNode*, 4></a> NowDeadNodes;
+<a name="l01712"></a>01712 
+<a name="l01713"></a>01713   <span class="comment">// Now that all the normal results are replaced, we replace the chain and</span>
+<a name="l01714"></a>01714   <span class="comment">// glue results if present.</span>
+<a name="l01715"></a>01715   <span class="keywordflow">if</span> (!ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>()) {
+<a name="l01716"></a>01716     assert(InputChain.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>() != 0 &&
+<a name="l01717"></a>01717            <span class="stringliteral">"Matched input chains but didn't produce a chain"</span>);
+<a name="l01718"></a>01718     <span class="comment">// Loop over all of the nodes we matched that produced a chain result.</span>
+<a name="l01719"></a>01719     <span class="comment">// Replace all the chain results with the final chain we ended up with.</span>
+<a name="l01720"></a>01720     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>(); i != e; ++i) {
+<a name="l01721"></a>01721       <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *ChainNode = ChainNodesMatched[i];
+<a name="l01722"></a>01722 
+<a name="l01723"></a>01723       <span class="comment">// If this node was already deleted, don't look at it.</span>
+<a name="l01724"></a>01724       <span class="keywordflow">if</span> (ChainNode-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a062083eb3ff8c441c73d3bf42ca09bba">ISD::DELETED_NODE</a>)
+<a name="l01725"></a>01725         <span class="keywordflow">continue</span>;
+<a name="l01726"></a>01726 
+<a name="l01727"></a>01727       <span class="comment">// Don't replace the results of the root node if we're doing a</span>
+<a name="l01728"></a>01728       <span class="comment">// MorphNodeTo.</span>
+<a name="l01729"></a>01729       <span class="keywordflow">if</span> (ChainNode == NodeToMatch && isMorphNodeTo)
+<a name="l01730"></a>01730         <span class="keywordflow">continue</span>;
+<a name="l01731"></a>01731 
+<a name="l01732"></a>01732       <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> ChainVal = <a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(ChainNode, ChainNode-><a class="code" href="classllvm_1_1SDNode.html#ab319fc51db27ec95fd50a910c7ccec94">getNumValues</a>()-1);
+<a name="l01733"></a>01733       <span class="keywordflow">if</span> (ChainVal.<a class="code" href="classllvm_1_1SDValue.html#a7d2ad4aa4277eb4e1138ff9791c8fbb7">getValueType</a>() == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a>)
+<a name="l01734"></a>01734         ChainVal = ChainVal.<a class="code" href="classllvm_1_1SDValue.html#a040481b9bda32faa6b1435532405d88f">getValue</a>(ChainVal->getNumValues()-2);
+<a name="l01735"></a>01735       assert(ChainVal.<a class="code" href="classllvm_1_1SDValue.html#a7d2ad4aa4277eb4e1138ff9791c8fbb7">getValueType</a>() == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a> && <span class="stringliteral">"Not a chain?"</span>);
+<a name="l01736"></a>01736       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac630ccda26fea2f45afa3fb89bc1a8f4">ReplaceAllUsesOfValueWith</a>(ChainVal, InputChain);
+<a name="l01737"></a>01737 
+<a name="l01738"></a>01738       <span class="comment">// If the node became dead and we haven't already seen it, delete it.</span>
+<a name="l01739"></a>01739       <span class="keywordflow">if</span> (ChainNode-><a class="code" href="classllvm_1_1SDNode.html#afc071edeb7e2007d000374eba843f76a">use_empty</a>() &&
+<a name="l01740"></a>01740           !std::count(NowDeadNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a8a045d250952c0867382a9840ee18fdf">begin</a>(), NowDeadNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a075e34e98605d0e7c289763a104869ac">end</a>(), ChainNode))
+<a name="l01741"></a>01741         NowDeadNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(ChainNode);
+<a name="l01742"></a>01742     }
+<a name="l01743"></a>01743   }
+<a name="l01744"></a>01744 
+<a name="l01745"></a>01745   <span class="comment">// If the result produces glue, update any glue results in the matched</span>
+<a name="l01746"></a>01746   <span class="comment">// pattern with the glue result.</span>
+<a name="l01747"></a>01747   <span class="keywordflow">if</span> (InputGlue.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>() != 0) {
+<a name="l01748"></a>01748     <span class="comment">// Handle any interior nodes explicitly marked.</span>
+<a name="l01749"></a>01749     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = GlueResultNodesMatched.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>(); i != e; ++i) {
+<a name="l01750"></a>01750       <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *FRN = GlueResultNodesMatched[i];
+<a name="l01751"></a>01751 
+<a name="l01752"></a>01752       <span class="comment">// If this node was already deleted, don't look at it.</span>
+<a name="l01753"></a>01753       <span class="keywordflow">if</span> (FRN-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a062083eb3ff8c441c73d3bf42ca09bba">ISD::DELETED_NODE</a>)
+<a name="l01754"></a>01754         <span class="keywordflow">continue</span>;
+<a name="l01755"></a>01755 
+<a name="l01756"></a>01756       assert(FRN-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(FRN-><a class="code" href="classllvm_1_1SDNode.html#ab319fc51db27ec95fd50a910c7ccec94">getNumValues</a>()-1) == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a> &&
+<a name="l01757"></a>01757              <span class="stringliteral">"Doesn't have a glue result"</span>);
+<a name="l01758"></a>01758       <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac630ccda26fea2f45afa3fb89bc1a8f4">ReplaceAllUsesOfValueWith</a>(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(FRN, FRN-><a class="code" href="classllvm_1_1SDNode.html#ab319fc51db27ec95fd50a910c7ccec94">getNumValues</a>()-1),
+<a name="l01759"></a>01759                                         InputGlue);
+<a name="l01760"></a>01760 
+<a name="l01761"></a>01761       <span class="comment">// If the node became dead and we haven't already seen it, delete it.</span>
+<a name="l01762"></a>01762       <span class="keywordflow">if</span> (FRN-><a class="code" href="classllvm_1_1SDNode.html#afc071edeb7e2007d000374eba843f76a">use_empty</a>() &&
+<a name="l01763"></a>01763           !std::count(NowDeadNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a8a045d250952c0867382a9840ee18fdf">begin</a>(), NowDeadNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a075e34e98605d0e7c289763a104869ac">end</a>(), FRN))
+<a name="l01764"></a>01764         NowDeadNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(FRN);
+<a name="l01765"></a>01765     }
+<a name="l01766"></a>01766   }
+<a name="l01767"></a>01767 
+<a name="l01768"></a>01768   <span class="keywordflow">if</span> (!NowDeadNodes.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>())
+<a name="l01769"></a>01769     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a92c8c043c2a2d8db5b6cf9767394b747">RemoveDeadNodes</a>(NowDeadNodes);
+<a name="l01770"></a>01770 
+<a name="l01771"></a>01771   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"ISEL: Match complete!\n"</span>);
+<a name="l01772"></a>01772 }
+<a name="l01773"></a>01773 
+<a name="l01774"></a><a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455ee">01774</a> <span class="keyword">enum</span> <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455ee">ChainResult</a> {
+<a name="l01775"></a><a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eea0a6c2ab7f55c86f88acc60dcc525ce1a">01775</a>   <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eea0a6c2ab7f55c86f88acc60dcc525ce1a">CR_Simple</a>,
+<a name="l01776"></a><a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eeaa1b1f84cfc5d9f183da5247e66b0dbf7">01776</a>   <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eeaa1b1f84cfc5d9f183da5247e66b0dbf7">CR_InducesCycle</a>,
+<a name="l01777"></a><a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eea9bd57bfa2b960ba18a1e68e1b8af21ab">01777</a>   <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eea9bd57bfa2b960ba18a1e68e1b8af21ab">CR_LeadsToInteriorNode</a>
+<a name="l01778"></a>01778 };
+<a name="l01779"></a>01779 <span class="comment"></span>
+<a name="l01780"></a>01780 <span class="comment">/// WalkChainUsers - Walk down the users of the specified chained node that is</span>
+<a name="l01781"></a>01781 <span class="comment">/// part of the pattern we're matching, looking at all of the users we find.</span>
+<a name="l01782"></a>01782 <span class="comment">/// This determines whether something is an interior node, whether we have a</span>
+<a name="l01783"></a>01783 <span class="comment">/// non-pattern node in between two pattern nodes (which prevent folding because</span>
+<a name="l01784"></a>01784 <span class="comment">/// it would induce a cycle) and whether we have a TokenFactor node sandwiched</span>
+<a name="l01785"></a>01785 <span class="comment">/// between pattern nodes (in which case the TF becomes part of the pattern).</span>
+<a name="l01786"></a>01786 <span class="comment">///</span>
+<a name="l01787"></a>01787 <span class="comment">/// The walk we do here is guaranteed to be small because we quickly get down to</span>
+<a name="l01788"></a>01788 <span class="comment">/// already selected nodes "below" us.</span>
+<a name="l01789"></a>01789 <span class="comment"></span><span class="keyword">static</span> <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455ee">ChainResult</a>
+<a name="l01790"></a><a class="code" href="SelectionDAGISel_8cpp.html#af3cb0eaaeb4f774d7dcb68f956ec78ee">01790</a> <a class="code" href="SelectionDAGISel_8cpp.html#af3cb0eaaeb4f774d7dcb68f956ec78ee">WalkChainUsers</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *ChainedNode,
+<a name="l01791"></a>01791                <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<SDNode*></a> &ChainedNodesInPattern,
+<a name="l01792"></a>01792                <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<SDNode*></a> &InteriorChainedNodes) {
+<a name="l01793"></a>01793   <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455ee">ChainResult</a> Result = <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eea0a6c2ab7f55c86f88acc60dcc525ce1a">CR_Simple</a>;
+<a name="l01794"></a>01794 
+<a name="l01795"></a>01795   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SDNode_1_1use__iterator.html">SDNode::use_iterator</a> UI = ChainedNode-><a class="code" href="classllvm_1_1SDNode.html#a8810bf428dcf84d48f39c8f5ba9a8c94">use_begin</a>(),
+<a name="l01796"></a>01796          E = ChainedNode-><a class="code" href="classllvm_1_1SDNode.html#aef02f2c1bd12936a80611b134b24a47d">use_end</a>(); UI != E; ++UI) {
+<a name="l01797"></a>01797     <span class="comment">// Make sure the use is of the chain, not some other value we produce.</span>
+<a name="l01798"></a>01798     <span class="keywordflow">if</span> (UI.getUse().getValueType() != <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a>) <span class="keywordflow">continue</span>;
+<a name="l01799"></a>01799 
+<a name="l01800"></a>01800     <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *User = *UI;
+<a name="l01801"></a>01801 
+<a name="l01802"></a>01802     <span class="comment">// If we see an already-selected machine node, then we've gone beyond the</span>
+<a name="l01803"></a>01803     <span class="comment">// pattern that we're selecting down into the already selected chunk of the</span>
+<a name="l01804"></a>01804     <span class="comment">// DAG.</span>
+<a name="l01805"></a>01805     <span class="keywordflow">if</span> (User-><a class="code" href="classllvm_1_1SDNode.html#a7ef138746b04be6d07091b9ba49d74da">isMachineOpcode</a>() ||
+<a name="l01806"></a>01806         User-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ab508f11d38b4596451c6333f7510daa3" title="HANDLENODE node - Used as a handle for various purposes.">ISD::HANDLENODE</a>)  <span class="comment">// Root of the graph.</span>
+<a name="l01807"></a>01807       <span class="keywordflow">continue</span>;
+<a name="l01808"></a>01808 
+<a name="l01809"></a>01809     <span class="keywordtype">unsigned</span> UserOpcode = User-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>();
+<a name="l01810"></a>01810     <span class="keywordflow">if</span> (UserOpcode == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a93bc27ca4d9e211c54b0d9efb660f080">ISD::CopyToReg</a> ||
+<a name="l01811"></a>01811         UserOpcode == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a84c47705bcf7271413738ae8bf3871e6">ISD::CopyFromReg</a> ||
+<a name="l01812"></a>01812         UserOpcode == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ae35d57f3c020672748fcc95607348986">ISD::INLINEASM</a> ||
+<a name="l01813"></a>01813         UserOpcode == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a4c1f7e0dc3af92b9cfd0d5d11231ddc1">ISD::EH_LABEL</a> ||
+<a name="l01814"></a>01814         UserOpcode == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110aada0b926e7ebc2bc55d158d4c37bdcca">ISD::LIFETIME_START</a> ||
+<a name="l01815"></a>01815         UserOpcode == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ab49301b20458a7f312a0919e3c8abdb2">ISD::LIFETIME_END</a>) {
+<a name="l01816"></a>01816       <span class="comment">// If their node ID got reset to -1 then they've already been selected.</span>
+<a name="l01817"></a>01817       <span class="comment">// Treat them like a MachineOpcode.</span>
+<a name="l01818"></a>01818       <span class="keywordflow">if</span> (User-><a class="code" href="classllvm_1_1SDNode.html#a7869db2aca4044d21da972bed855b0d0">getNodeId</a>() == -1)
+<a name="l01819"></a>01819         <span class="keywordflow">continue</span>;
+<a name="l01820"></a>01820     }
+<a name="l01821"></a>01821 
+<a name="l01822"></a>01822     <span class="comment">// If we have a TokenFactor, we handle it specially.</span>
+<a name="l01823"></a>01823     <span class="keywordflow">if</span> (User-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>() != <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ad469508535ce2082a1ab1f0e429187b8">ISD::TokenFactor</a>) {
+<a name="l01824"></a>01824       <span class="comment">// If the node isn't a token factor and isn't part of our pattern, then it</span>
+<a name="l01825"></a>01825       <span class="comment">// must be a random chained node in between two nodes we're selecting.</span>
+<a name="l01826"></a>01826       <span class="comment">// This happens when we have something like:</span>
+<a name="l01827"></a>01827       <span class="comment">//   x = load ptr</span>
+<a name="l01828"></a>01828       <span class="comment">//   call</span>
+<a name="l01829"></a>01829       <span class="comment">//   y = x+4</span>
+<a name="l01830"></a>01830       <span class="comment">//   store y -> ptr</span>
+<a name="l01831"></a>01831       <span class="comment">// Because we structurally match the load/store as a read/modify/write,</span>
+<a name="l01832"></a>01832       <span class="comment">// but the call is chained between them.  We cannot fold in this case</span>
+<a name="l01833"></a>01833       <span class="comment">// because it would induce a cycle in the graph.</span>
+<a name="l01834"></a>01834       <span class="keywordflow">if</span> (!std::count(ChainedNodesInPattern.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a8a045d250952c0867382a9840ee18fdf">begin</a>(),
+<a name="l01835"></a>01835                       ChainedNodesInPattern.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a075e34e98605d0e7c289763a104869ac">end</a>(), User))
+<a name="l01836"></a>01836         <span class="keywordflow">return</span> <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eeaa1b1f84cfc5d9f183da5247e66b0dbf7">CR_InducesCycle</a>;
+<a name="l01837"></a>01837 
+<a name="l01838"></a>01838       <span class="comment">// Otherwise we found a node that is part of our pattern.  For example in:</span>
+<a name="l01839"></a>01839       <span class="comment">//   x = load ptr</span>
+<a name="l01840"></a>01840       <span class="comment">//   y = x+4</span>
+<a name="l01841"></a>01841       <span class="comment">//   store y -> ptr</span>
+<a name="l01842"></a>01842       <span class="comment">// This would happen when we're scanning down from the load and see the</span>
+<a name="l01843"></a>01843       <span class="comment">// store as a user.  Record that there is a use of ChainedNode that is</span>
+<a name="l01844"></a>01844       <span class="comment">// part of the pattern and keep scanning uses.</span>
+<a name="l01845"></a>01845       Result = <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eea9bd57bfa2b960ba18a1e68e1b8af21ab">CR_LeadsToInteriorNode</a>;
+<a name="l01846"></a>01846       InteriorChainedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(User);
+<a name="l01847"></a>01847       <span class="keywordflow">continue</span>;
+<a name="l01848"></a>01848     }
+<a name="l01849"></a>01849 
+<a name="l01850"></a>01850     <span class="comment">// If we found a TokenFactor, there are two cases to consider: first if the</span>
+<a name="l01851"></a>01851     <span class="comment">// TokenFactor is just hanging "below" the pattern we're matching (i.e. no</span>
+<a name="l01852"></a>01852     <span class="comment">// uses of the TF are in our pattern) we just want to ignore it.  Second,</span>
+<a name="l01853"></a>01853     <span class="comment">// the TokenFactor can be sandwiched in between two chained nodes, like so:</span>
+<a name="l01854"></a>01854     <span class="comment">//     [Load chain]</span>
+<a name="l01855"></a>01855     <span class="comment">//         ^</span>
+<a name="l01856"></a>01856     <span class="comment">//         |</span>
+<a name="l01857"></a>01857     <span class="comment">//       [Load]</span>
+<a name="l01858"></a>01858     <span class="comment">//       ^    ^</span>
+<a name="l01859"></a>01859     <span class="comment">//       |    \                    DAG's like cheese</span>
+<a name="l01860"></a>01860     <span class="comment">//      /       \                       do you?</span>
+<a name="l01861"></a>01861     <span class="comment">//     /         |</span>
+<a name="l01862"></a>01862     <span class="comment">// [TokenFactor] [Op]</span>
+<a name="l01863"></a>01863     <span class="comment">//     ^          ^</span>
+<a name="l01864"></a>01864     <span class="comment">//     |          |</span>
+<a name="l01865"></a>01865     <span class="comment">//      \        /</span>
+<a name="l01866"></a>01866     <span class="comment">//       \      /</span>
+<a name="l01867"></a>01867     <span class="comment">//       [Store]</span>
+<a name="l01868"></a>01868     <span class="comment">//</span>
+<a name="l01869"></a>01869     <span class="comment">// In this case, the TokenFactor becomes part of our match and we rewrite it</span>
+<a name="l01870"></a>01870     <span class="comment">// as a new TokenFactor.</span>
+<a name="l01871"></a>01871     <span class="comment">//</span>
+<a name="l01872"></a>01872     <span class="comment">// To distinguish these two cases, do a recursive walk down the uses.</span>
+<a name="l01873"></a>01873     <span class="keywordflow">switch</span> (<a class="code" href="SelectionDAGISel_8cpp.html#af3cb0eaaeb4f774d7dcb68f956ec78ee">WalkChainUsers</a>(User, ChainedNodesInPattern, InteriorChainedNodes)) {
+<a name="l01874"></a>01874     <span class="keywordflow">case</span> <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eea0a6c2ab7f55c86f88acc60dcc525ce1a">CR_Simple</a>:
+<a name="l01875"></a>01875       <span class="comment">// If the uses of the TokenFactor are just already-selected nodes, ignore</span>
+<a name="l01876"></a>01876       <span class="comment">// it, it is "below" our pattern.</span>
+<a name="l01877"></a>01877       <span class="keywordflow">continue</span>;
+<a name="l01878"></a>01878     <span class="keywordflow">case</span> <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eeaa1b1f84cfc5d9f183da5247e66b0dbf7">CR_InducesCycle</a>:
+<a name="l01879"></a>01879       <span class="comment">// If the uses of the TokenFactor lead to nodes that are not part of our</span>
+<a name="l01880"></a>01880       <span class="comment">// pattern that are not selected, folding would turn this into a cycle,</span>
+<a name="l01881"></a>01881       <span class="comment">// bail out now.</span>
+<a name="l01882"></a>01882       <span class="keywordflow">return</span> <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eeaa1b1f84cfc5d9f183da5247e66b0dbf7">CR_InducesCycle</a>;
+<a name="l01883"></a>01883     <span class="keywordflow">case</span> <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eea9bd57bfa2b960ba18a1e68e1b8af21ab">CR_LeadsToInteriorNode</a>:
+<a name="l01884"></a>01884       <span class="keywordflow">break</span>;  <span class="comment">// Otherwise, keep processing.</span>
+<a name="l01885"></a>01885     }
+<a name="l01886"></a>01886 
+<a name="l01887"></a>01887     <span class="comment">// Okay, we know we're in the interesting interior case.  The TokenFactor</span>
+<a name="l01888"></a>01888     <span class="comment">// is now going to be considered part of the pattern so that we rewrite its</span>
+<a name="l01889"></a>01889     <span class="comment">// uses (it may have uses that are not part of the pattern) with the</span>
+<a name="l01890"></a>01890     <span class="comment">// ultimate chain result of the generated code.  We will also add its chain</span>
+<a name="l01891"></a>01891     <span class="comment">// inputs as inputs to the ultimate TokenFactor we create.</span>
+<a name="l01892"></a>01892     Result = <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eea9bd57bfa2b960ba18a1e68e1b8af21ab">CR_LeadsToInteriorNode</a>;
+<a name="l01893"></a>01893     ChainedNodesInPattern.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(User);
+<a name="l01894"></a>01894     InteriorChainedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(User);
+<a name="l01895"></a>01895     <span class="keywordflow">continue</span>;
+<a name="l01896"></a>01896   }
+<a name="l01897"></a>01897 
+<a name="l01898"></a>01898   <span class="keywordflow">return</span> Result;
+<a name="l01899"></a>01899 }
+<a name="l01900"></a>01900 <span class="comment"></span>
+<a name="l01901"></a>01901 <span class="comment">/// HandleMergeInputChains - This implements the OPC_EmitMergeInputChains</span>
+<a name="l01902"></a>01902 <span class="comment">/// operation for when the pattern matched at least one node with a chains.  The</span>
+<a name="l01903"></a>01903 <span class="comment">/// input vector contains a list of all of the chained nodes that we match.  We</span>
+<a name="l01904"></a>01904 <span class="comment">/// must determine if this is a valid thing to cover (i.e. matching it won't</span>
+<a name="l01905"></a>01905 <span class="comment">/// induce cycles in the DAG) and if so, creating a TokenFactor node. that will</span>
+<a name="l01906"></a>01906 <span class="comment">/// be used as the input node chain for the generated nodes.</span>
+<a name="l01907"></a>01907 <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classllvm_1_1SDValue.html">SDValue</a>
+<a name="l01908"></a><a class="code" href="SelectionDAGISel_8cpp.html#aeb0bc3fb3008d1f61c5a1adb0b901c82">01908</a> <a class="code" href="SelectionDAGISel_8cpp.html#aeb0bc3fb3008d1f61c5a1adb0b901c82">HandleMergeInputChains</a>(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<SDNode*></a> &ChainNodesMatched,
+<a name="l01909"></a>01909                        <a class="code" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> *CurDAG) {
+<a name="l01910"></a>01910   <span class="comment">// Walk all of the chained nodes we've matched, recursively scanning down the</span>
+<a name="l01911"></a>01911   <span class="comment">// users of the chain result. This adds any TokenFactor nodes that are caught</span>
+<a name="l01912"></a>01912   <span class="comment">// in between chained nodes to the chained and interior nodes list.</span>
+<a name="l01913"></a>01913   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SDNode*, 3></a> InteriorChainedNodes;
+<a name="l01914"></a>01914   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>(); i != e; ++i) {
+<a name="l01915"></a>01915     <span class="keywordflow">if</span> (<a class="code" href="SelectionDAGISel_8cpp.html#af3cb0eaaeb4f774d7dcb68f956ec78ee">WalkChainUsers</a>(ChainNodesMatched[i], ChainNodesMatched,
+<a name="l01916"></a>01916                        InteriorChainedNodes) == <a class="code" href="SelectionDAGISel_8cpp.html#ac6cd0b51896db5749a4e980d3ff455eeaa1b1f84cfc5d9f183da5247e66b0dbf7">CR_InducesCycle</a>)
+<a name="l01917"></a>01917       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(); <span class="comment">// Would induce a cycle.</span>
+<a name="l01918"></a>01918   }
+<a name="l01919"></a>01919 
+<a name="l01920"></a>01920   <span class="comment">// Okay, we have walked all the matched nodes and collected TokenFactor nodes</span>
+<a name="l01921"></a>01921   <span class="comment">// that we are interested in.  Form our input TokenFactor node.</span>
+<a name="l01922"></a>01922   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SDValue, 3></a> InputChains;
+<a name="l01923"></a>01923   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>(); i != e; ++i) {
+<a name="l01924"></a>01924     <span class="comment">// Add the input chain of this node to the InputChains list (which will be</span>
+<a name="l01925"></a>01925     <span class="comment">// the operands of the generated TokenFactor) if it's not an interior node.</span>
+<a name="l01926"></a>01926     <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *N = ChainNodesMatched[i];
+<a name="l01927"></a>01927     <span class="keywordflow">if</span> (N-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>() != <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ad469508535ce2082a1ab1f0e429187b8">ISD::TokenFactor</a>) {
+<a name="l01928"></a>01928       <span class="keywordflow">if</span> (std::count(InteriorChainedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a8a045d250952c0867382a9840ee18fdf">begin</a>(),InteriorChainedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a075e34e98605d0e7c289763a104869ac">end</a>(),N))
+<a name="l01929"></a>01929         <span class="keywordflow">continue</span>;
+<a name="l01930"></a>01930 
+<a name="l01931"></a>01931       <span class="comment">// Otherwise, add the input chain.</span>
+<a name="l01932"></a>01932       <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> InChain = ChainNodesMatched[i]->getOperand(0);
+<a name="l01933"></a>01933       assert(InChain.<a class="code" href="classllvm_1_1SDValue.html#a7d2ad4aa4277eb4e1138ff9791c8fbb7">getValueType</a>() == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a> && <span class="stringliteral">"Not a chain"</span>);
+<a name="l01934"></a>01934       InputChains.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(InChain);
+<a name="l01935"></a>01935       <span class="keywordflow">continue</span>;
+<a name="l01936"></a>01936     }
+<a name="l01937"></a>01937 
+<a name="l01938"></a>01938     <span class="comment">// If we have a token factor, we want to add all inputs of the token factor</span>
+<a name="l01939"></a>01939     <span class="comment">// that are not part of the pattern we're matching.</span>
+<a name="l01940"></a>01940     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> op = 0, e = N-><a class="code" href="classllvm_1_1SDNode.html#abc5c2f1d47a517373030133c6a102106">getNumOperands</a>(); op != e; ++op) {
+<a name="l01941"></a>01941       <span class="keywordflow">if</span> (!std::count(ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a8a045d250952c0867382a9840ee18fdf">begin</a>(), ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a075e34e98605d0e7c289763a104869ac">end</a>(),
+<a name="l01942"></a>01942                       N-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(op).<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>()))
+<a name="l01943"></a>01943         InputChains.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(N-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(op));
+<a name="l01944"></a>01944     }
+<a name="l01945"></a>01945   }
+<a name="l01946"></a>01946 
+<a name="l01947"></a>01947   <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> Res;
+<a name="l01948"></a>01948   <span class="keywordflow">if</span> (InputChains.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() == 1)
+<a name="l01949"></a>01949     <span class="keywordflow">return</span> InputChains[0];
+<a name="l01950"></a>01950   <span class="keywordflow">return</span> CurDAG-><a class="code" href="classllvm_1_1SelectionDAG.html#ac65c8a6cfb8608d6722c6df997870780">getNode</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ad469508535ce2082a1ab1f0e429187b8">ISD::TokenFactor</a>, ChainNodesMatched[0]->getDebugLoc(),
+<a name="l01951"></a>01951                          <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a>, &InputChains[0], InputChains.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>());
+<a name="l01952"></a>01952 }
+<a name="l01953"></a>01953 <span class="comment"></span>
+<a name="l01954"></a>01954 <span class="comment">/// MorphNode - Handle morphing a node in place for the selector.</span>
+<a name="l01955"></a>01955 <span class="comment"></span><a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *SelectionDAGISel::
+<a name="l01956"></a>01956 MorphNode(<a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *Node, <span class="keywordtype">unsigned</span> TargetOpc, <a class="code" href="structllvm_1_1SDVTList.html">SDVTList</a> VTList,
+<a name="l01957"></a>01957           <span class="keyword">const</span> <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> *Ops, <span class="keywordtype">unsigned</span> NumOps, <span class="keywordtype">unsigned</span> EmitNodeInfo) {
+<a name="l01958"></a>01958   <span class="comment">// It is possible we're using MorphNodeTo to replace a node with no</span>
+<a name="l01959"></a>01959   <span class="comment">// normal results with one that has a normal result (or we could be</span>
+<a name="l01960"></a>01960   <span class="comment">// adding a chain) and the input could have glue and chains as well.</span>
+<a name="l01961"></a>01961   <span class="comment">// In this case we need to shift the operands down.</span>
+<a name="l01962"></a>01962   <span class="comment">// FIXME: This is a horrible hack and broken in obscure cases, no worse</span>
+<a name="l01963"></a>01963   <span class="comment">// than the old isel though.</span>
+<a name="l01964"></a>01964   <span class="keywordtype">int</span> OldGlueResultNo = -1, OldChainResultNo = -1;
+<a name="l01965"></a>01965 
+<a name="l01966"></a>01966   <span class="keywordtype">unsigned</span> NTMNumResults = Node-><a class="code" href="classllvm_1_1SDNode.html#ab319fc51db27ec95fd50a910c7ccec94">getNumValues</a>();
+<a name="l01967"></a>01967   <span class="keywordflow">if</span> (Node-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(NTMNumResults-1) == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a>) {
+<a name="l01968"></a>01968     OldGlueResultNo = NTMNumResults-1;
+<a name="l01969"></a>01969     <span class="keywordflow">if</span> (NTMNumResults != 1 &&
+<a name="l01970"></a>01970         Node-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(NTMNumResults-2) == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a>)
+<a name="l01971"></a>01971       OldChainResultNo = NTMNumResults-2;
+<a name="l01972"></a>01972   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Node-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(NTMNumResults-1) == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a>)
+<a name="l01973"></a>01973     OldChainResultNo = NTMNumResults-1;
+<a name="l01974"></a>01974 
+<a name="l01975"></a>01975   <span class="comment">// Call the underlying SelectionDAG routine to do the transmogrification. Note</span>
+<a name="l01976"></a>01976   <span class="comment">// that this deletes operands of the old node that become dead.</span>
+<a name="l01977"></a>01977   <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *Res = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a5dc22ea5c0d52d0e506d1c30c4ca9ca5">MorphNodeTo</a>(Node, ~TargetOpc, VTList, Ops, NumOps);
+<a name="l01978"></a>01978 
+<a name="l01979"></a>01979   <span class="comment">// MorphNodeTo can operate in two ways: if an existing node with the</span>
+<a name="l01980"></a>01980   <span class="comment">// specified operands exists, it can just return it.  Otherwise, it</span>
+<a name="l01981"></a>01981   <span class="comment">// updates the node in place to have the requested operands.</span>
+<a name="l01982"></a>01982   <span class="keywordflow">if</span> (Res == Node) {
+<a name="l01983"></a>01983     <span class="comment">// If we updated the node in place, reset the node ID.  To the isel,</span>
+<a name="l01984"></a>01984     <span class="comment">// this should be just like a newly allocated machine node.</span>
+<a name="l01985"></a>01985     Res-><a class="code" href="classllvm_1_1SDNode.html#a5689e9ae35c6ceb3b9377299c98e0e97" title="setNodeId - Set unique node id.">setNodeId</a>(-1);
+<a name="l01986"></a>01986   }
+<a name="l01987"></a>01987 
+<a name="l01988"></a>01988   <span class="keywordtype">unsigned</span> ResNumResults = Res-><a class="code" href="classllvm_1_1SDNode.html#ab319fc51db27ec95fd50a910c7ccec94">getNumValues</a>();
+<a name="l01989"></a>01989   <span class="comment">// Move the glue if needed.</span>
+<a name="l01990"></a>01990   <span class="keywordflow">if</span> ((EmitNodeInfo & <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad7a717074584371d05b88acf2955b3c5ad6ee2ea31428750f42b7db36bf86737e">OPFL_GlueOutput</a>) && OldGlueResultNo != -1 &&
+<a name="l01991"></a>01991       (<span class="keywordtype">unsigned</span>)OldGlueResultNo != ResNumResults-1)
+<a name="l01992"></a>01992     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac630ccda26fea2f45afa3fb89bc1a8f4">ReplaceAllUsesOfValueWith</a>(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(Node, OldGlueResultNo),
+<a name="l01993"></a>01993                                       <a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(Res, ResNumResults-1));
+<a name="l01994"></a>01994 
+<a name="l01995"></a>01995   <span class="keywordflow">if</span> ((EmitNodeInfo & OPFL_GlueOutput) != 0)
+<a name="l01996"></a>01996     --ResNumResults;
+<a name="l01997"></a>01997 
+<a name="l01998"></a>01998   <span class="comment">// Move the chain reference if needed.</span>
+<a name="l01999"></a>01999   <span class="keywordflow">if</span> ((EmitNodeInfo & <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad7a717074584371d05b88acf2955b3c5a7638541ce06fd89565a0ba8c84161b9c">OPFL_Chain</a>) && OldChainResultNo != -1 &&
+<a name="l02000"></a>02000       (<span class="keywordtype">unsigned</span>)OldChainResultNo != ResNumResults-1)
+<a name="l02001"></a>02001     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac630ccda26fea2f45afa3fb89bc1a8f4">ReplaceAllUsesOfValueWith</a>(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(Node, OldChainResultNo),
+<a name="l02002"></a>02002                                       <a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(Res, ResNumResults-1));
+<a name="l02003"></a>02003 
+<a name="l02004"></a>02004   <span class="comment">// Otherwise, no replacement happened because the node already exists. Replace</span>
+<a name="l02005"></a>02005   <span class="comment">// Uses of the old node with the new one.</span>
+<a name="l02006"></a>02006   <span class="keywordflow">if</span> (Res != Node)
+<a name="l02007"></a>02007     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a307e5150c6c85f43348d2b09a69d7591">ReplaceAllUsesWith</a>(Node, Res);
+<a name="l02008"></a>02008 
+<a name="l02009"></a>02009   <span class="keywordflow">return</span> Res;
+<a name="l02010"></a>02010 }
+<a name="l02011"></a>02011 <span class="comment"></span>
+<a name="l02012"></a>02012 <span class="comment">/// CheckSame - Implements OP_CheckSame.</span>
+<a name="l02013"></a>02013 <span class="comment"></span><a class="code" href="Compiler_8h.html#a338bdf98e9e600f582b7bef274bc9388">LLVM_ATTRIBUTE_ALWAYS_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l02014"></a><a class="code" href="SelectionDAGISel_8cpp.html#a79923c0bb7ad7ead32b876800220d6b3">02014</a> <a class="code" href="SelectionDAGISel_8cpp.html#a79923c0bb7ad7ead32b876800220d6b3" title="CheckSame - Implements OP_CheckSame.">CheckSame</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable, <span class="keywordtype">unsigned</span> &MatcherIndex,
+<a name="l02015"></a>02015           <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N,
+<a name="l02016"></a>02016           <span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a><std::pair<SDValue, SDNode*> > &RecordedNodes) {
+<a name="l02017"></a>02017   <span class="comment">// Accept if it is exactly the same as a previously recorded node.</span>
+<a name="l02018"></a>02018   <span class="keywordtype">unsigned</span> RecNo = MatcherTable[MatcherIndex++];
+<a name="l02019"></a>02019   assert(RecNo < RecordedNodes.size() && <span class="stringliteral">"Invalid CheckSame"</span>);
+<a name="l02020"></a>02020   <span class="keywordflow">return</span> N == RecordedNodes[RecNo].first;
+<a name="l02021"></a>02021 }
+<a name="l02022"></a>02022 <span class="comment"></span>
+<a name="l02023"></a>02023 <span class="comment">/// CheckPatternPredicate - Implements OP_CheckPatternPredicate.</span>
+<a name="l02024"></a>02024 <span class="comment"></span><a class="code" href="Compiler_8h.html#a338bdf98e9e600f582b7bef274bc9388">LLVM_ATTRIBUTE_ALWAYS_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l02025"></a><a class="code" href="SelectionDAGISel_8cpp.html#abb3b2c1fa23bf08df12215f52696c0f1">02025</a> <a class="code" href="SelectionDAGISel_8cpp.html#abb3b2c1fa23bf08df12215f52696c0f1" title="CheckPatternPredicate - Implements OP_CheckPatternPredicate.">CheckPatternPredicate</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable, <span class="keywordtype">unsigned</span> &MatcherIndex,
+<a name="l02026"></a>02026                       <span class="keyword">const</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html">SelectionDAGISel</a> &SDISel) {
+<a name="l02027"></a>02027   <span class="keywordflow">return</span> SDISel.<a class="code" href="classllvm_1_1SelectionDAGISel.html#a34b4d24412618dbb8dd73e03fcc389aa">CheckPatternPredicate</a>(MatcherTable[MatcherIndex++]);
+<a name="l02028"></a>02028 }
+<a name="l02029"></a>02029 <span class="comment"></span>
+<a name="l02030"></a>02030 <span class="comment">/// CheckNodePredicate - Implements OP_CheckNodePredicate.</span>
+<a name="l02031"></a>02031 <span class="comment"></span><a class="code" href="Compiler_8h.html#a338bdf98e9e600f582b7bef274bc9388">LLVM_ATTRIBUTE_ALWAYS_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l02032"></a><a class="code" href="SelectionDAGISel_8cpp.html#a4c75c8c52c2be067a8825ce146452bc2">02032</a> <a class="code" href="SelectionDAGISel_8cpp.html#a4c75c8c52c2be067a8825ce146452bc2" title="CheckNodePredicate - Implements OP_CheckNodePredicate.">CheckNodePredicate</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable, <span class="keywordtype">unsigned</span> &MatcherIndex,
+<a name="l02033"></a>02033                    <span class="keyword">const</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html">SelectionDAGISel</a> &SDISel, <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *N) {
+<a name="l02034"></a>02034   <span class="keywordflow">return</span> SDISel.<a class="code" href="classllvm_1_1SelectionDAGISel.html#a63d859c0c780cc6883e8e7e18c48fbf9">CheckNodePredicate</a>(N, MatcherTable[MatcherIndex++]);
+<a name="l02035"></a>02035 }
+<a name="l02036"></a>02036 
+<a name="l02037"></a>02037 <a class="code" href="Compiler_8h.html#a338bdf98e9e600f582b7bef274bc9388">LLVM_ATTRIBUTE_ALWAYS_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l02038"></a><a class="code" href="SelectionDAGISel_8cpp.html#ae27ccd25e008885da31b6af396bbb0cf">02038</a> <a class="code" href="SelectionDAGISel_8cpp.html#ae27ccd25e008885da31b6af396bbb0cf">CheckOpcode</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable, <span class="keywordtype">unsigned</span> &MatcherIndex,
+<a name="l02039"></a>02039             <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *N) {
+<a name="l02040"></a>02040   uint16_t Opc = MatcherTable[MatcherIndex++];
+<a name="l02041"></a>02041   Opc |= (<span class="keywordtype">unsigned</span> short)MatcherTable[MatcherIndex++] << 8;
+<a name="l02042"></a>02042   <span class="keywordflow">return</span> N-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>() == Opc;
+<a name="l02043"></a>02043 }
+<a name="l02044"></a>02044 
+<a name="l02045"></a>02045 <a class="code" href="Compiler_8h.html#a338bdf98e9e600f582b7bef274bc9388">LLVM_ATTRIBUTE_ALWAYS_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l02046"></a><a class="code" href="SelectionDAGISel_8cpp.html#a59c52febe3a70cc54a8af6d4c67fdee9">02046</a> <a class="code" href="SelectionDAGISel_8cpp.html#a59c52febe3a70cc54a8af6d4c67fdee9">CheckType</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable, <span class="keywordtype">unsigned</span> &MatcherIndex,
+<a name="l02047"></a>02047           <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N, <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetLowering.html">TargetLowering</a> &TLI) {
+<a name="l02048"></a>02048   <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a> VT = (<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a>)MatcherTable[MatcherIndex++];
+<a name="l02049"></a>02049   <span class="keywordflow">if</span> (N.<a class="code" href="classllvm_1_1SDValue.html#a7d2ad4aa4277eb4e1138ff9791c8fbb7">getValueType</a>() == VT) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02050"></a>02050 
+<a name="l02051"></a>02051   <span class="comment">// Handle the case when VT is iPTR.</span>
+<a name="l02052"></a>02052   <span class="keywordflow">return</span> VT == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca081c1b396411c5dbcf5c0d9491f4f6ec">MVT::iPTR</a> && N.<a class="code" href="classllvm_1_1SDValue.html#a7d2ad4aa4277eb4e1138ff9791c8fbb7">getValueType</a>() == TLI.<a class="code" href="classllvm_1_1TargetLowering.html#a725d20a2d00a8b54cc01e6f02cb31522">getPointerTy</a>();
+<a name="l02053"></a>02053 }
+<a name="l02054"></a>02054 
+<a name="l02055"></a>02055 <a class="code" href="Compiler_8h.html#a338bdf98e9e600f582b7bef274bc9388">LLVM_ATTRIBUTE_ALWAYS_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l02056"></a><a class="code" href="SelectionDAGISel_8cpp.html#acae3c0616dac16e457abe75892673ad4">02056</a> <a class="code" href="SelectionDAGISel_8cpp.html#acae3c0616dac16e457abe75892673ad4">CheckChildType</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable, <span class="keywordtype">unsigned</span> &MatcherIndex,
+<a name="l02057"></a>02057                <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N, <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetLowering.html">TargetLowering</a> &TLI,
+<a name="l02058"></a>02058                <span class="keywordtype">unsigned</span> ChildNo) {
+<a name="l02059"></a>02059   <span class="keywordflow">if</span> (ChildNo >= N.<a class="code" href="classllvm_1_1SDValue.html#a5f0447ef8ec128563ad131b76e5062bd">getNumOperands</a>())
+<a name="l02060"></a>02060     <span class="keywordflow">return</span> <span class="keyword">false</span>;  <span class="comment">// Match fails if out of range child #.</span>
+<a name="l02061"></a>02061   <a class="code" href="SelectionDAGISel_8cpp.html#a59c52febe3a70cc54a8af6d4c67fdee9">return ::CheckType</a>(MatcherTable, MatcherIndex, N.<a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(ChildNo), TLI);
+<a name="l02062"></a>02062 }
+<a name="l02063"></a>02063 
+<a name="l02064"></a>02064 
+<a name="l02065"></a>02065 <a class="code" href="Compiler_8h.html#a338bdf98e9e600f582b7bef274bc9388">LLVM_ATTRIBUTE_ALWAYS_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l02066"></a><a class="code" href="SelectionDAGISel_8cpp.html#aaab015bad5b65423fd9921361c3c4e57">02066</a> <a class="code" href="SelectionDAGISel_8cpp.html#aaab015bad5b65423fd9921361c3c4e57">CheckCondCode</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable, <span class="keywordtype">unsigned</span> &MatcherIndex,
+<a name="l02067"></a>02067               <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N) {
+<a name="l02068"></a>02068   <span class="keywordflow">return</span> cast<CondCodeSDNode>(N)-><span class="keyword">get</span>() ==
+<a name="l02069"></a>02069       (<a class="code" href="namespacellvm_1_1ISD.html#ac3c3cf58d6d631af6a172457304d3d07">ISD::CondCode</a>)MatcherTable[MatcherIndex++];
+<a name="l02070"></a>02070 }
+<a name="l02071"></a>02071 
+<a name="l02072"></a>02072 <a class="code" href="Compiler_8h.html#a338bdf98e9e600f582b7bef274bc9388">LLVM_ATTRIBUTE_ALWAYS_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l02073"></a><a class="code" href="SelectionDAGISel_8cpp.html#ad989c21528eda8f431248737176cc3c4">02073</a> <a class="code" href="SelectionDAGISel_8cpp.html#ad989c21528eda8f431248737176cc3c4">CheckValueType</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable, <span class="keywordtype">unsigned</span> &MatcherIndex,
+<a name="l02074"></a>02074                <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N, <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetLowering.html">TargetLowering</a> &TLI) {
+<a name="l02075"></a>02075   <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a> VT = (<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a>)MatcherTable[MatcherIndex++];
+<a name="l02076"></a>02076   <span class="keywordflow">if</span> (cast<VTSDNode>(N)->getVT() == VT)
+<a name="l02077"></a>02077     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02078"></a>02078 
+<a name="l02079"></a>02079   <span class="comment">// Handle the case when VT is iPTR.</span>
+<a name="l02080"></a>02080   <span class="keywordflow">return</span> VT == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca081c1b396411c5dbcf5c0d9491f4f6ec">MVT::iPTR</a> && cast<VTSDNode>(N)->getVT() == TLI.<a class="code" href="classllvm_1_1TargetLowering.html#a725d20a2d00a8b54cc01e6f02cb31522">getPointerTy</a>();
+<a name="l02081"></a>02081 }
+<a name="l02082"></a>02082 
+<a name="l02083"></a>02083 <a class="code" href="Compiler_8h.html#a338bdf98e9e600f582b7bef274bc9388">LLVM_ATTRIBUTE_ALWAYS_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l02084"></a><a class="code" href="SelectionDAGISel_8cpp.html#a55ddd986b32899ac868a18ee9d1182a1">02084</a> <a class="code" href="SelectionDAGISel_8cpp.html#a55ddd986b32899ac868a18ee9d1182a1">CheckInteger</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable, <span class="keywordtype">unsigned</span> &MatcherIndex,
+<a name="l02085"></a>02085              <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N) {
+<a name="l02086"></a>02086   <a class="code" href="classint64__t.html">int64_t</a> Val = MatcherTable[MatcherIndex++];
+<a name="l02087"></a>02087   <span class="keywordflow">if</span> (Val & 128)
+<a name="l02088"></a>02088     Val = <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(Val, MatcherTable, MatcherIndex);
+<a name="l02089"></a>02089 
+<a name="l02090"></a>02090   <a class="code" href="classllvm_1_1ConstantSDNode.html">ConstantSDNode</a> *<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a> = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1ConstantSDNode.html">ConstantSDNode</a>>(N);
+<a name="l02091"></a>02091   <span class="keywordflow">return</span> C != 0 && C-><a class="code" href="classllvm_1_1ConstantSDNode.html#ae52ea754f0f064b6440e99103abea366">getSExtValue</a>() == Val;
+<a name="l02092"></a>02092 }
+<a name="l02093"></a>02093 
+<a name="l02094"></a>02094 <a class="code" href="Compiler_8h.html#a338bdf98e9e600f582b7bef274bc9388">LLVM_ATTRIBUTE_ALWAYS_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l02095"></a><a class="code" href="SelectionDAGISel_8cpp.html#a617864a293ee07b291bef2224ea10567">02095</a> <a class="code" href="SelectionDAGISel_8cpp.html#a617864a293ee07b291bef2224ea10567">CheckAndImm</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable, <span class="keywordtype">unsigned</span> &MatcherIndex,
+<a name="l02096"></a>02096             <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N, <span class="keyword">const</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html">SelectionDAGISel</a> &SDISel) {
+<a name="l02097"></a>02097   <a class="code" href="classint64__t.html">int64_t</a> Val = MatcherTable[MatcherIndex++];
+<a name="l02098"></a>02098   <span class="keywordflow">if</span> (Val & 128)
+<a name="l02099"></a>02099     Val = <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(Val, MatcherTable, MatcherIndex);
+<a name="l02100"></a>02100 
+<a name="l02101"></a>02101   <span class="keywordflow">if</span> (N-><a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() != <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ac513a7da1bf74fb3e3c594da8534f2d2" title="Bitwise operators - logical and, logical or, logical xor.">ISD::AND</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02102"></a>02102 
+<a name="l02103"></a>02103   <a class="code" href="classllvm_1_1ConstantSDNode.html">ConstantSDNode</a> *<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a> = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1ConstantSDNode.html">ConstantSDNode</a>>(N-><a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(1));
+<a name="l02104"></a>02104   <span class="keywordflow">return</span> C != 0 && SDISel.<a class="code" href="classllvm_1_1SelectionDAGISel.html#ad51b12121dcca6c724763203d1132498">CheckAndMask</a>(N.<a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(0), <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, Val);
+<a name="l02105"></a>02105 }
+<a name="l02106"></a>02106 
+<a name="l02107"></a>02107 <a class="code" href="Compiler_8h.html#a338bdf98e9e600f582b7bef274bc9388">LLVM_ATTRIBUTE_ALWAYS_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l02108"></a><a class="code" href="SelectionDAGISel_8cpp.html#a6699dbb00a8f802ae5f1db4599f93121">02108</a> <a class="code" href="SelectionDAGISel_8cpp.html#a6699dbb00a8f802ae5f1db4599f93121">CheckOrImm</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable, <span class="keywordtype">unsigned</span> &MatcherIndex,
+<a name="l02109"></a>02109            <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N, <span class="keyword">const</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html">SelectionDAGISel</a> &SDISel) {
+<a name="l02110"></a>02110   <a class="code" href="classint64__t.html">int64_t</a> Val = MatcherTable[MatcherIndex++];
+<a name="l02111"></a>02111   <span class="keywordflow">if</span> (Val & 128)
+<a name="l02112"></a>02112     Val = <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(Val, MatcherTable, MatcherIndex);
+<a name="l02113"></a>02113 
+<a name="l02114"></a>02114   <span class="keywordflow">if</span> (N-><a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() != <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a7415ab9f2172c59a2ee7c7a02afa56a4">ISD::OR</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02115"></a>02115 
+<a name="l02116"></a>02116   <a class="code" href="classllvm_1_1ConstantSDNode.html">ConstantSDNode</a> *<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a> = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1ConstantSDNode.html">ConstantSDNode</a>>(N-><a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(1));
+<a name="l02117"></a>02117   <span class="keywordflow">return</span> C != 0 && SDISel.<a class="code" href="classllvm_1_1SelectionDAGISel.html#a34ef61e9e1f8ff4fa700ad52648e19cf">CheckOrMask</a>(N.<a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(0), <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, Val);
+<a name="l02118"></a>02118 }
+<a name="l02119"></a>02119 <span class="comment"></span>
+<a name="l02120"></a>02120 <span class="comment">/// IsPredicateKnownToFail - If we know how and can do so without pushing a</span>
+<a name="l02121"></a>02121 <span class="comment">/// scope, evaluate the current node.  If the current predicate is known to</span>
+<a name="l02122"></a>02122 <span class="comment">/// fail, set Result=true and return anything.  If the current predicate is</span>
+<a name="l02123"></a>02123 <span class="comment">/// known to pass, set Result=false and return the MatcherIndex to continue</span>
+<a name="l02124"></a>02124 <span class="comment">/// with.  If the current predicate is unknown, set Result=false and return the</span>
+<a name="l02125"></a>02125 <span class="comment">/// MatcherIndex to continue with.</span>
+<a name="l02126"></a><a class="code" href="SelectionDAGISel_8cpp.html#a41976e1f6ca65fb7830e1f348d751000">02126</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="SelectionDAGISel_8cpp.html#a41976e1f6ca65fb7830e1f348d751000">IsPredicateKnownToFail</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *Table,
+<a name="l02127"></a>02127                                        <span class="keywordtype">unsigned</span> Index, <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N,
+<a name="l02128"></a>02128                                        <span class="keywordtype">bool</span> &Result,
+<a name="l02129"></a>02129                                        <span class="keyword">const</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html">SelectionDAGISel</a> &SDISel,
+<a name="l02130"></a>02130                  <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a><std::pair<SDValue, SDNode*> > &RecordedNodes) {
+<a name="l02131"></a>02131   <span class="keywordflow">switch</span> (Table[Index++]) {
+<a name="l02132"></a>02132   <span class="keywordflow">default</span>:
+<a name="l02133"></a>02133     Result = <span class="keyword">false</span>;
+<a name="l02134"></a>02134     <span class="keywordflow">return</span> Index-1;  <span class="comment">// Could not evaluate this predicate.</span>
+<a name="l02135"></a>02135   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2ac17440039d284c65ee3b7d5f9989f50c">SelectionDAGISel::OPC_CheckSame</a>:
+<a name="l02136"></a>02136     Result = !<a class="code" href="SelectionDAGISel_8cpp.html#a79923c0bb7ad7ead32b876800220d6b3" title="CheckSame - Implements OP_CheckSame.">::CheckSame</a>(Table, Index, N, RecordedNodes);
+<a name="l02137"></a>02137     <span class="keywordflow">return</span> Index;
+<a name="l02138"></a>02138   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a46a1f303e35f6feb3dabf3e588ef109b">SelectionDAGISel::OPC_CheckPatternPredicate</a>:
+<a name="l02139"></a>02139     Result = !<a class="code" href="SelectionDAGISel_8cpp.html#abb3b2c1fa23bf08df12215f52696c0f1" title="CheckPatternPredicate - Implements OP_CheckPatternPredicate.">::CheckPatternPredicate</a>(Table, Index, SDISel);
+<a name="l02140"></a>02140     <span class="keywordflow">return</span> Index;
+<a name="l02141"></a>02141   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a9bcd7019459f96271977dc7b7a0e42c7">SelectionDAGISel::OPC_CheckPredicate</a>:
+<a name="l02142"></a>02142     Result = !<a class="code" href="SelectionDAGISel_8cpp.html#a4c75c8c52c2be067a8825ce146452bc2" title="CheckNodePredicate - Implements OP_CheckNodePredicate.">::CheckNodePredicate</a>(Table, Index, SDISel, N.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>());
+<a name="l02143"></a>02143     <span class="keywordflow">return</span> Index;
+<a name="l02144"></a>02144   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2ae10cd161a6495fede5121b564d10ce2a">SelectionDAGISel::OPC_CheckOpcode</a>:
+<a name="l02145"></a>02145     Result = !<a class="code" href="SelectionDAGISel_8cpp.html#ae27ccd25e008885da31b6af396bbb0cf">::CheckOpcode</a>(Table, Index, N.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>());
+<a name="l02146"></a>02146     <span class="keywordflow">return</span> Index;
+<a name="l02147"></a>02147   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2ae3fd6bdaf8484f407123c016fac17bbb">SelectionDAGISel::OPC_CheckType</a>:
+<a name="l02148"></a>02148     Result = !<a class="code" href="SelectionDAGISel_8cpp.html#a59c52febe3a70cc54a8af6d4c67fdee9">::CheckType</a>(Table, Index, N, SDISel.<a class="code" href="classllvm_1_1SelectionDAGISel.html#ad114b2de47d6b8da17f3f60359e4d8e7">TLI</a>);
+<a name="l02149"></a>02149     <span class="keywordflow">return</span> Index;
+<a name="l02150"></a>02150   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a8c35dbaea22168300c0417f650be72a5">SelectionDAGISel::OPC_CheckChild0Type</a>:
+<a name="l02151"></a>02151   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a5bd4c5f999490a0b61230d3ed58122b7">SelectionDAGISel::OPC_CheckChild1Type</a>:
+<a name="l02152"></a>02152   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a7e7290f899b310f10094103102451001">SelectionDAGISel::OPC_CheckChild2Type</a>:
+<a name="l02153"></a>02153   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a04f261bfda135591bf8341f6a20a665e">SelectionDAGISel::OPC_CheckChild3Type</a>:
+<a name="l02154"></a>02154   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a8f58a385e467906cfa60bb96ec84508f">SelectionDAGISel::OPC_CheckChild4Type</a>:
+<a name="l02155"></a>02155   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a378a8e72b2fc7c4a0cf9ac5ae724a0ea">SelectionDAGISel::OPC_CheckChild5Type</a>:
+<a name="l02156"></a>02156   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a136ee3a03a1bab562927a4e0ac11fbbc">SelectionDAGISel::OPC_CheckChild6Type</a>:
+<a name="l02157"></a>02157   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a1fd783d02f34d56b77c1907ed6e71966">SelectionDAGISel::OPC_CheckChild7Type</a>:
+<a name="l02158"></a>02158     Result = !<a class="code" href="SelectionDAGISel_8cpp.html#acae3c0616dac16e457abe75892673ad4">::CheckChildType</a>(Table, Index, N, SDISel.<a class="code" href="classllvm_1_1SelectionDAGISel.html#ad114b2de47d6b8da17f3f60359e4d8e7">TLI</a>,
+<a name="l02159"></a>02159                         Table[Index-1] - <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a8c35dbaea22168300c0417f650be72a5">SelectionDAGISel::OPC_CheckChild0Type</a>);
+<a name="l02160"></a>02160     <span class="keywordflow">return</span> Index;
+<a name="l02161"></a>02161   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a8f80287bd79b4dda1de0fb810dbb0ecd">SelectionDAGISel::OPC_CheckCondCode</a>:
+<a name="l02162"></a>02162     Result = !<a class="code" href="SelectionDAGISel_8cpp.html#aaab015bad5b65423fd9921361c3c4e57">::CheckCondCode</a>(Table, Index, N);
+<a name="l02163"></a>02163     <span class="keywordflow">return</span> Index;
+<a name="l02164"></a>02164   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a25c8c32aaa6b79885859cebc7ff11ae6">SelectionDAGISel::OPC_CheckValueType</a>:
+<a name="l02165"></a>02165     Result = !<a class="code" href="SelectionDAGISel_8cpp.html#ad989c21528eda8f431248737176cc3c4">::CheckValueType</a>(Table, Index, N, SDISel.<a class="code" href="classllvm_1_1SelectionDAGISel.html#ad114b2de47d6b8da17f3f60359e4d8e7">TLI</a>);
+<a name="l02166"></a>02166     <span class="keywordflow">return</span> Index;
+<a name="l02167"></a>02167   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a797344a4f66b9d2c2c4487a3bcffa98f">SelectionDAGISel::OPC_CheckInteger</a>:
+<a name="l02168"></a>02168     Result = !<a class="code" href="SelectionDAGISel_8cpp.html#a55ddd986b32899ac868a18ee9d1182a1">::CheckInteger</a>(Table, Index, N);
+<a name="l02169"></a>02169     <span class="keywordflow">return</span> Index;
+<a name="l02170"></a>02170   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a762f7415efdb5556233c801b1ec86509">SelectionDAGISel::OPC_CheckAndImm</a>:
+<a name="l02171"></a>02171     Result = !<a class="code" href="SelectionDAGISel_8cpp.html#a617864a293ee07b291bef2224ea10567">::CheckAndImm</a>(Table, Index, N, SDISel);
+<a name="l02172"></a>02172     <span class="keywordflow">return</span> Index;
+<a name="l02173"></a>02173   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a07f7c58b8c512a9e943c07c7210b6f72">SelectionDAGISel::OPC_CheckOrImm</a>:
+<a name="l02174"></a>02174     Result = !<a class="code" href="SelectionDAGISel_8cpp.html#a6699dbb00a8f802ae5f1db4599f93121">::CheckOrImm</a>(Table, Index, N, SDISel);
+<a name="l02175"></a>02175     <span class="keywordflow">return</span> Index;
+<a name="l02176"></a>02176   }
+<a name="l02177"></a>02177 }
+<a name="l02178"></a>02178 
+<a name="l02179"></a>02179 <span class="keyword">namespace </span>{
+<a name="l02180"></a>02180 
+<a name="l02181"></a>02181 <span class="keyword">struct </span>MatchScope {<span class="comment"></span>
+<a name="l02182"></a>02182 <span class="comment">  /// FailIndex - If this match fails, this is the index to continue with.</span>
+<a name="l02183"></a>02183 <span class="comment"></span>  <span class="keywordtype">unsigned</span> FailIndex;
+<a name="l02184"></a>02184 <span class="comment"></span>
+<a name="l02185"></a>02185 <span class="comment">  /// NodeStack - The node stack when the scope was formed.</span>
+<a name="l02186"></a>02186 <span class="comment"></span>  <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SDValue, 4></a> NodeStack;
+<a name="l02187"></a>02187 <span class="comment"></span>
+<a name="l02188"></a>02188 <span class="comment">  /// NumRecordedNodes - The number of recorded nodes when the scope was formed.</span>
+<a name="l02189"></a>02189 <span class="comment"></span>  <span class="keywordtype">unsigned</span> NumRecordedNodes;
+<a name="l02190"></a>02190 <span class="comment"></span>
+<a name="l02191"></a>02191 <span class="comment">  /// NumMatchedMemRefs - The number of matched memref entries.</span>
+<a name="l02192"></a>02192 <span class="comment"></span>  <span class="keywordtype">unsigned</span> NumMatchedMemRefs;
+<a name="l02193"></a>02193 <span class="comment"></span>
+<a name="l02194"></a>02194 <span class="comment">  /// InputChain/InputGlue - The current chain/glue</span>
+<a name="l02195"></a>02195 <span class="comment"></span>  <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> InputChain, InputGlue;
+<a name="l02196"></a>02196 <span class="comment"></span>
+<a name="l02197"></a>02197 <span class="comment">  /// HasChainNodesMatched - True if the ChainNodesMatched list is non-empty.</span>
+<a name="l02198"></a>02198 <span class="comment"></span>  <span class="keywordtype">bool</span> HasChainNodesMatched, HasGlueResultNodesMatched;
+<a name="l02199"></a>02199 };
+<a name="l02200"></a>02200 
+<a name="l02201"></a>02201 }
+<a name="l02202"></a>02202 
+<a name="l02203"></a>02203 <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *<a class="code" href="classllvm_1_1SelectionDAGISel.html#a301512eb377440a6ab0ab574ca7b82e2">SelectionDAGISel::</a>
+<a name="l02204"></a><a class="code" href="classllvm_1_1SelectionDAGISel.html#a301512eb377440a6ab0ab574ca7b82e2">02204</a> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a301512eb377440a6ab0ab574ca7b82e2">SelectCodeCommon</a>(<a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *NodeToMatch, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *MatcherTable,
+<a name="l02205"></a>02205                  <span class="keywordtype">unsigned</span> TableSize) {
+<a name="l02206"></a>02206   <span class="comment">// FIXME: Should these even be selected?  Handle these cases in the caller?</span>
+<a name="l02207"></a>02207   <span class="keywordflow">switch</span> (NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>()) {
+<a name="l02208"></a>02208   <span class="keywordflow">default</span>:
+<a name="l02209"></a>02209     <span class="keywordflow">break</span>;
+<a name="l02210"></a>02210   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a926013f6dca240eca95aca66c8d3e74b" title="EntryToken - This is the marker used to indicate the start of a region.">ISD::EntryToken</a>:       <span class="comment">// These nodes remain the same.</span>
+<a name="l02211"></a>02211   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">ISD::BasicBlock</a>:
+<a name="l02212"></a>02212   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a419e8283a58d2b1b86591fa7f18ccfd9">ISD::Register</a>:
+<a name="l02213"></a>02213   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a7e54881d7b0838c37485e4c79d215d07">ISD::RegisterMask</a>:
+<a name="l02214"></a>02214   <span class="comment">//case ISD::VALUETYPE:</span>
+<a name="l02215"></a>02215   <span class="comment">//case ISD::CONDCODE:</span>
+<a name="l02216"></a>02216   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ab508f11d38b4596451c6333f7510daa3" title="HANDLENODE node - Used as a handle for various purposes.">ISD::HANDLENODE</a>:
+<a name="l02217"></a>02217   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a0420c9663564b439d19509ff77eb6845">ISD::MDNODE_SDNODE</a>:
+<a name="l02218"></a>02218   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ac479e53ca98903b1028ec80e12fb0af8">ISD::TargetConstant</a>:
+<a name="l02219"></a>02219   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a95cd714ab601765342e2ec9f6ba2cb34">ISD::TargetConstantFP</a>:
+<a name="l02220"></a>02220   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a038a7f124b4118456a27a739c03650bf">ISD::TargetConstantPool</a>:
+<a name="l02221"></a>02221   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110aa84894f4966964ef9fc79f9515a6c875">ISD::TargetFrameIndex</a>:
+<a name="l02222"></a>02222   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a59b314018a929255951f01f8daaae72f">ISD::TargetExternalSymbol</a>:
+<a name="l02223"></a>02223   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a1b7eba375863a0e80549eb1a782c5683">ISD::TargetBlockAddress</a>:
+<a name="l02224"></a>02224   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a603c0651ff8c3a929c5e1d8b9a8f14cb">ISD::TargetJumpTable</a>:
+<a name="l02225"></a>02225   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110afc9ad7857b7faf49dcde3dcf434e22a6">ISD::TargetGlobalTLSAddress</a>:
+<a name="l02226"></a>02226   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a87b8176af163ee944af127081d24f4a2">ISD::TargetGlobalAddress</a>:
+<a name="l02227"></a>02227   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ad469508535ce2082a1ab1f0e429187b8">ISD::TokenFactor</a>:
+<a name="l02228"></a>02228   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a84c47705bcf7271413738ae8bf3871e6">ISD::CopyFromReg</a>:
+<a name="l02229"></a>02229   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a93bc27ca4d9e211c54b0d9efb660f080">ISD::CopyToReg</a>:
+<a name="l02230"></a>02230   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a4c1f7e0dc3af92b9cfd0d5d11231ddc1">ISD::EH_LABEL</a>:
+<a name="l02231"></a>02231   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110aada0b926e7ebc2bc55d158d4c37bdcca">ISD::LIFETIME_START</a>:
+<a name="l02232"></a>02232   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ab49301b20458a7f312a0919e3c8abdb2">ISD::LIFETIME_END</a>:
+<a name="l02233"></a>02233     NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#a5689e9ae35c6ceb3b9377299c98e0e97" title="setNodeId - Set unique node id.">setNodeId</a>(-1); <span class="comment">// Mark selected.</span>
+<a name="l02234"></a>02234     <span class="keywordflow">return</span> 0;
+<a name="l02235"></a>02235   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110aee4f13218bdbb5c5697f7e786618ecb2">ISD::AssertSext</a>:
+<a name="l02236"></a>02236   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110af23301e60475124fd80a2cb51f6ba863">ISD::AssertZext</a>:
+<a name="l02237"></a>02237     <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac630ccda26fea2f45afa3fb89bc1a8f4">ReplaceAllUsesOfValueWith</a>(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(NodeToMatch, 0),
+<a name="l02238"></a>02238                                       NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(0));
+<a name="l02239"></a>02239     <span class="keywordflow">return</span> 0;
+<a name="l02240"></a>02240   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ae35d57f3c020672748fcc95607348986">ISD::INLINEASM</a>: <span class="keywordflow">return</span> Select_INLINEASM(NodeToMatch);
+<a name="l02241"></a>02241   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a7c6d8f265e9e16e5debdb9a536b55d3d" title="UNDEF - An undefined node.">ISD::UNDEF</a>:     <span class="keywordflow">return</span> Select_UNDEF(NodeToMatch);
+<a name="l02242"></a>02242   }
+<a name="l02243"></a>02243 
+<a name="l02244"></a>02244   assert(!NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#a7ef138746b04be6d07091b9ba49d74da">isMachineOpcode</a>() && <span class="stringliteral">"Node already selected!"</span>);
+<a name="l02245"></a>02245 
+<a name="l02246"></a>02246   <span class="comment">// Set up the node stack with NodeToMatch as the only node on the stack.</span>
+<a name="l02247"></a>02247   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SDValue, 8></a> NodeStack;
+<a name="l02248"></a>02248   <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N = <a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(NodeToMatch, 0);
+<a name="l02249"></a>02249   NodeStack.push_back(N);
+<a name="l02250"></a>02250 
+<a name="l02251"></a>02251   <span class="comment">// MatchScopes - Scopes used when matching, if a match failure happens, this</span>
+<a name="l02252"></a>02252   <span class="comment">// indicates where to continue checking.</span>
+<a name="l02253"></a>02253   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<MatchScope, 8></a> MatchScopes;
+<a name="l02254"></a>02254 
+<a name="l02255"></a>02255   <span class="comment">// RecordedNodes - This is the set of nodes that have been recorded by the</span>
+<a name="l02256"></a>02256   <span class="comment">// state machine.  The second value is the parent of the node, or null if the</span>
+<a name="l02257"></a>02257   <span class="comment">// root is recorded.</span>
+<a name="l02258"></a>02258   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<std::pair<SDValue, SDNode*></a>, 8> RecordedNodes;
+<a name="l02259"></a>02259 
+<a name="l02260"></a>02260   <span class="comment">// MatchedMemRefs - This is the set of MemRef's we've seen in the input</span>
+<a name="l02261"></a>02261   <span class="comment">// pattern.</span>
+<a name="l02262"></a>02262   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<MachineMemOperand*, 2></a> MatchedMemRefs;
+<a name="l02263"></a>02263 
+<a name="l02264"></a>02264   <span class="comment">// These are the current input chain and glue for use when generating nodes.</span>
+<a name="l02265"></a>02265   <span class="comment">// Various Emit operations change these.  For example, emitting a copytoreg</span>
+<a name="l02266"></a>02266   <span class="comment">// uses and updates these.</span>
+<a name="l02267"></a>02267   <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> InputChain, InputGlue;
+<a name="l02268"></a>02268 
+<a name="l02269"></a>02269   <span class="comment">// ChainNodesMatched - If a pattern matches nodes that have input/output</span>
+<a name="l02270"></a>02270   <span class="comment">// chains, the OPC_EmitMergeInputChains operation is emitted which indicates</span>
+<a name="l02271"></a>02271   <span class="comment">// which ones they are.  The result is captured into this list so that we can</span>
+<a name="l02272"></a>02272   <span class="comment">// update the chain results when the pattern is complete.</span>
+<a name="l02273"></a>02273   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SDNode*, 3></a> ChainNodesMatched;
+<a name="l02274"></a>02274   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SDNode*, 3></a> GlueResultNodesMatched;
+<a name="l02275"></a>02275 
+<a name="l02276"></a>02276   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"ISEL: Starting pattern match on root node: "</span>;
+<a name="l02277"></a>02277         NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#a535ca517df1b4ae62e75475141e65787" title="dump - Dump this node, for debugging.">dump</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>);
+<a name="l02278"></a>02278         <a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="charliteral">'\n'</span>);
+<a name="l02279"></a>02279 
+<a name="l02280"></a>02280   <span class="comment">// Determine where to start the interpreter.  Normally we start at opcode #0,</span>
+<a name="l02281"></a>02281   <span class="comment">// but if the state machine starts with an OPC_SwitchOpcode, then we</span>
+<a name="l02282"></a>02282   <span class="comment">// accelerate the first lookup (which is guaranteed to be hot) with the</span>
+<a name="l02283"></a>02283   <span class="comment">// OpcodeOffset table.</span>
+<a name="l02284"></a>02284   <span class="keywordtype">unsigned</span> MatcherIndex = 0;
+<a name="l02285"></a>02285 
+<a name="l02286"></a>02286   <span class="keywordflow">if</span> (!OpcodeOffset.empty()) {
+<a name="l02287"></a>02287     <span class="comment">// Already computed the OpcodeOffset table, just index into it.</span>
+<a name="l02288"></a>02288     <span class="keywordflow">if</span> (N.<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() < OpcodeOffset.size())
+<a name="l02289"></a>02289       MatcherIndex = OpcodeOffset[N.<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>()];
+<a name="l02290"></a>02290     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"  Initial Opcode index to "</span> << MatcherIndex << <span class="stringliteral">"\n"</span>);
+<a name="l02291"></a>02291 
+<a name="l02292"></a>02292   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (MatcherTable[0] == <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a2827e53ef7420b3a5ad346366fa927b5">OPC_SwitchOpcode</a>) {
+<a name="l02293"></a>02293     <span class="comment">// Otherwise, the table isn't computed, but the state machine does start</span>
+<a name="l02294"></a>02294     <span class="comment">// with an OPC_SwitchOpcode instruction.  Populate the table now, since this</span>
+<a name="l02295"></a>02295     <span class="comment">// is the first time we're selecting an instruction.</span>
+<a name="l02296"></a>02296     <span class="keywordtype">unsigned</span> Idx = 1;
+<a name="l02297"></a>02297     <span class="keywordflow">while</span> (1) {
+<a name="l02298"></a>02298       <span class="comment">// Get the size of this case.</span>
+<a name="l02299"></a>02299       <span class="keywordtype">unsigned</span> CaseSize = MatcherTable[Idx++];
+<a name="l02300"></a>02300       <span class="keywordflow">if</span> (CaseSize & 128)
+<a name="l02301"></a>02301         CaseSize = <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(CaseSize, MatcherTable, Idx);
+<a name="l02302"></a>02302       <span class="keywordflow">if</span> (CaseSize == 0) <span class="keywordflow">break</span>;
+<a name="l02303"></a>02303 
+<a name="l02304"></a>02304       <span class="comment">// Get the opcode, add the index to the table.</span>
+<a name="l02305"></a>02305       uint16_t Opc = MatcherTable[Idx++];
+<a name="l02306"></a>02306       Opc |= (<span class="keywordtype">unsigned</span> short)MatcherTable[Idx++] << 8;
+<a name="l02307"></a>02307       <span class="keywordflow">if</span> (Opc >= OpcodeOffset.size())
+<a name="l02308"></a>02308         OpcodeOffset.resize((Opc+1)*2);
+<a name="l02309"></a>02309       OpcodeOffset[Opc] = Idx;
+<a name="l02310"></a>02310       Idx += CaseSize;
+<a name="l02311"></a>02311     }
+<a name="l02312"></a>02312 
+<a name="l02313"></a>02313     <span class="comment">// Okay, do the lookup for the first opcode.</span>
+<a name="l02314"></a>02314     <span class="keywordflow">if</span> (N.<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() < OpcodeOffset.size())
+<a name="l02315"></a>02315       MatcherIndex = OpcodeOffset[N.<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>()];
+<a name="l02316"></a>02316   }
+<a name="l02317"></a>02317 
+<a name="l02318"></a>02318   <span class="keywordflow">while</span> (1) {
+<a name="l02319"></a>02319     assert(MatcherIndex < TableSize && <span class="stringliteral">"Invalid index"</span>);
+<a name="l02320"></a>02320 <span class="preprocessor">#ifndef NDEBUG</span>
+<a name="l02321"></a>02321 <span class="preprocessor"></span>    <span class="keywordtype">unsigned</span> CurrentOpcodeIndex = MatcherIndex;
+<a name="l02322"></a>02322 <span class="preprocessor">#endif</span>
+<a name="l02323"></a>02323 <span class="preprocessor"></span>    <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2">BuiltinOpcodes</a> Opcode = (<a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2">BuiltinOpcodes</a>)MatcherTable[MatcherIndex++];
+<a name="l02324"></a>02324     <span class="keywordflow">switch</span> (Opcode) {
+<a name="l02325"></a>02325     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a00188f1375143944dbffe1beb1eb3297">OPC_Scope</a>: {
+<a name="l02326"></a>02326       <span class="comment">// Okay, the semantics of this operation are that we should push a scope</span>
+<a name="l02327"></a>02327       <span class="comment">// then evaluate the first child.  However, pushing a scope only to have</span>
+<a name="l02328"></a>02328       <span class="comment">// the first check fail (which then pops it) is inefficient.  If we can</span>
+<a name="l02329"></a>02329       <span class="comment">// determine immediately that the first check (or first several) will</span>
+<a name="l02330"></a>02330       <span class="comment">// immediately fail, don't even bother pushing a scope for them.</span>
+<a name="l02331"></a>02331       <span class="keywordtype">unsigned</span> FailIndex;
+<a name="l02332"></a>02332 
+<a name="l02333"></a>02333       <span class="keywordflow">while</span> (1) {
+<a name="l02334"></a>02334         <span class="keywordtype">unsigned</span> NumToSkip = MatcherTable[MatcherIndex++];
+<a name="l02335"></a>02335         <span class="keywordflow">if</span> (NumToSkip & 128)
+<a name="l02336"></a>02336           NumToSkip = <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(NumToSkip, MatcherTable, MatcherIndex);
+<a name="l02337"></a>02337         <span class="comment">// Found the end of the scope with no match.</span>
+<a name="l02338"></a>02338         <span class="keywordflow">if</span> (NumToSkip == 0) {
+<a name="l02339"></a>02339           FailIndex = 0;
+<a name="l02340"></a>02340           <span class="keywordflow">break</span>;
+<a name="l02341"></a>02341         }
+<a name="l02342"></a>02342 
+<a name="l02343"></a>02343         FailIndex = MatcherIndex+NumToSkip;
+<a name="l02344"></a>02344 
+<a name="l02345"></a>02345         <span class="keywordtype">unsigned</span> MatcherIndexOfPredicate = MatcherIndex;
+<a name="l02346"></a>02346         (void)MatcherIndexOfPredicate; <span class="comment">// silence warning.</span>
+<a name="l02347"></a>02347 
+<a name="l02348"></a>02348         <span class="comment">// If we can't evaluate this predicate without pushing a scope (e.g. if</span>
+<a name="l02349"></a>02349         <span class="comment">// it is a 'MoveParent') or if the predicate succeeds on this node, we</span>
+<a name="l02350"></a>02350         <span class="comment">// push the scope and evaluate the full predicate chain.</span>
+<a name="l02351"></a>02351         <span class="keywordtype">bool</span> Result;
+<a name="l02352"></a>02352         MatcherIndex = <a class="code" href="SelectionDAGISel_8cpp.html#a41976e1f6ca65fb7830e1f348d751000">IsPredicateKnownToFail</a>(MatcherTable, MatcherIndex, N,
+<a name="l02353"></a>02353                                               Result, *<span class="keyword">this</span>, RecordedNodes);
+<a name="l02354"></a>02354         <span class="keywordflow">if</span> (!Result)
+<a name="l02355"></a>02355           <span class="keywordflow">break</span>;
+<a name="l02356"></a>02356 
+<a name="l02357"></a>02357         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"  Skipped scope entry (due to false predicate) at "</span>
+<a name="l02358"></a>02358                      << <span class="stringliteral">"index "</span> << MatcherIndexOfPredicate
+<a name="l02359"></a>02359                      << <span class="stringliteral">", continuing at "</span> << FailIndex << <span class="stringliteral">"\n"</span>);
+<a name="l02360"></a>02360         ++NumDAGIselRetries;
+<a name="l02361"></a>02361 
+<a name="l02362"></a>02362         <span class="comment">// Otherwise, we know that this case of the Scope is guaranteed to fail,</span>
+<a name="l02363"></a>02363         <span class="comment">// move to the next case.</span>
+<a name="l02364"></a>02364         MatcherIndex = FailIndex;
+<a name="l02365"></a>02365       }
+<a name="l02366"></a>02366 
+<a name="l02367"></a>02367       <span class="comment">// If the whole scope failed to match, bail.</span>
+<a name="l02368"></a>02368       <span class="keywordflow">if</span> (FailIndex == 0) <span class="keywordflow">break</span>;
+<a name="l02369"></a>02369 
+<a name="l02370"></a>02370       <span class="comment">// Push a MatchScope which indicates where to go if the first child fails</span>
+<a name="l02371"></a>02371       <span class="comment">// to match.</span>
+<a name="l02372"></a>02372       MatchScope NewEntry;
+<a name="l02373"></a>02373       NewEntry.FailIndex = FailIndex;
+<a name="l02374"></a>02374       NewEntry.NodeStack.append(NodeStack.begin(), NodeStack.end());
+<a name="l02375"></a>02375       NewEntry.NumRecordedNodes = RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>();
+<a name="l02376"></a>02376       NewEntry.NumMatchedMemRefs = MatchedMemRefs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>();
+<a name="l02377"></a>02377       NewEntry.InputChain = InputChain;
+<a name="l02378"></a>02378       NewEntry.InputGlue = InputGlue;
+<a name="l02379"></a>02379       NewEntry.HasChainNodesMatched = !ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>();
+<a name="l02380"></a>02380       NewEntry.HasGlueResultNodesMatched = !GlueResultNodesMatched.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>();
+<a name="l02381"></a>02381       MatchScopes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(NewEntry);
+<a name="l02382"></a>02382       <span class="keywordflow">continue</span>;
+<a name="l02383"></a>02383     }
+<a name="l02384"></a>02384     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2ab10ccf4011b7d68e3fff1cbb338a57d3">OPC_RecordNode</a>: {
+<a name="l02385"></a>02385       <span class="comment">// Remember this node, it may end up being an operand in the pattern.</span>
+<a name="l02386"></a>02386       <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *Parent = 0;
+<a name="l02387"></a>02387       <span class="keywordflow">if</span> (NodeStack.size() > 1)
+<a name="l02388"></a>02388         Parent = NodeStack[NodeStack.size()-2].getNode();
+<a name="l02389"></a>02389       RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(std::make_pair(N, Parent));
+<a name="l02390"></a>02390       <span class="keywordflow">continue</span>;
+<a name="l02391"></a>02391     }
+<a name="l02392"></a>02392 
+<a name="l02393"></a>02393     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2ac2d86704b188ca386078d06e8ccd69b7">OPC_RecordChild0</a>: <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a045a4df90d2c6e9d694d6acf5523f70d">OPC_RecordChild1</a>:
+<a name="l02394"></a>02394     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2af7f508ff13976380cf892b2ee6aaf626">OPC_RecordChild2</a>: <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a2a5b1298d30ff2f9124cf1619b4736a3">OPC_RecordChild3</a>:
+<a name="l02395"></a>02395     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a89d569a5498ad39550c58760f7b78b15">OPC_RecordChild4</a>: <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a75516657cf8e999f42f4465e9f3d36af">OPC_RecordChild5</a>:
+<a name="l02396"></a>02396     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a6f70cafa3e6d4d88796ccb1d42c771f4">OPC_RecordChild6</a>: <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a116d7d851a1d3a533aaa1debd4a3ce61">OPC_RecordChild7</a>: {
+<a name="l02397"></a>02397       <span class="keywordtype">unsigned</span> ChildNo = Opcode-<a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2ac2d86704b188ca386078d06e8ccd69b7">OPC_RecordChild0</a>;
+<a name="l02398"></a>02398       <span class="keywordflow">if</span> (ChildNo >= N.<a class="code" href="classllvm_1_1SDValue.html#a5f0447ef8ec128563ad131b76e5062bd">getNumOperands</a>())
+<a name="l02399"></a>02399         <span class="keywordflow">break</span>;  <span class="comment">// Match fails if out of range child #.</span>
+<a name="l02400"></a>02400 
+<a name="l02401"></a>02401       RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(std::make_pair(N-><a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(ChildNo),
+<a name="l02402"></a>02402                                              N.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>()));
+<a name="l02403"></a>02403       <span class="keywordflow">continue</span>;
+<a name="l02404"></a>02404     }
+<a name="l02405"></a>02405     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a6815b3a19b46de45ad1d6ca08dc18f10">OPC_RecordMemRef</a>:
+<a name="l02406"></a>02406       MatchedMemRefs.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(cast<MemSDNode>(N)->getMemOperand());
+<a name="l02407"></a>02407       <span class="keywordflow">continue</span>;
+<a name="l02408"></a>02408 
+<a name="l02409"></a>02409     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a23a17ff570de8decffae4f71a8093c9f">OPC_CaptureGlueInput</a>:
+<a name="l02410"></a>02410       <span class="comment">// If the current node has an input glue, capture it in InputGlue.</span>
+<a name="l02411"></a>02411       <span class="keywordflow">if</span> (N-><a class="code" href="classllvm_1_1SDValue.html#a5f0447ef8ec128563ad131b76e5062bd">getNumOperands</a>() != 0 &&
+<a name="l02412"></a>02412           N-><a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(N-><a class="code" href="classllvm_1_1SDValue.html#a5f0447ef8ec128563ad131b76e5062bd">getNumOperands</a>()-1).getValueType() == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a>)
+<a name="l02413"></a>02413         InputGlue = N-><a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(N-><a class="code" href="classllvm_1_1SDValue.html#a5f0447ef8ec128563ad131b76e5062bd">getNumOperands</a>()-1);
+<a name="l02414"></a>02414       <span class="keywordflow">continue</span>;
+<a name="l02415"></a>02415 
+<a name="l02416"></a>02416     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a0fc7a263e2171d96d675072e92e18769">OPC_MoveChild</a>: {
+<a name="l02417"></a>02417       <span class="keywordtype">unsigned</span> ChildNo = MatcherTable[MatcherIndex++];
+<a name="l02418"></a>02418       <span class="keywordflow">if</span> (ChildNo >= N.<a class="code" href="classllvm_1_1SDValue.html#a5f0447ef8ec128563ad131b76e5062bd">getNumOperands</a>())
+<a name="l02419"></a>02419         <span class="keywordflow">break</span>;  <span class="comment">// Match fails if out of range child #.</span>
+<a name="l02420"></a>02420       N = N.<a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(ChildNo);
+<a name="l02421"></a>02421       NodeStack.push_back(N);
+<a name="l02422"></a>02422       <span class="keywordflow">continue</span>;
+<a name="l02423"></a>02423     }
+<a name="l02424"></a>02424 
+<a name="l02425"></a>02425     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a198333ee8be077e6255b7efbbb2f8b98">OPC_MoveParent</a>:
+<a name="l02426"></a>02426       <span class="comment">// Pop the current node off the NodeStack.</span>
+<a name="l02427"></a>02427       NodeStack.pop_back();
+<a name="l02428"></a>02428       assert(!NodeStack.empty() && <span class="stringliteral">"Node stack imbalance!"</span>);
+<a name="l02429"></a>02429       N = NodeStack.back();
+<a name="l02430"></a>02430       <span class="keywordflow">continue</span>;
+<a name="l02431"></a>02431 
+<a name="l02432"></a>02432     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2ac17440039d284c65ee3b7d5f9989f50c">OPC_CheckSame</a>:
+<a name="l02433"></a>02433       <span class="keywordflow">if</span> (!::<a class="code" href="SelectionDAGISel_8cpp.html#a79923c0bb7ad7ead32b876800220d6b3" title="CheckSame - Implements OP_CheckSame.">CheckSame</a>(MatcherTable, MatcherIndex, N, RecordedNodes)) <span class="keywordflow">break</span>;
+<a name="l02434"></a>02434       <span class="keywordflow">continue</span>;
+<a name="l02435"></a>02435     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a46a1f303e35f6feb3dabf3e588ef109b">OPC_CheckPatternPredicate</a>:
+<a name="l02436"></a>02436       <span class="keywordflow">if</span> (!::<a class="code" href="classllvm_1_1SelectionDAGISel.html#a34b4d24412618dbb8dd73e03fcc389aa">CheckPatternPredicate</a>(MatcherTable, MatcherIndex, *<span class="keyword">this</span>)) <span class="keywordflow">break</span>;
+<a name="l02437"></a>02437       <span class="keywordflow">continue</span>;
+<a name="l02438"></a>02438     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a9bcd7019459f96271977dc7b7a0e42c7">OPC_CheckPredicate</a>:
+<a name="l02439"></a>02439       <span class="keywordflow">if</span> (!::<a class="code" href="classllvm_1_1SelectionDAGISel.html#a63d859c0c780cc6883e8e7e18c48fbf9">CheckNodePredicate</a>(MatcherTable, MatcherIndex, *<span class="keyword">this</span>,
+<a name="l02440"></a>02440                                 N.getNode()))
+<a name="l02441"></a>02441         <span class="keywordflow">break</span>;
+<a name="l02442"></a>02442       <span class="keywordflow">continue</span>;
+<a name="l02443"></a>02443     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2af337a75552fc71e0a3fe416c42029934">OPC_CheckComplexPat</a>: {
+<a name="l02444"></a>02444       <span class="keywordtype">unsigned</span> CPNum = MatcherTable[MatcherIndex++];
+<a name="l02445"></a>02445       <span class="keywordtype">unsigned</span> RecNo = MatcherTable[MatcherIndex++];
+<a name="l02446"></a>02446       assert(RecNo < RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() && <span class="stringliteral">"Invalid CheckComplexPat"</span>);
+<a name="l02447"></a>02447       <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1SelectionDAGISel.html#a3b843300218cb16620b8958ac4883fc1">CheckComplexPattern</a>(NodeToMatch, RecordedNodes[RecNo].second,
+<a name="l02448"></a>02448                                RecordedNodes[RecNo].first, CPNum,
+<a name="l02449"></a>02449                                RecordedNodes))
+<a name="l02450"></a>02450         <span class="keywordflow">break</span>;
+<a name="l02451"></a>02451       <span class="keywordflow">continue</span>;
+<a name="l02452"></a>02452     }
+<a name="l02453"></a>02453     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2ae10cd161a6495fede5121b564d10ce2a">OPC_CheckOpcode</a>:
+<a name="l02454"></a>02454       <span class="keywordflow">if</span> (!::<a class="code" href="SelectionDAGISel_8cpp.html#ae27ccd25e008885da31b6af396bbb0cf">CheckOpcode</a>(MatcherTable, MatcherIndex, N.getNode())) <span class="keywordflow">break</span>;
+<a name="l02455"></a>02455       <span class="keywordflow">continue</span>;
+<a name="l02456"></a>02456 
+<a name="l02457"></a>02457     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2ae3fd6bdaf8484f407123c016fac17bbb">OPC_CheckType</a>:
+<a name="l02458"></a>02458       <span class="keywordflow">if</span> (!::<a class="code" href="SelectionDAGISel_8cpp.html#a59c52febe3a70cc54a8af6d4c67fdee9">CheckType</a>(MatcherTable, MatcherIndex, N, <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad114b2de47d6b8da17f3f60359e4d8e7">TLI</a>)) <span class="keywordflow">break</span>;
+<a name="l02459"></a>02459       <span class="keywordflow">continue</span>;
+<a name="l02460"></a>02460 
+<a name="l02461"></a>02461     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a2827e53ef7420b3a5ad346366fa927b5">OPC_SwitchOpcode</a>: {
+<a name="l02462"></a>02462       <span class="keywordtype">unsigned</span> CurNodeOpcode = N.getOpcode();
+<a name="l02463"></a>02463       <span class="keywordtype">unsigned</span> SwitchStart = MatcherIndex-1; (void)SwitchStart;
+<a name="l02464"></a>02464       <span class="keywordtype">unsigned</span> CaseSize;
+<a name="l02465"></a>02465       <span class="keywordflow">while</span> (1) {
+<a name="l02466"></a>02466         <span class="comment">// Get the size of this case.</span>
+<a name="l02467"></a>02467         CaseSize = MatcherTable[MatcherIndex++];
+<a name="l02468"></a>02468         <span class="keywordflow">if</span> (CaseSize & 128)
+<a name="l02469"></a>02469           CaseSize = <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(CaseSize, MatcherTable, MatcherIndex);
+<a name="l02470"></a>02470         <span class="keywordflow">if</span> (CaseSize == 0) <span class="keywordflow">break</span>;
+<a name="l02471"></a>02471 
+<a name="l02472"></a>02472         uint16_t Opc = MatcherTable[MatcherIndex++];
+<a name="l02473"></a>02473         Opc |= (<span class="keywordtype">unsigned</span> short)MatcherTable[MatcherIndex++] << 8;
+<a name="l02474"></a>02474 
+<a name="l02475"></a>02475         <span class="comment">// If the opcode matches, then we will execute this case.</span>
+<a name="l02476"></a>02476         <span class="keywordflow">if</span> (CurNodeOpcode == Opc)
+<a name="l02477"></a>02477           <span class="keywordflow">break</span>;
+<a name="l02478"></a>02478 
+<a name="l02479"></a>02479         <span class="comment">// Otherwise, skip over this case.</span>
+<a name="l02480"></a>02480         MatcherIndex += CaseSize;
+<a name="l02481"></a>02481       }
+<a name="l02482"></a>02482 
+<a name="l02483"></a>02483       <span class="comment">// If no cases matched, bail out.</span>
+<a name="l02484"></a>02484       <span class="keywordflow">if</span> (CaseSize == 0) <span class="keywordflow">break</span>;
+<a name="l02485"></a>02485 
+<a name="l02486"></a>02486       <span class="comment">// Otherwise, execute the case we found.</span>
+<a name="l02487"></a>02487       <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"  OpcodeSwitch from "</span> << SwitchStart
+<a name="l02488"></a>02488                    << <span class="stringliteral">" to "</span> << MatcherIndex << <span class="stringliteral">"\n"</span>);
+<a name="l02489"></a>02489       <span class="keywordflow">continue</span>;
+<a name="l02490"></a>02490     }
+<a name="l02491"></a>02491 
+<a name="l02492"></a>02492     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a0fdec182c9ee56480009743734d0e9f8">OPC_SwitchType</a>: {
+<a name="l02493"></a>02493       <a class="code" href="classllvm_1_1MVT.html">MVT</a> CurNodeVT = N.getValueType().getSimpleVT();
+<a name="l02494"></a>02494       <span class="keywordtype">unsigned</span> SwitchStart = MatcherIndex-1; (void)SwitchStart;
+<a name="l02495"></a>02495       <span class="keywordtype">unsigned</span> CaseSize;
+<a name="l02496"></a>02496       <span class="keywordflow">while</span> (1) {
+<a name="l02497"></a>02497         <span class="comment">// Get the size of this case.</span>
+<a name="l02498"></a>02498         CaseSize = MatcherTable[MatcherIndex++];
+<a name="l02499"></a>02499         <span class="keywordflow">if</span> (CaseSize & 128)
+<a name="l02500"></a>02500           CaseSize = <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(CaseSize, MatcherTable, MatcherIndex);
+<a name="l02501"></a>02501         <span class="keywordflow">if</span> (CaseSize == 0) <span class="keywordflow">break</span>;
+<a name="l02502"></a>02502 
+<a name="l02503"></a>02503         <a class="code" href="classllvm_1_1MVT.html">MVT</a> CaseVT = (<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a>)MatcherTable[MatcherIndex++];
+<a name="l02504"></a>02504         <span class="keywordflow">if</span> (CaseVT == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca081c1b396411c5dbcf5c0d9491f4f6ec">MVT::iPTR</a>)
+<a name="l02505"></a>02505           CaseVT = <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad114b2de47d6b8da17f3f60359e4d8e7">TLI</a>.<a class="code" href="classllvm_1_1TargetLowering.html#a725d20a2d00a8b54cc01e6f02cb31522">getPointerTy</a>();
+<a name="l02506"></a>02506 
+<a name="l02507"></a>02507         <span class="comment">// If the VT matches, then we will execute this case.</span>
+<a name="l02508"></a>02508         <span class="keywordflow">if</span> (CurNodeVT == CaseVT)
+<a name="l02509"></a>02509           <span class="keywordflow">break</span>;
+<a name="l02510"></a>02510 
+<a name="l02511"></a>02511         <span class="comment">// Otherwise, skip over this case.</span>
+<a name="l02512"></a>02512         MatcherIndex += CaseSize;
+<a name="l02513"></a>02513       }
+<a name="l02514"></a>02514 
+<a name="l02515"></a>02515       <span class="comment">// If no cases matched, bail out.</span>
+<a name="l02516"></a>02516       <span class="keywordflow">if</span> (CaseSize == 0) <span class="keywordflow">break</span>;
+<a name="l02517"></a>02517 
+<a name="l02518"></a>02518       <span class="comment">// Otherwise, execute the case we found.</span>
+<a name="l02519"></a>02519       <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"  TypeSwitch["</span> << <a class="code" href="structllvm_1_1EVT.html">EVT</a>(CurNodeVT).getEVTString()
+<a name="l02520"></a>02520                    << <span class="stringliteral">"] from "</span> << SwitchStart << <span class="stringliteral">" to "</span> << MatcherIndex<<<span class="charliteral">'\n'</span>);
+<a name="l02521"></a>02521       <span class="keywordflow">continue</span>;
+<a name="l02522"></a>02522     }
+<a name="l02523"></a>02523     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a8c35dbaea22168300c0417f650be72a5">OPC_CheckChild0Type</a>: <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a5bd4c5f999490a0b61230d3ed58122b7">OPC_CheckChild1Type</a>:
+<a name="l02524"></a>02524     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a7e7290f899b310f10094103102451001">OPC_CheckChild2Type</a>: <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a04f261bfda135591bf8341f6a20a665e">OPC_CheckChild3Type</a>:
+<a name="l02525"></a>02525     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a8f58a385e467906cfa60bb96ec84508f">OPC_CheckChild4Type</a>: <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a378a8e72b2fc7c4a0cf9ac5ae724a0ea">OPC_CheckChild5Type</a>:
+<a name="l02526"></a>02526     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a136ee3a03a1bab562927a4e0ac11fbbc">OPC_CheckChild6Type</a>: <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a1fd783d02f34d56b77c1907ed6e71966">OPC_CheckChild7Type</a>:
+<a name="l02527"></a>02527       <span class="keywordflow">if</span> (!::<a class="code" href="SelectionDAGISel_8cpp.html#acae3c0616dac16e457abe75892673ad4">CheckChildType</a>(MatcherTable, MatcherIndex, N, <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad114b2de47d6b8da17f3f60359e4d8e7">TLI</a>,
+<a name="l02528"></a>02528                             Opcode-<a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a8c35dbaea22168300c0417f650be72a5">OPC_CheckChild0Type</a>))
+<a name="l02529"></a>02529         <span class="keywordflow">break</span>;
+<a name="l02530"></a>02530       <span class="keywordflow">continue</span>;
+<a name="l02531"></a>02531     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a8f80287bd79b4dda1de0fb810dbb0ecd">OPC_CheckCondCode</a>:
+<a name="l02532"></a>02532       <span class="keywordflow">if</span> (!::<a class="code" href="SelectionDAGISel_8cpp.html#aaab015bad5b65423fd9921361c3c4e57">CheckCondCode</a>(MatcherTable, MatcherIndex, N)) <span class="keywordflow">break</span>;
+<a name="l02533"></a>02533       <span class="keywordflow">continue</span>;
+<a name="l02534"></a>02534     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a25c8c32aaa6b79885859cebc7ff11ae6">OPC_CheckValueType</a>:
+<a name="l02535"></a>02535       <span class="keywordflow">if</span> (!::<a class="code" href="SelectionDAGISel_8cpp.html#ad989c21528eda8f431248737176cc3c4">CheckValueType</a>(MatcherTable, MatcherIndex, N, <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad114b2de47d6b8da17f3f60359e4d8e7">TLI</a>)) <span class="keywordflow">break</span>;
+<a name="l02536"></a>02536       <span class="keywordflow">continue</span>;
+<a name="l02537"></a>02537     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a797344a4f66b9d2c2c4487a3bcffa98f">OPC_CheckInteger</a>:
+<a name="l02538"></a>02538       <span class="keywordflow">if</span> (!::<a class="code" href="SelectionDAGISel_8cpp.html#a55ddd986b32899ac868a18ee9d1182a1">CheckInteger</a>(MatcherTable, MatcherIndex, N)) <span class="keywordflow">break</span>;
+<a name="l02539"></a>02539       <span class="keywordflow">continue</span>;
+<a name="l02540"></a>02540     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a762f7415efdb5556233c801b1ec86509">OPC_CheckAndImm</a>:
+<a name="l02541"></a>02541       <span class="keywordflow">if</span> (!::<a class="code" href="SelectionDAGISel_8cpp.html#a617864a293ee07b291bef2224ea10567">CheckAndImm</a>(MatcherTable, MatcherIndex, N, *<span class="keyword">this</span>)) <span class="keywordflow">break</span>;
+<a name="l02542"></a>02542       <span class="keywordflow">continue</span>;
+<a name="l02543"></a>02543     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a07f7c58b8c512a9e943c07c7210b6f72">OPC_CheckOrImm</a>:
+<a name="l02544"></a>02544       <span class="keywordflow">if</span> (!::<a class="code" href="SelectionDAGISel_8cpp.html#a6699dbb00a8f802ae5f1db4599f93121">CheckOrImm</a>(MatcherTable, MatcherIndex, N, *<span class="keyword">this</span>)) <span class="keywordflow">break</span>;
+<a name="l02545"></a>02545       <span class="keywordflow">continue</span>;
+<a name="l02546"></a>02546 
+<a name="l02547"></a>02547     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a6dd26f64fb30f256036e93271c1560fd">OPC_CheckFoldableChainNode</a>: {
+<a name="l02548"></a>02548       assert(NodeStack.size() != 1 && <span class="stringliteral">"No parent node"</span>);
+<a name="l02549"></a>02549       <span class="comment">// Verify that all intermediate nodes between the root and this one have</span>
+<a name="l02550"></a>02550       <span class="comment">// a single use.</span>
+<a name="l02551"></a>02551       <span class="keywordtype">bool</span> HasMultipleUses = <span class="keyword">false</span>;
+<a name="l02552"></a>02552       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1, e = NodeStack.size()-1; i != e; ++i)
+<a name="l02553"></a>02553         <span class="keywordflow">if</span> (!NodeStack[i].hasOneUse()) {
+<a name="l02554"></a>02554           HasMultipleUses = <span class="keyword">true</span>;
+<a name="l02555"></a>02555           <span class="keywordflow">break</span>;
+<a name="l02556"></a>02556         }
+<a name="l02557"></a>02557       <span class="keywordflow">if</span> (HasMultipleUses) <span class="keywordflow">break</span>;
+<a name="l02558"></a>02558 
+<a name="l02559"></a>02559       <span class="comment">// Check to see that the target thinks this is profitable to fold and that</span>
+<a name="l02560"></a>02560       <span class="comment">// we can fold it without inducing cycles in the graph.</span>
+<a name="l02561"></a>02561       <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1SelectionDAGISel.html#a7c45584212fcb230d5bcee0754b3ce64">IsProfitableToFold</a>(N, NodeStack[NodeStack.size()-2].getNode(),
+<a name="l02562"></a>02562                               NodeToMatch) ||
+<a name="l02563"></a>02563           !<a class="code" href="classllvm_1_1SelectionDAGISel.html#afde899bbadc9622ad6108694d44d7f36">IsLegalToFold</a>(N, NodeStack[NodeStack.size()-2].getNode(),
+<a name="l02564"></a>02564                          NodeToMatch, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a1a7c2a3380a9f770ba082a070c592df6">OptLevel</a>,
+<a name="l02565"></a>02565                          <span class="keyword">true</span><span class="comment">/*We validate our own chains*/</span>))
+<a name="l02566"></a>02566         <span class="keywordflow">break</span>;
+<a name="l02567"></a>02567 
+<a name="l02568"></a>02568       <span class="keywordflow">continue</span>;
+<a name="l02569"></a>02569     }
+<a name="l02570"></a>02570     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a4d26ece079833899ec7dfc775b6e2628">OPC_EmitInteger</a>: {
+<a name="l02571"></a>02571       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a> VT =
+<a name="l02572"></a>02572         (<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a>)MatcherTable[MatcherIndex++];
+<a name="l02573"></a>02573       <a class="code" href="classint64__t.html">int64_t</a> Val = MatcherTable[MatcherIndex++];
+<a name="l02574"></a>02574       <span class="keywordflow">if</span> (Val & 128)
+<a name="l02575"></a>02575         Val = <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(Val, MatcherTable, MatcherIndex);
+<a name="l02576"></a>02576       RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(std::pair<SDValue, SDNode*>(
+<a name="l02577"></a>02577                               <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ace5bddfde14abf966790e8438e88d6d2">getTargetConstant</a>(Val, VT), (<a class="code" href="classllvm_1_1SDNode.html">SDNode</a>*)0));
+<a name="l02578"></a>02578       <span class="keywordflow">continue</span>;
+<a name="l02579"></a>02579     }
+<a name="l02580"></a>02580     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a61b4fade49d0ca64657a3030f46495d2">OPC_EmitRegister</a>: {
+<a name="l02581"></a>02581       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a> VT =
+<a name="l02582"></a>02582         (<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a>)MatcherTable[MatcherIndex++];
+<a name="l02583"></a>02583       <span class="keywordtype">unsigned</span> RegNo = MatcherTable[MatcherIndex++];
+<a name="l02584"></a>02584       RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(std::pair<SDValue, SDNode*>(
+<a name="l02585"></a>02585                               <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a9268086dd9d1ba4e60cfe872dde5c173">getRegister</a>(RegNo, VT), (<a class="code" href="classllvm_1_1SDNode.html">SDNode</a>*)0));
+<a name="l02586"></a>02586       <span class="keywordflow">continue</span>;
+<a name="l02587"></a>02587     }
+<a name="l02588"></a>02588     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2abd736102925abf791e7f9df182241783">OPC_EmitRegister2</a>: {
+<a name="l02589"></a>02589       <span class="comment">// For targets w/ more than 256 register names, the register enum</span>
+<a name="l02590"></a>02590       <span class="comment">// values are stored in two bytes in the matcher table (just like</span>
+<a name="l02591"></a>02591       <span class="comment">// opcodes).</span>
+<a name="l02592"></a>02592       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a> VT =
+<a name="l02593"></a>02593         (<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a>)MatcherTable[MatcherIndex++];
+<a name="l02594"></a>02594       <span class="keywordtype">unsigned</span> RegNo = MatcherTable[MatcherIndex++];
+<a name="l02595"></a>02595       RegNo |= MatcherTable[MatcherIndex++] << 8;
+<a name="l02596"></a>02596       RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(std::pair<SDValue, SDNode*>(
+<a name="l02597"></a>02597                               <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a9268086dd9d1ba4e60cfe872dde5c173">getRegister</a>(RegNo, VT), (<a class="code" href="classllvm_1_1SDNode.html">SDNode</a>*)0));
+<a name="l02598"></a>02598       <span class="keywordflow">continue</span>;
+<a name="l02599"></a>02599     }
+<a name="l02600"></a>02600 
+<a name="l02601"></a>02601     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2af63f0634fcc36241cccfe4a2e57266f2">OPC_EmitConvertToTarget</a>:  {
+<a name="l02602"></a>02602       <span class="comment">// Convert from IMM/FPIMM to target version.</span>
+<a name="l02603"></a>02603       <span class="keywordtype">unsigned</span> RecNo = MatcherTable[MatcherIndex++];
+<a name="l02604"></a>02604       assert(RecNo < RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() && <span class="stringliteral">"Invalid CheckSame"</span>);
+<a name="l02605"></a>02605       <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> Imm = RecordedNodes[RecNo].first;
+<a name="l02606"></a>02606 
+<a name="l02607"></a>02607       <span class="keywordflow">if</span> (Imm->getOpcode() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110aac2f0a84dd2aa5ee4c3f1385e9565f5e">ISD::Constant</a>) {
+<a name="l02608"></a>02608         <a class="code" href="classint64__t.html">int64_t</a> Val = cast<ConstantSDNode>(Imm)->getZExtValue();
+<a name="l02609"></a>02609         Imm = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ace5bddfde14abf966790e8438e88d6d2">getTargetConstant</a>(Val, Imm.getValueType());
+<a name="l02610"></a>02610       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Imm->getOpcode() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a1be4c8da7c68a4c683de1a98b5cc5b9d">ISD::ConstantFP</a>) {
+<a name="l02611"></a>02611         <span class="keyword">const</span> <a class="code" href="classllvm_1_1ConstantFP.html">ConstantFP</a> *Val=cast<ConstantFPSDNode>(Imm)->getConstantFPValue();
+<a name="l02612"></a>02612         Imm = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ab274af8be412770a946fd8074ebef215">getTargetConstantFP</a>(*Val, Imm.getValueType());
+<a name="l02613"></a>02613       }
+<a name="l02614"></a>02614 
+<a name="l02615"></a>02615       RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(std::make_pair(Imm, RecordedNodes[RecNo].second));
+<a name="l02616"></a>02616       <span class="keywordflow">continue</span>;
+<a name="l02617"></a>02617     }
+<a name="l02618"></a>02618 
+<a name="l02619"></a>02619     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a678201f50ea2342113a11caedb83b8d4">OPC_EmitMergeInputChains1_0</a>:    <span class="comment">// OPC_EmitMergeInputChains, 1, 0</span>
+<a name="l02620"></a>02620     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a326d1d32d94b2090179b5ea52d76f359">OPC_EmitMergeInputChains1_1</a>: {  <span class="comment">// OPC_EmitMergeInputChains, 1, 1</span>
+<a name="l02621"></a>02621       <span class="comment">// These are space-optimized forms of OPC_EmitMergeInputChains.</span>
+<a name="l02622"></a>02622       assert(InputChain.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>() == 0 &&
+<a name="l02623"></a>02623              <span class="stringliteral">"EmitMergeInputChains should be the first chain producing node"</span>);
+<a name="l02624"></a>02624       assert(ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>() &&
+<a name="l02625"></a>02625              <span class="stringliteral">"Should only have one EmitMergeInputChains per match"</span>);
+<a name="l02626"></a>02626 
+<a name="l02627"></a>02627       <span class="comment">// Read all of the chained nodes.</span>
+<a name="l02628"></a>02628       <span class="keywordtype">unsigned</span> RecNo = Opcode == <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a326d1d32d94b2090179b5ea52d76f359">OPC_EmitMergeInputChains1_1</a>;
+<a name="l02629"></a>02629       assert(RecNo < RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() && <span class="stringliteral">"Invalid CheckSame"</span>);
+<a name="l02630"></a>02630       ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(RecordedNodes[RecNo].first.getNode());
+<a name="l02631"></a>02631 
+<a name="l02632"></a>02632       <span class="comment">// FIXME: What if other value results of the node have uses not matched</span>
+<a name="l02633"></a>02633       <span class="comment">// by this pattern?</span>
+<a name="l02634"></a>02634       <span class="keywordflow">if</span> (ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#acd9e771a3296c6b24146955754620557">back</a>() != NodeToMatch &&
+<a name="l02635"></a>02635           !RecordedNodes[RecNo].first.hasOneUse()) {
+<a name="l02636"></a>02636         ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorImpl.html#aac0ea55010b7b1a301e65a0baea057aa">clear</a>();
+<a name="l02637"></a>02637         <span class="keywordflow">break</span>;
+<a name="l02638"></a>02638       }
+<a name="l02639"></a>02639 
+<a name="l02640"></a>02640       <span class="comment">// Merge the input chains if they are not intra-pattern references.</span>
+<a name="l02641"></a>02641       InputChain = <a class="code" href="SelectionDAGISel_8cpp.html#aeb0bc3fb3008d1f61c5a1adb0b901c82">HandleMergeInputChains</a>(ChainNodesMatched, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>);
+<a name="l02642"></a>02642 
+<a name="l02643"></a>02643       <span class="keywordflow">if</span> (InputChain.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>() == 0)
+<a name="l02644"></a>02644         <span class="keywordflow">break</span>;  <span class="comment">// Failed to merge.</span>
+<a name="l02645"></a>02645       <span class="keywordflow">continue</span>;
+<a name="l02646"></a>02646     }
+<a name="l02647"></a>02647 
+<a name="l02648"></a>02648     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a5a9ff4093959a69b182c880dadf52829">OPC_EmitMergeInputChains</a>: {
+<a name="l02649"></a>02649       assert(InputChain.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>() == 0 &&
+<a name="l02650"></a>02650              <span class="stringliteral">"EmitMergeInputChains should be the first chain producing node"</span>);
+<a name="l02651"></a>02651       <span class="comment">// This node gets a list of nodes we matched in the input that have</span>
+<a name="l02652"></a>02652       <span class="comment">// chains.  We want to token factor all of the input chains to these nodes</span>
+<a name="l02653"></a>02653       <span class="comment">// together.  However, if any of the input chains is actually one of the</span>
+<a name="l02654"></a>02654       <span class="comment">// nodes matched in this pattern, then we have an intra-match reference.</span>
+<a name="l02655"></a>02655       <span class="comment">// Ignore these because the newly token factored chain should not refer to</span>
+<a name="l02656"></a>02656       <span class="comment">// the old nodes.</span>
+<a name="l02657"></a>02657       <span class="keywordtype">unsigned</span> NumChains = MatcherTable[MatcherIndex++];
+<a name="l02658"></a>02658       assert(NumChains != 0 && <span class="stringliteral">"Can't TF zero chains"</span>);
+<a name="l02659"></a>02659 
+<a name="l02660"></a>02660       assert(ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>() &&
+<a name="l02661"></a>02661              <span class="stringliteral">"Should only have one EmitMergeInputChains per match"</span>);
+<a name="l02662"></a>02662 
+<a name="l02663"></a>02663       <span class="comment">// Read all of the chained nodes.</span>
+<a name="l02664"></a>02664       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != NumChains; ++i) {
+<a name="l02665"></a>02665         <span class="keywordtype">unsigned</span> RecNo = MatcherTable[MatcherIndex++];
+<a name="l02666"></a>02666         assert(RecNo < RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() && <span class="stringliteral">"Invalid CheckSame"</span>);
+<a name="l02667"></a>02667         ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(RecordedNodes[RecNo].first.getNode());
+<a name="l02668"></a>02668 
+<a name="l02669"></a>02669         <span class="comment">// FIXME: What if other value results of the node have uses not matched</span>
+<a name="l02670"></a>02670         <span class="comment">// by this pattern?</span>
+<a name="l02671"></a>02671         <span class="keywordflow">if</span> (ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#acd9e771a3296c6b24146955754620557">back</a>() != NodeToMatch &&
+<a name="l02672"></a>02672             !RecordedNodes[RecNo].first.hasOneUse()) {
+<a name="l02673"></a>02673           ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorImpl.html#aac0ea55010b7b1a301e65a0baea057aa">clear</a>();
+<a name="l02674"></a>02674           <span class="keywordflow">break</span>;
+<a name="l02675"></a>02675         }
+<a name="l02676"></a>02676       }
+<a name="l02677"></a>02677 
+<a name="l02678"></a>02678       <span class="comment">// If the inner loop broke out, the match fails.</span>
+<a name="l02679"></a>02679       <span class="keywordflow">if</span> (ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>())
+<a name="l02680"></a>02680         <span class="keywordflow">break</span>;
+<a name="l02681"></a>02681 
+<a name="l02682"></a>02682       <span class="comment">// Merge the input chains if they are not intra-pattern references.</span>
+<a name="l02683"></a>02683       InputChain = <a class="code" href="SelectionDAGISel_8cpp.html#aeb0bc3fb3008d1f61c5a1adb0b901c82">HandleMergeInputChains</a>(ChainNodesMatched, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>);
+<a name="l02684"></a>02684 
+<a name="l02685"></a>02685       <span class="keywordflow">if</span> (InputChain.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>() == 0)
+<a name="l02686"></a>02686         <span class="keywordflow">break</span>;  <span class="comment">// Failed to merge.</span>
+<a name="l02687"></a>02687 
+<a name="l02688"></a>02688       <span class="keywordflow">continue</span>;
+<a name="l02689"></a>02689     }
+<a name="l02690"></a>02690 
+<a name="l02691"></a>02691     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a34176e51f3d862614aedb0c80d053daf">OPC_EmitCopyToReg</a>: {
+<a name="l02692"></a>02692       <span class="keywordtype">unsigned</span> RecNo = MatcherTable[MatcherIndex++];
+<a name="l02693"></a>02693       assert(RecNo < RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() && <span class="stringliteral">"Invalid CheckSame"</span>);
+<a name="l02694"></a>02694       <span class="keywordtype">unsigned</span> DestPhysReg = MatcherTable[MatcherIndex++];
+<a name="l02695"></a>02695 
+<a name="l02696"></a>02696       <span class="keywordflow">if</span> (InputChain.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>() == 0)
+<a name="l02697"></a>02697         InputChain = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ad755b1a25cf0c4507d5f615f64471ae9">getEntryNode</a>();
+<a name="l02698"></a>02698 
+<a name="l02699"></a>02699       InputChain = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a64720b4e2b3deb1f80177f31d1843691">getCopyToReg</a>(InputChain, NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#a630d6793e4444e4996dfa80f1fce18c8" title="getDebugLoc - Return the source location info.">getDebugLoc</a>(),
+<a name="l02700"></a>02700                                         DestPhysReg, RecordedNodes[RecNo].first,
+<a name="l02701"></a>02701                                         InputGlue);
+<a name="l02702"></a>02702 
+<a name="l02703"></a>02703       InputGlue = InputChain.<a class="code" href="classllvm_1_1SDValue.html#a040481b9bda32faa6b1435532405d88f">getValue</a>(1);
+<a name="l02704"></a>02704       <span class="keywordflow">continue</span>;
+<a name="l02705"></a>02705     }
+<a name="l02706"></a>02706 
+<a name="l02707"></a>02707     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2ad838222111c653f48a357804d174b813">OPC_EmitNodeXForm</a>: {
+<a name="l02708"></a>02708       <span class="keywordtype">unsigned</span> XFormNo = MatcherTable[MatcherIndex++];
+<a name="l02709"></a>02709       <span class="keywordtype">unsigned</span> RecNo = MatcherTable[MatcherIndex++];
+<a name="l02710"></a>02710       assert(RecNo < RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() && <span class="stringliteral">"Invalid CheckSame"</span>);
+<a name="l02711"></a>02711       <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> Res = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a888ef6531e4abe62f1c03acd578461fd">RunSDNodeXForm</a>(RecordedNodes[RecNo].first, XFormNo);
+<a name="l02712"></a>02712       RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(std::pair<SDValue,SDNode*>(Res, (<a class="code" href="classllvm_1_1SDNode.html">SDNode</a>*) 0));
+<a name="l02713"></a>02713       <span class="keywordflow">continue</span>;
+<a name="l02714"></a>02714     }
+<a name="l02715"></a>02715 
+<a name="l02716"></a>02716     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a18ced310ef5a5b64fd138b7fddafb7b5">OPC_EmitNode</a>:
+<a name="l02717"></a>02717     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a835330e877233ea5d7faee0e80f16c43">OPC_MorphNodeTo</a>: {
+<a name="l02718"></a>02718       uint16_t TargetOpc = MatcherTable[MatcherIndex++];
+<a name="l02719"></a>02719       TargetOpc |= (<span class="keywordtype">unsigned</span> short)MatcherTable[MatcherIndex++] << 8;
+<a name="l02720"></a>02720       <span class="keywordtype">unsigned</span> EmitNodeInfo = MatcherTable[MatcherIndex++];
+<a name="l02721"></a>02721       <span class="comment">// Get the result VT list.</span>
+<a name="l02722"></a>02722       <span class="keywordtype">unsigned</span> NumVTs = MatcherTable[MatcherIndex++];
+<a name="l02723"></a>02723       <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<EVT, 4></a> VTs;
+<a name="l02724"></a>02724       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != NumVTs; ++i) {
+<a name="l02725"></a>02725         <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a> VT =
+<a name="l02726"></a>02726           (<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a>)MatcherTable[MatcherIndex++];
+<a name="l02727"></a>02727         <span class="keywordflow">if</span> (VT == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca081c1b396411c5dbcf5c0d9491f4f6ec">MVT::iPTR</a>) VT = <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad114b2de47d6b8da17f3f60359e4d8e7">TLI</a>.<a class="code" href="classllvm_1_1TargetLowering.html#a725d20a2d00a8b54cc01e6f02cb31522">getPointerTy</a>().<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>;
+<a name="l02728"></a>02728         VTs.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(VT);
+<a name="l02729"></a>02729       }
+<a name="l02730"></a>02730 
+<a name="l02731"></a>02731       <span class="keywordflow">if</span> (EmitNodeInfo & OPFL_Chain)
+<a name="l02732"></a>02732         VTs.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a>);
+<a name="l02733"></a>02733       <span class="keywordflow">if</span> (EmitNodeInfo & OPFL_GlueOutput)
+<a name="l02734"></a>02734         VTs.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a>);
+<a name="l02735"></a>02735 
+<a name="l02736"></a>02736       <span class="comment">// This is hot code, so optimize the two most common cases of 1 and 2</span>
+<a name="l02737"></a>02737       <span class="comment">// results.</span>
+<a name="l02738"></a>02738       <a class="code" href="structllvm_1_1SDVTList.html">SDVTList</a> VTList;
+<a name="l02739"></a>02739       <span class="keywordflow">if</span> (VTs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() == 1)
+<a name="l02740"></a>02740         VTList = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a196c23d6cb4d768d037970f1f35bbf66">getVTList</a>(VTs[0]);
+<a name="l02741"></a>02741       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (VTs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() == 2)
+<a name="l02742"></a>02742         VTList = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a196c23d6cb4d768d037970f1f35bbf66">getVTList</a>(VTs[0], VTs[1]);
+<a name="l02743"></a>02743       <span class="keywordflow">else</span>
+<a name="l02744"></a>02744         VTList = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#a196c23d6cb4d768d037970f1f35bbf66">getVTList</a>(VTs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a7b68be12c974b6b70bc86062f221a344" title="data - Return a pointer to the vector's buffer, even if empty().">data</a>(), VTs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>());
+<a name="l02745"></a>02745 
+<a name="l02746"></a>02746       <span class="comment">// Get the operand list.</span>
+<a name="l02747"></a>02747       <span class="keywordtype">unsigned</span> NumOps = MatcherTable[MatcherIndex++];
+<a name="l02748"></a>02748       <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SDValue, 8></a> Ops;
+<a name="l02749"></a>02749       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != NumOps; ++i) {
+<a name="l02750"></a>02750         <span class="keywordtype">unsigned</span> RecNo = MatcherTable[MatcherIndex++];
+<a name="l02751"></a>02751         <span class="keywordflow">if</span> (RecNo & 128)
+<a name="l02752"></a>02752           RecNo = <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(RecNo, MatcherTable, MatcherIndex);
+<a name="l02753"></a>02753 
+<a name="l02754"></a>02754         assert(RecNo < RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() && <span class="stringliteral">"Invalid EmitNode"</span>);
+<a name="l02755"></a>02755         Ops.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(RecordedNodes[RecNo].first);
+<a name="l02756"></a>02756       }
+<a name="l02757"></a>02757 
+<a name="l02758"></a>02758       <span class="comment">// If there are variadic operands to add, handle them now.</span>
+<a name="l02759"></a>02759       <span class="keywordflow">if</span> (EmitNodeInfo & <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad7a717074584371d05b88acf2955b3c5a595afa3f4e6a97e0ae7c70ae9ff0963f">OPFL_VariadicInfo</a>) {
+<a name="l02760"></a>02760         <span class="comment">// Determine the start index to copy from.</span>
+<a name="l02761"></a>02761         <span class="keywordtype">unsigned</span> FirstOpToCopy = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a44db62a12476aec69cc958a5502f94df">getNumFixedFromVariadicInfo</a>(EmitNodeInfo);
+<a name="l02762"></a>02762         FirstOpToCopy += (EmitNodeInfo & <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad7a717074584371d05b88acf2955b3c5a7638541ce06fd89565a0ba8c84161b9c">OPFL_Chain</a>) ? 1 : 0;
+<a name="l02763"></a>02763         assert(NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#abc5c2f1d47a517373030133c6a102106">getNumOperands</a>() >= FirstOpToCopy &&
+<a name="l02764"></a>02764                <span class="stringliteral">"Invalid variadic node"</span>);
+<a name="l02765"></a>02765         <span class="comment">// Copy all of the variadic operands, not including a potential glue</span>
+<a name="l02766"></a>02766         <span class="comment">// input.</span>
+<a name="l02767"></a>02767         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = FirstOpToCopy, e = NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#abc5c2f1d47a517373030133c6a102106">getNumOperands</a>();
+<a name="l02768"></a>02768              i != e; ++i) {
+<a name="l02769"></a>02769           <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> V = NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(i);
+<a name="l02770"></a>02770           <span class="keywordflow">if</span> (V.<a class="code" href="classllvm_1_1SDValue.html#a7d2ad4aa4277eb4e1138ff9791c8fbb7">getValueType</a>() == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a>) <span class="keywordflow">break</span>;
+<a name="l02771"></a>02771           Ops.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(V);
+<a name="l02772"></a>02772         }
+<a name="l02773"></a>02773       }
+<a name="l02774"></a>02774 
+<a name="l02775"></a>02775       <span class="comment">// If this has chain/glue inputs, add them.</span>
+<a name="l02776"></a>02776       <span class="keywordflow">if</span> (EmitNodeInfo & OPFL_Chain)
+<a name="l02777"></a>02777         Ops.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(InputChain);
+<a name="l02778"></a>02778       <span class="keywordflow">if</span> ((EmitNodeInfo & <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad7a717074584371d05b88acf2955b3c5a1cb68e136df2791b9b9442d53c373ccf">OPFL_GlueInput</a>) && InputGlue.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>() != 0)
+<a name="l02779"></a>02779         Ops.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(InputGlue);
+<a name="l02780"></a>02780 
+<a name="l02781"></a>02781       <span class="comment">// Create the node.</span>
+<a name="l02782"></a>02782       <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *Res = 0;
+<a name="l02783"></a>02783       <span class="keywordflow">if</span> (Opcode != <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a835330e877233ea5d7faee0e80f16c43">OPC_MorphNodeTo</a>) {
+<a name="l02784"></a>02784         <span class="comment">// If this is a normal EmitNode command, just create the new node and</span>
+<a name="l02785"></a>02785         <span class="comment">// add the results to the RecordedNodes list.</span>
+<a name="l02786"></a>02786         Res = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ad70be180b80a5767ac863b95b932dd31">getMachineNode</a>(TargetOpc, NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#a630d6793e4444e4996dfa80f1fce18c8" title="getDebugLoc - Return the source location info.">getDebugLoc</a>(),
+<a name="l02787"></a>02787                                      VTList, Ops.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a7b68be12c974b6b70bc86062f221a344" title="data - Return a pointer to the vector's buffer, even if empty().">data</a>(), Ops.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>());
+<a name="l02788"></a>02788 
+<a name="l02789"></a>02789         <span class="comment">// Add all the non-glue/non-chain results to the RecordedNodes list.</span>
+<a name="l02790"></a>02790         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = VTs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>(); i != e; ++i) {
+<a name="l02791"></a>02791           <span class="keywordflow">if</span> (VTs[i] == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a> || VTs[i] == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a>) <span class="keywordflow">break</span>;
+<a name="l02792"></a>02792           RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(std::pair<SDValue,SDNode*>(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(Res, i),
+<a name="l02793"></a>02793                                                              (<a class="code" href="classllvm_1_1SDNode.html">SDNode</a>*) 0));
+<a name="l02794"></a>02794         }
+<a name="l02795"></a>02795 
+<a name="l02796"></a>02796       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>() != <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a062083eb3ff8c441c73d3bf42ca09bba">ISD::DELETED_NODE</a>) {
+<a name="l02797"></a>02797         Res = MorphNode(NodeToMatch, TargetOpc, VTList, Ops.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a7b68be12c974b6b70bc86062f221a344" title="data - Return a pointer to the vector's buffer, even if empty().">data</a>(), Ops.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>(),
+<a name="l02798"></a>02798                         EmitNodeInfo);
+<a name="l02799"></a>02799       } <span class="keywordflow">else</span> {
+<a name="l02800"></a>02800         <span class="comment">// NodeToMatch was eliminated by CSE when the target changed the DAG.</span>
+<a name="l02801"></a>02801         <span class="comment">// We will visit the equivalent node later.</span>
+<a name="l02802"></a>02802         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Node was eliminated by CSE\n"</span>);
+<a name="l02803"></a>02803         <span class="keywordflow">return</span> 0;
+<a name="l02804"></a>02804       }
+<a name="l02805"></a>02805 
+<a name="l02806"></a>02806       <span class="comment">// If the node had chain/glue results, update our notion of the current</span>
+<a name="l02807"></a>02807       <span class="comment">// chain and glue.</span>
+<a name="l02808"></a>02808       <span class="keywordflow">if</span> (EmitNodeInfo & OPFL_GlueOutput) {
+<a name="l02809"></a>02809         InputGlue = <a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(Res, VTs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>()-1);
+<a name="l02810"></a>02810         <span class="keywordflow">if</span> (EmitNodeInfo & OPFL_Chain)
+<a name="l02811"></a>02811           InputChain = <a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(Res, VTs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>()-2);
+<a name="l02812"></a>02812       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (EmitNodeInfo & OPFL_Chain)
+<a name="l02813"></a>02813         InputChain = <a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(Res, VTs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>()-1);
+<a name="l02814"></a>02814 
+<a name="l02815"></a>02815       <span class="comment">// If the OPFL_MemRefs glue is set on this node, slap all of the</span>
+<a name="l02816"></a>02816       <span class="comment">// accumulated memrefs onto it.</span>
+<a name="l02817"></a>02817       <span class="comment">//</span>
+<a name="l02818"></a>02818       <span class="comment">// FIXME: This is vastly incorrect for patterns with multiple outputs</span>
+<a name="l02819"></a>02819       <span class="comment">// instructions that access memory and for ComplexPatterns that match</span>
+<a name="l02820"></a>02820       <span class="comment">// loads.</span>
+<a name="l02821"></a>02821       <span class="keywordflow">if</span> (EmitNodeInfo & <a class="code" href="classllvm_1_1SelectionDAGISel.html#ad7a717074584371d05b88acf2955b3c5aa0548d260560d7be090cd8b265efa290">OPFL_MemRefs</a>) {
+<a name="l02822"></a>02822         <span class="comment">// Only attach load or store memory operands if the generated</span>
+<a name="l02823"></a>02823         <span class="comment">// instruction may load or store.</span>
+<a name="l02824"></a>02824         <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstrDesc.html">MCInstrDesc</a> &MCID = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a306086e3142a8dd0bdf6698bde8672e1">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#ac13d0f6f2c915757013b101ef6e8afbc">getInstrInfo</a>()-><a class="code" href="classllvm_1_1MCInstrInfo.html#ab16f5a81fccfe4b7f645ba5a74ffad02">get</a>(TargetOpc);
+<a name="l02825"></a>02825         <span class="keywordtype">bool</span> mayLoad = MCID.<a class="code" href="classllvm_1_1MCInstrDesc.html#ad526db981cdc3361585a92b6bba42137">mayLoad</a>();
+<a name="l02826"></a>02826         <span class="keywordtype">bool</span> mayStore = MCID.<a class="code" href="classllvm_1_1MCInstrDesc.html#a7146d8440bad26a32a80ae4362298783">mayStore</a>();
+<a name="l02827"></a>02827 
+<a name="l02828"></a>02828         <span class="keywordtype">unsigned</span> NumMemRefs = 0;
+<a name="l02829"></a>02829         <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a0a0e9357078c10fad480c4be2e944666">SmallVector<MachineMemOperand*, 2>::const_iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> =
+<a name="l02830"></a>02830              MatchedMemRefs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a8a045d250952c0867382a9840ee18fdf">begin</a>(), E = MatchedMemRefs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a075e34e98605d0e7c289763a104869ac">end</a>(); <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l02831"></a>02831           <span class="keywordflow">if</span> ((*I)->isLoad()) {
+<a name="l02832"></a>02832             <span class="keywordflow">if</span> (mayLoad)
+<a name="l02833"></a>02833               ++NumMemRefs;
+<a name="l02834"></a>02834           } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((*I)->isStore()) {
+<a name="l02835"></a>02835             <span class="keywordflow">if</span> (mayStore)
+<a name="l02836"></a>02836               ++NumMemRefs;
+<a name="l02837"></a>02837           } <span class="keywordflow">else</span> {
+<a name="l02838"></a>02838             ++NumMemRefs;
+<a name="l02839"></a>02839           }
+<a name="l02840"></a>02840         }
+<a name="l02841"></a>02841 
+<a name="l02842"></a>02842         <a class="code" href="classllvm_1_1MachineMemOperand.html">MachineSDNode::mmo_iterator</a> MemRefs =
+<a name="l02843"></a>02843           <a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>-><a class="code" href="classllvm_1_1MachineFunction.html#a49220493987f2152de1c37f2d6ba9c44">allocateMemRefsArray</a>(NumMemRefs);
+<a name="l02844"></a>02844 
+<a name="l02845"></a>02845         <a class="code" href="classllvm_1_1MachineMemOperand.html">MachineSDNode::mmo_iterator</a> MemRefsPos = MemRefs;
+<a name="l02846"></a>02846         <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a0a0e9357078c10fad480c4be2e944666">SmallVector<MachineMemOperand*, 2>::const_iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> =
+<a name="l02847"></a>02847              MatchedMemRefs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a8a045d250952c0867382a9840ee18fdf">begin</a>(), E = MatchedMemRefs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a075e34e98605d0e7c289763a104869ac">end</a>(); <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l02848"></a>02848           <span class="keywordflow">if</span> ((*I)->isLoad()) {
+<a name="l02849"></a>02849             <span class="keywordflow">if</span> (mayLoad)
+<a name="l02850"></a>02850               *MemRefsPos++ = *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l02851"></a>02851           } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((*I)->isStore()) {
+<a name="l02852"></a>02852             <span class="keywordflow">if</span> (mayStore)
+<a name="l02853"></a>02853               *MemRefsPos++ = *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l02854"></a>02854           } <span class="keywordflow">else</span> {
+<a name="l02855"></a>02855             *MemRefsPos++ = *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l02856"></a>02856           }
+<a name="l02857"></a>02857         }
+<a name="l02858"></a>02858 
+<a name="l02859"></a>02859         cast<MachineSDNode>(Res)
+<a name="l02860"></a>02860           ->setMemRefs(MemRefs, MemRefs + NumMemRefs);
+<a name="l02861"></a>02861       }
+<a name="l02862"></a>02862 
+<a name="l02863"></a>02863       <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"  "</span>
+<a name="l02864"></a>02864                    << (Opcode == <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a835330e877233ea5d7faee0e80f16c43">OPC_MorphNodeTo</a> ? <span class="stringliteral">"Morphed"</span> : <span class="stringliteral">"Created"</span>)
+<a name="l02865"></a>02865                    << <span class="stringliteral">" node: "</span>; Res-><a class="code" href="classllvm_1_1SDNode.html#a535ca517df1b4ae62e75475141e65787" title="dump - Dump this node, for debugging.">dump</a>(<a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>); <a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"\n"</span>);
+<a name="l02866"></a>02866 
+<a name="l02867"></a>02867       <span class="comment">// If this was a MorphNodeTo then we're completely done!</span>
+<a name="l02868"></a>02868       <span class="keywordflow">if</span> (Opcode == <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a835330e877233ea5d7faee0e80f16c43">OPC_MorphNodeTo</a>) {
+<a name="l02869"></a>02869         <span class="comment">// Update chain and glue uses.</span>
+<a name="l02870"></a>02870         UpdateChainsAndGlue(NodeToMatch, InputChain, ChainNodesMatched,
+<a name="l02871"></a>02871                             InputGlue, GlueResultNodesMatched, <span class="keyword">true</span>);
+<a name="l02872"></a>02872         <span class="keywordflow">return</span> Res;
+<a name="l02873"></a>02873       }
+<a name="l02874"></a>02874 
+<a name="l02875"></a>02875       <span class="keywordflow">continue</span>;
+<a name="l02876"></a>02876     }
+<a name="l02877"></a>02877 
+<a name="l02878"></a>02878     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a85094fdbb1ef3122346d18512b2344ec">OPC_MarkGlueResults</a>: {
+<a name="l02879"></a>02879       <span class="keywordtype">unsigned</span> NumNodes = MatcherTable[MatcherIndex++];
+<a name="l02880"></a>02880 
+<a name="l02881"></a>02881       <span class="comment">// Read and remember all the glue-result nodes.</span>
+<a name="l02882"></a>02882       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != NumNodes; ++i) {
+<a name="l02883"></a>02883         <span class="keywordtype">unsigned</span> RecNo = MatcherTable[MatcherIndex++];
+<a name="l02884"></a>02884         <span class="keywordflow">if</span> (RecNo & 128)
+<a name="l02885"></a>02885           RecNo = <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(RecNo, MatcherTable, MatcherIndex);
+<a name="l02886"></a>02886 
+<a name="l02887"></a>02887         assert(RecNo < RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() && <span class="stringliteral">"Invalid CheckSame"</span>);
+<a name="l02888"></a>02888         GlueResultNodesMatched.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(RecordedNodes[RecNo].first.getNode());
+<a name="l02889"></a>02889       }
+<a name="l02890"></a>02890       <span class="keywordflow">continue</span>;
+<a name="l02891"></a>02891     }
+<a name="l02892"></a>02892 
+<a name="l02893"></a>02893     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a32bc192d568793fb156fd6d6b75cb3c2a38a7e398a5168f046f5f475419fd12fd">OPC_CompleteMatch</a>: {
+<a name="l02894"></a>02894       <span class="comment">// The match has been completed, and any new nodes (if any) have been</span>
+<a name="l02895"></a>02895       <span class="comment">// created.  Patch up references to the matched dag to use the newly</span>
+<a name="l02896"></a>02896       <span class="comment">// created nodes.</span>
+<a name="l02897"></a>02897       <span class="keywordtype">unsigned</span> NumResults = MatcherTable[MatcherIndex++];
+<a name="l02898"></a>02898 
+<a name="l02899"></a>02899       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != NumResults; ++i) {
+<a name="l02900"></a>02900         <span class="keywordtype">unsigned</span> ResSlot = MatcherTable[MatcherIndex++];
+<a name="l02901"></a>02901         <span class="keywordflow">if</span> (ResSlot & 128)
+<a name="l02902"></a>02902           ResSlot = <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(ResSlot, MatcherTable, MatcherIndex);
+<a name="l02903"></a>02903 
+<a name="l02904"></a>02904         assert(ResSlot < RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() && <span class="stringliteral">"Invalid CheckSame"</span>);
+<a name="l02905"></a>02905         <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> Res = RecordedNodes[ResSlot].first;
+<a name="l02906"></a>02906 
+<a name="l02907"></a>02907         assert(i < NodeToMatch->getNumValues() &&
+<a name="l02908"></a>02908                NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(i) != <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a> &&
+<a name="l02909"></a>02909                NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(i) != <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a> &&
+<a name="l02910"></a>02910                <span class="stringliteral">"Invalid number of results to complete!"</span>);
+<a name="l02911"></a>02911         assert((NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(i) == Res.getValueType() ||
+<a name="l02912"></a>02912                 NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(i) == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca081c1b396411c5dbcf5c0d9491f4f6ec">MVT::iPTR</a> ||
+<a name="l02913"></a>02913                 Res.getValueType() == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca081c1b396411c5dbcf5c0d9491f4f6ec">MVT::iPTR</a> ||
+<a name="l02914"></a>02914                 NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(i).<a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>() ==
+<a name="l02915"></a>02915                     Res.getValueType().getSizeInBits()) &&
+<a name="l02916"></a>02916                <span class="stringliteral">"invalid replacement"</span>);
+<a name="l02917"></a>02917         <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>-><a class="code" href="classllvm_1_1SelectionDAG.html#ac630ccda26fea2f45afa3fb89bc1a8f4">ReplaceAllUsesOfValueWith</a>(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(NodeToMatch, i), Res);
+<a name="l02918"></a>02918       }
+<a name="l02919"></a>02919 
+<a name="l02920"></a>02920       <span class="comment">// If the root node defines glue, add it to the glue nodes to update list.</span>
+<a name="l02921"></a>02921       <span class="keywordflow">if</span> (NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#ab319fc51db27ec95fd50a910c7ccec94">getNumValues</a>()-1) == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a>)
+<a name="l02922"></a>02922         GlueResultNodesMatched.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(NodeToMatch);
+<a name="l02923"></a>02923 
+<a name="l02924"></a>02924       <span class="comment">// Update chain and glue uses.</span>
+<a name="l02925"></a>02925       UpdateChainsAndGlue(NodeToMatch, InputChain, ChainNodesMatched,
+<a name="l02926"></a>02926                           InputGlue, GlueResultNodesMatched, <span class="keyword">false</span>);
+<a name="l02927"></a>02927 
+<a name="l02928"></a>02928       assert(NodeToMatch-><a class="code" href="classllvm_1_1SDNode.html#afc071edeb7e2007d000374eba843f76a">use_empty</a>() &&
+<a name="l02929"></a>02929              <span class="stringliteral">"Didn't replace all uses of the node?"</span>);
+<a name="l02930"></a>02930 
+<a name="l02931"></a>02931       <span class="comment">// FIXME: We just return here, which interacts correctly with SelectRoot</span>
+<a name="l02932"></a>02932       <span class="comment">// above.  We should fix this to not return an SDNode* anymore.</span>
+<a name="l02933"></a>02933       <span class="keywordflow">return</span> 0;
+<a name="l02934"></a>02934     }
+<a name="l02935"></a>02935     }
+<a name="l02936"></a>02936 
+<a name="l02937"></a>02937     <span class="comment">// If the code reached this point, then the match failed.  See if there is</span>
+<a name="l02938"></a>02938     <span class="comment">// another child to try in the current 'Scope', otherwise pop it until we</span>
+<a name="l02939"></a>02939     <span class="comment">// find a case to check.</span>
+<a name="l02940"></a>02940     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"  Match failed at index "</span> << CurrentOpcodeIndex << <span class="stringliteral">"\n"</span>);
+<a name="l02941"></a>02941     ++NumDAGIselRetries;
+<a name="l02942"></a>02942     <span class="keywordflow">while</span> (1) {
+<a name="l02943"></a>02943       <span class="keywordflow">if</span> (MatchScopes.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>()) {
+<a name="l02944"></a>02944         CannotYetSelect(NodeToMatch);
+<a name="l02945"></a>02945         <span class="keywordflow">return</span> 0;
+<a name="l02946"></a>02946       }
+<a name="l02947"></a>02947 
+<a name="l02948"></a>02948       <span class="comment">// Restore the interpreter state back to the point where the scope was</span>
+<a name="l02949"></a>02949       <span class="comment">// formed.</span>
+<a name="l02950"></a>02950       MatchScope &LastScope = MatchScopes.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#acd9e771a3296c6b24146955754620557">back</a>();
+<a name="l02951"></a>02951       RecordedNodes.<a class="code" href="classllvm_1_1SmallVectorImpl.html#a102d0ad36060677286c3aefb812e5512">resize</a>(LastScope.NumRecordedNodes);
+<a name="l02952"></a>02952       NodeStack.clear();
+<a name="l02953"></a>02953       NodeStack.append(LastScope.NodeStack.begin(), LastScope.NodeStack.end());
+<a name="l02954"></a>02954       N = NodeStack.back();
+<a name="l02955"></a>02955 
+<a name="l02956"></a>02956       <span class="keywordflow">if</span> (LastScope.NumMatchedMemRefs != MatchedMemRefs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>())
+<a name="l02957"></a>02957         MatchedMemRefs.<a class="code" href="classllvm_1_1SmallVectorImpl.html#a102d0ad36060677286c3aefb812e5512">resize</a>(LastScope.NumMatchedMemRefs);
+<a name="l02958"></a>02958       MatcherIndex = LastScope.FailIndex;
+<a name="l02959"></a>02959 
+<a name="l02960"></a>02960       <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"  Continuing at "</span> << MatcherIndex << <span class="stringliteral">"\n"</span>);
+<a name="l02961"></a>02961 
+<a name="l02962"></a>02962       InputChain = LastScope.InputChain;
+<a name="l02963"></a>02963       InputGlue = LastScope.InputGlue;
+<a name="l02964"></a>02964       <span class="keywordflow">if</span> (!LastScope.HasChainNodesMatched)
+<a name="l02965"></a>02965         ChainNodesMatched.<a class="code" href="classllvm_1_1SmallVectorImpl.html#aac0ea55010b7b1a301e65a0baea057aa">clear</a>();
+<a name="l02966"></a>02966       <span class="keywordflow">if</span> (!LastScope.HasGlueResultNodesMatched)
+<a name="l02967"></a>02967         GlueResultNodesMatched.<a class="code" href="classllvm_1_1SmallVectorImpl.html#aac0ea55010b7b1a301e65a0baea057aa">clear</a>();
+<a name="l02968"></a>02968 
+<a name="l02969"></a>02969       <span class="comment">// Check to see what the offset is at the new MatcherIndex.  If it is zero</span>
+<a name="l02970"></a>02970       <span class="comment">// we have reached the end of this scope, otherwise we have another child</span>
+<a name="l02971"></a>02971       <span class="comment">// in the current scope to try.</span>
+<a name="l02972"></a>02972       <span class="keywordtype">unsigned</span> NumToSkip = MatcherTable[MatcherIndex++];
+<a name="l02973"></a>02973       <span class="keywordflow">if</span> (NumToSkip & 128)
+<a name="l02974"></a>02974         NumToSkip = <a class="code" href="SelectionDAGISel_8cpp.html#a27774280441b6460e4183ab3054ea406" title="GetVBR - decode a vbr encoding whose top bit is set.">GetVBR</a>(NumToSkip, MatcherTable, MatcherIndex);
+<a name="l02975"></a>02975 
+<a name="l02976"></a>02976       <span class="comment">// If we have another child in this scope to match, update FailIndex and</span>
+<a name="l02977"></a>02977       <span class="comment">// try it.</span>
+<a name="l02978"></a>02978       <span class="keywordflow">if</span> (NumToSkip != 0) {
+<a name="l02979"></a>02979         LastScope.FailIndex = MatcherIndex+NumToSkip;
+<a name="l02980"></a>02980         <span class="keywordflow">break</span>;
+<a name="l02981"></a>02981       }
+<a name="l02982"></a>02982 
+<a name="l02983"></a>02983       <span class="comment">// End of this scope, pop it and try the next child in the containing</span>
+<a name="l02984"></a>02984       <span class="comment">// scope.</span>
+<a name="l02985"></a>02985       MatchScopes.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#a1f2303df9bbee2233c11d61c2f6f7930">pop_back</a>();
+<a name="l02986"></a>02986     }
+<a name="l02987"></a>02987   }
+<a name="l02988"></a>02988 }
+<a name="l02989"></a>02989 
+<a name="l02990"></a>02990 
+<a name="l02991"></a>02991 
+<a name="l02992"></a>02992 <span class="keywordtype">void</span> SelectionDAGISel::CannotYetSelect(<a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *N) {
+<a name="l02993"></a>02993   std::string msg;
+<a name="l02994"></a>02994   <a class="code" href="classllvm_1_1raw__string__ostream.html">raw_string_ostream</a> Msg(msg);
+<a name="l02995"></a>02995   Msg << <span class="stringliteral">"Cannot select: "</span>;
+<a name="l02996"></a>02996 
+<a name="l02997"></a>02997   <span class="keywordflow">if</span> (N-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>() != <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110afc09e0bddd693dcf9923e4df42473bd9">ISD::INTRINSIC_W_CHAIN</a> &&
+<a name="l02998"></a>02998       N-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>() != <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ac771b9cda3b889242d457cc4d9b2159c">ISD::INTRINSIC_WO_CHAIN</a> &&
+<a name="l02999"></a>02999       N-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>() != <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a2df96794a99f5d3b4415c4a84e616140">ISD::INTRINSIC_VOID</a>) {
+<a name="l03000"></a>03000     N-><a class="code" href="classllvm_1_1SDNode.html#a3bdf9b552877594b06bbfbb8303285c7">printrFull</a>(Msg, <a class="code" href="classllvm_1_1SelectionDAGISel.html#a2b37615f95f3e2fdd5564188c0965132">CurDAG</a>);
+<a name="l03001"></a>03001     Msg << <span class="stringliteral">"\nIn function: "</span> << <a class="code" href="classllvm_1_1SelectionDAGISel.html#a23107e32342f5488a5edfa71aff54700">MF</a>-><a class="code" href="classllvm_1_1MachineFunction.html#ae215c5c2aecd18c4e68a94187d9cdbf1">getName</a>();
+<a name="l03002"></a>03002   } <span class="keywordflow">else</span> {
+<a name="l03003"></a>03003     <span class="keywordtype">bool</span> HasInputChain = N-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(0).<a class="code" href="classllvm_1_1SDValue.html#a7d2ad4aa4277eb4e1138ff9791c8fbb7">getValueType</a>() == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a>;
+<a name="l03004"></a>03004     <span class="keywordtype">unsigned</span> iid =
+<a name="l03005"></a>03005       cast<ConstantSDNode>(N-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(HasInputChain))->getZExtValue();
+<a name="l03006"></a>03006     <span class="keywordflow">if</span> (iid < Intrinsic::num_intrinsics)
+<a name="l03007"></a>03007       Msg << <span class="stringliteral">"intrinsic %"</span> << <a class="code" href="namespacellvm_1_1Intrinsic.html#a2950ceaccea680f8278bfcb7517cc9ce">Intrinsic::getName</a>((<a class="code" href="namespacellvm_1_1Intrinsic.html#a73349916f7e54a6b988a3646c7a02e90">Intrinsic::ID</a>)iid);
+<a name="l03008"></a>03008     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetIntrinsicInfo.html">TargetIntrinsicInfo</a> *TII = <a class="code" href="classllvm_1_1SelectionDAGISel.html#a306086e3142a8dd0bdf6698bde8672e1">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#a66733f5687c5c458d3c281d64167597e">getIntrinsicInfo</a>())
+<a name="l03009"></a>03009       Msg << <span class="stringliteral">"target intrinsic %"</span> << TII->getName(iid);
+<a name="l03010"></a>03010     <span class="keywordflow">else</span>
+<a name="l03011"></a>03011       Msg << <span class="stringliteral">"unknown intrinsic #"</span> << iid;
+<a name="l03012"></a>03012   }
+<a name="l03013"></a>03013   <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(Msg.str());
+<a name="l03014"></a>03014 }
+<a name="l03015"></a>03015 
+<a name="l03016"></a>03016 <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html#a1f3ebb920b40c460c3b278c169cc67e3">SelectionDAGISel::ID</a> = 0;
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:37:46 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGISel_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGISel_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGISel_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGISel_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,62 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="SelectionDAGISel.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="ResourcePriorityQueue.h",height=0.2,width=0.4,color="black",URL="$ResourcePriorityQueue_8h.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="ResourcePriorityQueue.cpp",height=0.2,width=0.4,color="black",URL="$ResourcePriorityQueue_8cpp.html"];
+  Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="ScheduleDAGVLIW.cpp",height=0.2,width=0.4,color="black",URL="$ScheduleDAGVLIW_8cpp.html"];
+  Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="HexagonMachineScheduler.h",height=0.2,width=0.4,color="black",URL="$HexagonMachineScheduler_8h.html"];
+  Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="HexagonMachineScheduler.cpp",height=0.2,width=0.4,color="black",URL="$HexagonMachineScheduler_8cpp.html"];
+  Node5 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="HexagonTargetMachine.cpp",height=0.2,width=0.4,color="black",URL="$HexagonTargetMachine_8cpp.html"];
+  Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="ScheduleDAGFast.cpp",height=0.2,width=0.4,color="black",URL="$ScheduleDAGFast_8cpp.html"];
+  Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="ScheduleDAGRRList.cpp",height=0.2,width=0.4,color="black",URL="$ScheduleDAGRRList_8cpp.html"];
+  Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="SelectionDAGBuilder.cpp",height=0.2,width=0.4,color="black",URL="$SelectionDAGBuilder_8cpp.html"];
+  Node1 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="SelectionDAGISel.cpp",height=0.2,width=0.4,color="black",URL="$SelectionDAGISel_8cpp.html"];
+  Node1 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="ARMISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$ARMISelDAGToDAG_8cpp.html"];
+  Node1 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="SPUISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$SPUISelDAGToDAG_8cpp.html"];
+  Node1 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="HexagonISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$HexagonISelDAGToDAG_8cpp.html"];
+  Node1 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="HexagonISelLowering.cpp",height=0.2,width=0.4,color="black",URL="$HexagonISelLowering_8cpp.html"];
+  Node1 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="MBlazeISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeISelDAGToDAG_8cpp.html"];
+  Node1 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="MBlazeISelLowering.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeISelLowering_8cpp.html"];
+  Node1 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="MipsISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$MipsISelDAGToDAG_8cpp.html"];
+  Node1 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="MipsISelLowering.cpp",height=0.2,width=0.4,color="black",URL="$MipsISelLowering_8cpp.html"];
+  Node1 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="MSP430ISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$MSP430ISelDAGToDAG_8cpp.html"];
+  Node1 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="MSP430ISelLowering.cpp",height=0.2,width=0.4,color="black",URL="$MSP430ISelLowering_8cpp.html"];
+  Node1 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="NVPTXISelDAGToDAG.h",height=0.2,width=0.4,color="black",URL="$NVPTXISelDAGToDAG_8h.html"];
+  Node22 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="NVPTXISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$NVPTXISelDAGToDAG_8cpp.html"];
+  Node1 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="PPCISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$PPCISelDAGToDAG_8cpp.html"];
+  Node1 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="SparcISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$SparcISelDAGToDAG_8cpp.html"];
+  Node1 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="X86ISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$X86ISelDAGToDAG_8cpp.html"];
+  Node1 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="XCoreISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$XCoreISelDAGToDAG_8cpp.html"];
+  Node1 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="XCoreISelLowering.cpp",height=0.2,width=0.4,color="black",URL="$XCoreISelLowering_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGISel_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGISel_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGISel_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGISel_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,170 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="SelectionDAGISel.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="llvm/BasicBlock.h",height=0.2,width=0.4,color="black",URL="$BasicBlock_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Instruction.h",height=0.2,width=0.4,color="black",URL="$Instruction_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/User.h",height=0.2,width=0.4,color="red",URL="$User_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8h.html"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node5 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="red",URL="$StringRef_8h.html"];
+  Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="llvm/ADT/ilist_node.h",height=0.2,width=0.4,color="black",URL="$ilist__node_8h.html"];
+  Node3 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="llvm/Support/DebugLoc.h",height=0.2,width=0.4,color="black",URL="$DebugLoc_8h.html"];
+  Node3 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/Instruction.def",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/SymbolTableListTraits.h",height=0.2,width=0.4,color="black",URL="$SymbolTableListTraits_8h.html"];
+  Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="llvm/ADT/ilist.h",height=0.2,width=0.4,color="black",URL="$ilist_8h.html"];
+  Node16 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node16 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="black",URL="$Twine_8h.html"];
+  Node19 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node20 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node20 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node20 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node20 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node19 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/Pass.h",height=0.2,width=0.4,color="black",URL="$Pass_8h.html"];
+  Node25 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/PassSupport.h",height=0.2,width=0.4,color="black",URL="$PassSupport_8h.html"];
+  Node26 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/PassRegistry.h",height=0.2,width=0.4,color="black",URL="$PassRegistry_8h.html"];
+  Node27 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/InitializePasses.h",height=0.2,width=0.4,color="black",URL="$InitializePasses_8h.html"];
+  Node26 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Support/Atomic.h",height=0.2,width=0.4,color="black",URL="$Atomic_8h.html"];
+  Node29 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/Support/Valgrind.h",height=0.2,width=0.4,color="red",URL="$Valgrind_8h.html"];
+  Node30 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node25 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/PassAnalysisSupport.h",height=0.2,width=0.4,color="black",URL="$PassAnalysisSupport_8h.html"];
+  Node32 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="red",URL="$SmallVector_8h.html"];
+  Node33 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/CodeGen/SelectionDAG.h",height=0.2,width=0.4,color="black",URL="$SelectionDAG_8h.html"];
+  Node34 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/ADT/DenseSet.h",height=0.2,width=0.4,color="black",URL="$DenseSet_8h.html"];
+  Node35 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node36 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/ADT/StringMap.h",height=0.2,width=0.4,color="black",URL="$StringMap_8h.html"];
+  Node37 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/Support/Allocator.h",height=0.2,width=0.4,color="red",URL="$Allocator_8h.html"];
+  Node38 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/CodeGen/SelectionDAGNodes.h",height=0.2,width=0.4,color="red",URL="$SelectionDAGNodes_8h.html"];
+  Node39 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/Constants.h",height=0.2,width=0.4,color="red",URL="$Constants_8h.html"];
+  Node39 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/Instructions.h",height=0.2,width=0.4,color="red",URL="$Instructions_8h.html"];
+  Node41 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/ADT/FoldingSet.h",height=0.2,width=0.4,color="black",URL="$FoldingSet_8h.html"];
+  Node42 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/ADT/GraphTraits.h",height=0.2,width=0.4,color="black",URL="$GraphTraits_8h.html"];
+  Node39 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="red",URL="$SmallPtrSet_8h.html"];
+  Node44 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/ADT/STLExtras.h",height=0.2,width=0.4,color="red",URL="$STLExtras_8h.html"];
+  Node45 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/CodeGen/ISDOpcodes.h",height=0.2,width=0.4,color="black",URL="$ISDOpcodes_8h.html"];
+  Node39 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Support/RecyclingAllocator.h",height=0.2,width=0.4,color="red",URL="$RecyclingAllocator_8h.html"];
+  Node34 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Target/TargetMachine.h",height=0.2,width=0.4,color="red",URL="$Target_2TargetMachine_8h.html"];
+  Node48 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="map",height=0.2,width=0.4,color="grey75"];
+  Node34 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/CodeGen/MachineFunctionPass.h",height=0.2,width=0.4,color="black",URL="$MachineFunctionPass_8h.html"];
+  Node50 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGNodes_8h__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGNodes_8h__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGNodes_8h__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SelectionDAGNodes_8h__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+9d181a048c602477a6da4e3dde4a73e8
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SelectionDAG_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SelectionDAG_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SelectionDAG_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SelectionDAG_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+3f55ab5887e03c5c0bb0f42013de4f7f
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SetOperations_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SetOperations_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SetOperations_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SetOperations_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,15 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="SetOperations.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="PostDominators.cpp",height=0.2,width=0.4,color="black",URL="$PostDominators_8cpp.html"];
+  Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="MachineVerifier.cpp",height=0.2,width=0.4,color="black",URL="$MachineVerifier_8cpp.html"];
+  Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="LinkArchives.cpp",height=0.2,width=0.4,color="black",URL="$LinkArchives_8cpp.html"];
+  Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="LoopSimplify.cpp",height=0.2,width=0.4,color="black",URL="$LoopSimplify_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/SetOperations_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SetOperations_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SetOperations_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SetOperations_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,127 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SetOperations.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+      <li class="navelem"><a class="el" href="dir_5760af5717174facf3d4fa63878994a9.html">ADT</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">SetOperations.h</div>  </div>
+</div>
+<div class="contents">
+<a href="SetOperations_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- llvm/ADT/SetOperations.h - Generic Set Operations -------*- C++ -*-===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This file defines generic set operations that may be used on set's of</span>
+<a name="l00011"></a>00011 <span class="comment">// different types, and different element types.</span>
+<a name="l00012"></a>00012 <span class="comment">//</span>
+<a name="l00013"></a>00013 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00014"></a>00014 
+<a name="l00015"></a>00015 <span class="preprocessor">#ifndef LLVM_ADT_SETOPERATIONS_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_ADT_SETOPERATIONS_H</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span>
+<a name="l00018"></a>00018 <span class="keyword">namespace </span>llvm {
+<a name="l00019"></a>00019 <span class="comment"></span>
+<a name="l00020"></a>00020 <span class="comment">/// set_union(A, B) - Compute A := A u B, return whether A changed.</span>
+<a name="l00021"></a>00021 <span class="comment">///</span>
+<a name="l00022"></a>00022 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> S1Ty, <span class="keyword">class</span> S2Ty>
+<a name="l00023"></a><a class="code" href="namespacellvm.html#a8b4f88b1fadc8f51a643e5faaa13afa6">00023</a> <span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#a8b4f88b1fadc8f51a643e5faaa13afa6">set_union</a>(S1Ty &S1, <span class="keyword">const</span> S2Ty &S2) {
+<a name="l00024"></a>00024   <span class="keywordtype">bool</span> Changed = <span class="keyword">false</span>;
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026   <span class="keywordflow">for</span> (<span class="keyword">typename</span> S2Ty::const_iterator SI = S2.begin(), SE = S2.end();
+<a name="l00027"></a>00027        SI != SE; ++SI)
+<a name="l00028"></a>00028     <span class="keywordflow">if</span> (S1.insert(*SI).second)
+<a name="l00029"></a>00029       Changed = <span class="keyword">true</span>;
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031   <span class="keywordflow">return</span> Changed;
+<a name="l00032"></a>00032 }
+<a name="l00033"></a>00033 <span class="comment"></span>
+<a name="l00034"></a>00034 <span class="comment">/// set_intersect(A, B) - Compute A := A ^ B</span>
+<a name="l00035"></a>00035 <span class="comment">/// Identical to set_intersection, except that it works on set<>'s and</span>
+<a name="l00036"></a>00036 <span class="comment">/// is nicer to use.  Functionally, this iterates through S1, removing</span>
+<a name="l00037"></a>00037 <span class="comment">/// elements that are not contained in S2.</span>
+<a name="l00038"></a>00038 <span class="comment">///</span>
+<a name="l00039"></a>00039 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> S1Ty, <span class="keyword">class</span> S2Ty>
+<a name="l00040"></a><a class="code" href="namespacellvm.html#a2162d123f222998300d308bdefdb38b9">00040</a> <span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#a2162d123f222998300d308bdefdb38b9">set_intersect</a>(S1Ty &S1, <span class="keyword">const</span> S2Ty &S2) {
+<a name="l00041"></a>00041    <span class="keywordflow">for</span> (<span class="keyword">typename</span> S1Ty::iterator <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = S1.begin(); <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != S1.end();) {
+<a name="l00042"></a>00042      <span class="keyword">const</span> <span class="keyword">typename</span> S1Ty::key_type &E = *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00043"></a>00043      ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00044"></a>00044      <span class="keywordflow">if</span> (!S2.count(E)) S1.erase(E);   <span class="comment">// Erase element if not in S2</span>
+<a name="l00045"></a>00045    }
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047 <span class="comment"></span>
+<a name="l00048"></a>00048 <span class="comment">/// set_difference(A, B) - Return A - B</span>
+<a name="l00049"></a>00049 <span class="comment">///</span>
+<a name="l00050"></a>00050 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> S1Ty, <span class="keyword">class</span> S2Ty>
+<a name="l00051"></a><a class="code" href="namespacellvm.html#ab471ffb4e400f1f924442e9149ce1b87">00051</a> S1Ty <a class="code" href="namespacellvm.html#ab471ffb4e400f1f924442e9149ce1b87">set_difference</a>(<span class="keyword">const</span> S1Ty &S1, <span class="keyword">const</span> S2Ty &S2) {
+<a name="l00052"></a>00052   S1Ty Result;
+<a name="l00053"></a>00053   <span class="keywordflow">for</span> (<span class="keyword">typename</span> S1Ty::const_iterator SI = S1.begin(), SE = S1.end();
+<a name="l00054"></a>00054        SI != SE; ++SI)
+<a name="l00055"></a>00055     <span class="keywordflow">if</span> (!S2.count(*SI))       <span class="comment">// if the element is not in set2</span>
+<a name="l00056"></a>00056       Result.insert(*SI);
+<a name="l00057"></a>00057   <span class="keywordflow">return</span> Result;
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 <span class="comment"></span>
+<a name="l00060"></a>00060 <span class="comment">/// set_subtract(A, B) - Compute A := A - B</span>
+<a name="l00061"></a>00061 <span class="comment">///</span>
+<a name="l00062"></a>00062 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> S1Ty, <span class="keyword">class</span> S2Ty>
+<a name="l00063"></a><a class="code" href="namespacellvm.html#a3e1137200d6e86367be1d605fdc14e6c">00063</a> <span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#a3e1137200d6e86367be1d605fdc14e6c">set_subtract</a>(S1Ty &S1, <span class="keyword">const</span> S2Ty &S2) {
+<a name="l00064"></a>00064   <span class="keywordflow">for</span> (<span class="keyword">typename</span> S2Ty::const_iterator SI = S2.begin(), SE = S2.end();
+<a name="l00065"></a>00065        SI != SE; ++SI)
+<a name="l00066"></a>00066     S1.erase(*SI);
+<a name="l00067"></a>00067 }
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069 } <span class="comment">// End llvm namespace</span>
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:37:50 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SetVector_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SetVector_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SetVector_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SetVector_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,84 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="SetVector.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="FindUsedTypes.h",height=0.2,width=0.4,color="black",URL="$FindUsedTypes_8h.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="LinkAllPasses.h",height=0.2,width=0.4,color="black",URL="$LinkAllPasses_8h.html"];
+  Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="FindUsedTypes.cpp",height=0.2,width=0.4,color="black",URL="$FindUsedTypes_8cpp.html"];
+  Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="CodeExtractor.h",height=0.2,width=0.4,color="black",URL="$CodeExtractor_8h.html"];
+  Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="LoopExtractor.cpp",height=0.2,width=0.4,color="black",URL="$LoopExtractor_8cpp.html"];
+  Node5 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="PartialInlining.cpp",height=0.2,width=0.4,color="black",URL="$PartialInlining_8cpp.html"];
+  Node5 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="CodeExtractor.cpp",height=0.2,width=0.4,color="black",URL="$CodeExtractor_8cpp.html"];
+  Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="AliasAnalysisEvaluator.cpp",height=0.2,width=0.4,color="black",URL="$AliasAnalysisEvaluator_8cpp.html"];
+  Node1 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="InlineCost.cpp",height=0.2,width=0.4,color="black",URL="$InlineCost_8cpp.html"];
+  Node1 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="InstructionSimplify.cpp",height=0.2,width=0.4,color="black",URL="$InstructionSimplify_8cpp.html"];
+  Node1 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="MemDepPrinter.cpp",height=0.2,width=0.4,color="black",URL="$MemDepPrinter_8cpp.html"];
+  Node1 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="DwarfDebug.h",height=0.2,width=0.4,color="black",URL="$DwarfDebug_8h.html"];
+  Node13 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="AsmPrinter.cpp",height=0.2,width=0.4,color="black",URL="$AsmPrinter_8cpp.html"];
+  Node13 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="DwarfAccelTable.cpp",height=0.2,width=0.4,color="black",URL="$DwarfAccelTable_8cpp.html"];
+  Node13 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="DwarfCompileUnit.cpp",height=0.2,width=0.4,color="black",URL="$DwarfCompileUnit_8cpp.html"];
+  Node13 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="DwarfDebug.cpp",height=0.2,width=0.4,color="black",URL="$DwarfDebug_8cpp.html"];
+  Node1 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="BranchFolding.cpp",height=0.2,width=0.4,color="black",URL="$BranchFolding_8cpp.html"];
+  Node1 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="EarlyIfConversion.cpp",height=0.2,width=0.4,color="black",URL="$EarlyIfConversion_8cpp.html"];
+  Node1 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="LiveRangeEdit.cpp",height=0.2,width=0.4,color="black",URL="$LiveRangeEdit_8cpp.html"];
+  Node1 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="MachineCopyPropagation.cpp",height=0.2,width=0.4,color="black",URL="$MachineCopyPropagation_8cpp.html"];
+  Node1 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="ProcessImplicitDefs.cpp",height=0.2,width=0.4,color="black",URL="$ProcessImplicitDefs_8cpp.html"];
+  Node1 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="LegalizeTypes.cpp",height=0.2,width=0.4,color="black",URL="$LegalizeTypes_8cpp.html"];
+  Node1 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="SelectionDAG.cpp",height=0.2,width=0.4,color="black",URL="$SelectionDAG_8cpp.html"];
+  Node1 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="SjLjEHPrepare.cpp",height=0.2,width=0.4,color="black",URL="$SjLjEHPrepare_8cpp.html"];
+  Node1 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="StackColoring.cpp",height=0.2,width=0.4,color="black",URL="$StackColoring_8cpp.html"];
+  Node1 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="TailDuplication.cpp",height=0.2,width=0.4,color="black",URL="$TailDuplication_8cpp.html"];
+  Node1 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="LinkModules.cpp",height=0.2,width=0.4,color="black",URL="$LinkModules_8cpp.html"];
+  Node1 -> Node29 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="ARMAsmPrinter.cpp",height=0.2,width=0.4,color="black",URL="$ARMAsmPrinter_8cpp.html"];
+  Node1 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="ExtractGV.cpp",height=0.2,width=0.4,color="black",URL="$ExtractGV_8cpp.html"];
+  Node1 -> Node31 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="FunctionAttrs.cpp",height=0.2,width=0.4,color="black",URL="$FunctionAttrs_8cpp.html"];
+  Node1 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="DeadStoreElimination.cpp",height=0.2,width=0.4,color="black",URL="$DeadStoreElimination_8cpp.html"];
+  Node1 -> Node33 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="LoopStrengthReduce.cpp",height=0.2,width=0.4,color="black",URL="$LoopStrengthReduce_8cpp.html"];
+  Node1 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="Reassociate.cpp",height=0.2,width=0.4,color="black",URL="$Reassociate_8cpp.html"];
+  Node1 -> Node35 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="ScalarReplAggregates.cpp",height=0.2,width=0.4,color="black",URL="$ScalarReplAggregates_8cpp.html"];
+  Node1 -> Node36 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="SROA.cpp",height=0.2,width=0.4,color="black",URL="$SROA_8cpp.html"];
+  Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node37 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="LoopSimplify.cpp",height=0.2,width=0.4,color="black",URL="$LoopSimplify_8cpp.html"];
+  Node1 -> Node38 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="SimplifyCFG.cpp",height=0.2,width=0.4,color="black",URL="$SimplifyCFG_8cpp.html"];
+  Node1 -> Node39 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="Verifier.cpp",height=0.2,width=0.4,color="black",URL="$Verifier_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/ShadowStackGC_8cpp__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ShadowStackGC_8cpp__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ShadowStackGC_8cpp__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ShadowStackGC_8cpp__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+1e463638373902137ce6193add824cd8
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/Signals_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Signals_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Signals_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Signals_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,92 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: Signals.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+      <li class="navelem"><a class="el" href="dir_b423301f639fc46b24b2c9f122fcaff7.html">Support</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Signals.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Path_8h_source.html">llvm/Support/Path.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Signals.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="Signals_8h__incl.png" border="0" usemap="#Signals_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="Signals_8h__dep__incl.png" border="0" usemap="#Signals_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="Signals_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html">llvm::sys</a></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#ab0938d8ccb6550ddc3865f45b48acb6e">llvm::sys::RunInterruptHandlers</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#a1234ad09731de4f5ccb752e4b725b74f">llvm::sys::RemoveFileOnSignal</a> (const Path &Filename, std::string *ErrMsg=0)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove a file if a fatal signal occurs.  <a href="#a1234ad09731de4f5ccb752e4b725b74f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#a6fcceec42fab0f9a175d253d93e94a04">llvm::sys::DontRemoveFileOnSignal</a> (const Path &Filename)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#a1c53d06f194371ad604d99f5f416d0e7">llvm::sys::PrintStackTraceOnErrorSignal</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Print a stack trace if a fatal signal occurs.  <a href="#a1c53d06f194371ad604d99f5f416d0e7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#aa6f5fa67b69147b9ccba1a2fb6274f07">llvm::sys::AddSignalHandler</a> (void(*FnPtr)(void *), void *Cookie)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#a03a7c4c80c31a619c5e452314166401a">llvm::sys::SetInterruptFunction</a> (void(*IF)())</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Register a function to be called when ctrl-c is pressed.  <a href="#a03a7c4c80c31a619c5e452314166401a"></a><br/></td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:40 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SimplifyCFGPass_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SimplifyCFGPass_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SimplifyCFGPass_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SimplifyCFGPass_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,361 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SimplifyCFGPass.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_22ea62e2015f6a823fddac4ac38ba517.html">Transforms</a>      </li>
+      <li class="navelem"><a class="el" href="dir_19df7bbd99eeba0b048ee47f392d9ea7.html">Scalar</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Defines</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">SimplifyCFGPass.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Transforms_2Scalar_8h_source.html">llvm/Transforms/Scalar.h</a>"</code><br/>
+<code>#include "<a class="el" href="Local_8h_source.html">llvm/Transforms/Utils/Local.h</a>"</code><br/>
+<code>#include "<a class="el" href="Constants_8h_source.html">llvm/Constants.h</a>"</code><br/>
+<code>#include "<a class="el" href="Instructions_8h_source.html">llvm/Instructions.h</a>"</code><br/>
+<code>#include "<a class="el" href="IntrinsicInst_8h_source.html">llvm/IntrinsicInst.h</a>"</code><br/>
+<code>#include "<a class="el" href="Module_8h_source.html">llvm/Module.h</a>"</code><br/>
+<code>#include "<a class="el" href="Attributes_8h_source.html">llvm/Attributes.h</a>"</code><br/>
+<code>#include "<a class="el" href="CFG_8h_source.html">llvm/Support/CFG.h</a>"</code><br/>
+<code>#include "<a class="el" href="Pass_8h_source.html">llvm/Pass.h</a>"</code><br/>
+<code>#include "<a class="el" href="DataLayout_8h_source.html">llvm/DataLayout.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallVector_8h_source.html">llvm/ADT/SmallVector.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallPtrSet_8h_source.html">llvm/ADT/SmallPtrSet.h</a>"</code><br/>
+<code>#include "<a class="el" href="Statistic_8h_source.html">llvm/ADT/Statistic.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetTransformInfo_8h_source.html">llvm/TargetTransformInfo.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for SimplifyCFGPass.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="SimplifyCFGPass_8cpp__incl.png" border="0" usemap="#SimplifyCFGPass_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="SimplifyCFGPass_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFGPass_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "simplifycfg"</td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFGPass_8cpp.html#a4b8fdf4ef317ca608404ea1520dd4018">STATISTIC</a> (NumSimpl,"Number of blocks simplified")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFGPass_8cpp.html#a680c83392d00c672992e7c39dddfcacc">INITIALIZE_PASS</a> (CFGSimplifyPass,"simplifycfg","Simplify the CFG", false, <a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>) <a class="el" href="classllvm_1_1FunctionPass.html">FunctionPass</a> *llvm</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFGPass_8cpp.html#af1b9e1d3bfd0b9789e6fc6722a469cd0">changeToUnreachable</a> (<a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *I, <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> UseLLVMTrap)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFGPass_8cpp.html#a9c38b28e2d47462e50d2b593152332bb">changeToCall</a> (<a class="el" href="classllvm_1_1InvokeInst.html">InvokeInst</a> *II)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">changeToCall - Convert the specified invoke into a normal call.  <a href="#a9c38b28e2d47462e50d2b593152332bb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFGPass_8cpp.html#af2b1806cee1e1d34c8d40650041ce734">markAliveBlocks</a> (<a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *BB, <a class="el" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet</a>< <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *, 128 > &Reachable)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFGPass_8cpp.html#aaffd3c5b7dfe91876a436dacde4ae252">removeUnreachableBlocksFromFn</a> (<a class="el" href="classllvm_1_1Function.html">Function</a> &F)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFGPass_8cpp.html#a5a7c5245d801c4bdbde970b12a5e1a7c">mergeEmptyReturnBlocks</a> (<a class="el" href="classllvm_1_1Function.html">Function</a> &F)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFGPass_8cpp.html#a3fbc087f56e99e4e67f0ce184a7efee7">iterativelySimplifyCFG</a> (<a class="el" href="classllvm_1_1Function.html">Function</a> &F, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD, const <a class="el" href="classllvm_1_1TargetTransformInfo.html">TargetTransformInfo</a> *TTI)</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="SimplifyCFGPass.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "simplifycfg"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00024">24</a> of file <a class="el" href="SimplifyCFGPass_8cpp_source.html">SimplifyCFGPass.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a9c38b28e2d47462e50d2b593152332bb"></a><!-- doxytag: member="SimplifyCFGPass.cpp::changeToCall" ref="a9c38b28e2d47462e50d2b593152332bb" args="(InvokeInst *II)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void changeToCall </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1InvokeInst.html">InvokeInst</a> * </td>
+          <td class="paramname"><em>II</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>changeToCall - Convert the specified invoke into a normal call. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00092">92</a> of file <a class="el" href="SimplifyCFGPass_8cpp_source.html">SimplifyCFGPass.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l01184">llvm::CallInst::Create()</a>, <a class="el" href="Instructions_8h_source.html#l02359">llvm::BranchInst::Create()</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="Instructions_8h_source.html#l03006">llvm::InvokeInst::getAttributes()</a>, <a class="el" href="Instructions_8h_source.html#l03092">llvm::InvokeInst::getCalledValue()</a>, <a class="el" href="Instructions_8h_source.html#l02997">llvm::InvokeInst::getCallingConv()</a>, <a class="el" href="Instruction_8h_source.html#l00177">llvm::Instruction::getDebugLoc()</a>, <a class="el" href="Instructions_8h_source.html#l03101">llvm::InvokeInst::getNormalDest()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="Instructions_8h_source.html#l03104">llvm::InvokeInst::getUnwindDest()</a>, <a class="el" href="User_8h_source.html#l
 00116">llvm::User::op_begin()</a>, <a class="el" href="User_8h_source.html#l00118">llvm::User::op_end()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00216">llvm::BasicBlock::removePredecessor()</a>, and <a class="el" href="Value_8cpp_source.html#l00297">llvm::Value::replaceAllUsesWith()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00109">markAliveBlocks()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af1b9e1d3bfd0b9789e6fc6722a469cd0"></a><!-- doxytag: member="SimplifyCFGPass.cpp::changeToUnreachable" ref="af1b9e1d3bfd0b9789e6fc6722a469cd0" args="(Instruction *I, bool UseLLVMTrap)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void changeToUnreachable </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Instruction.html">Instruction</a> * </td>
+          <td class="paramname"><em>I</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td>
+          <td class="paramname"><em>UseLLVMTrap</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>changeToUnreachable - Insert an unreachable instruction before the specified instruction, making it and the rest of the code in the block dead. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00065">65</a> of file <a class="el" href="SimplifyCFGPass_8cpp_source.html">SimplifyCFGPass.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l01184">llvm::CallInst::Create()</a>, <a class="el" href="BasicBlock_8h_source.html#l00191">llvm::BasicBlock::end()</a>, <a class="el" href="Constants_8cpp_source.html#l01278">llvm::UndefValue::get()</a>, <a class="el" href="Value_8cpp_source.html#l00468">llvm::Value::getContext()</a>, <a class="el" href="Instruction_8h_source.html#l00177">llvm::Instruction::getDebugLoc()</a>, <a class="el" href="Function_8cpp_source.html#l00611">llvm::Intrinsic::getDeclaration()</a>, <a class="el" href="BasicBlock_8h_source.html#l00204">llvm::BasicBlock::getInstList()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="BasicBlock_8h_source.html#l00110">llvm::BasicBlock::getParent()</a>, <a class="el" href="GlobalValue_8h_source.html#l00286">llvm::GlobalValue::getParent()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" 
 href="BasicBlock_8cpp_source.html#l00216">llvm::BasicBlock::removePredecessor()</a>, <a class="el" href="Interval_8h_source.html#l00107">llvm::succ_begin()</a>, and <a class="el" href="Interval_8h_source.html#l00110">llvm::succ_end()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00109">markAliveBlocks()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a680c83392d00c672992e7c39dddfcacc"></a><!-- doxytag: member="SimplifyCFGPass.cpp::INITIALIZE_PASS" ref="a680c83392d00c672992e7c39dddfcacc" args="(CFGSimplifyPass,"simplifycfg","Simplify the CFG", false, false) FunctionPass *llvm" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">INITIALIZE_PASS </td>
+          <td>(</td>
+          <td class="paramtype">CFGSimplifyPass </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"simplifycfg" </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Simplify the CFG" </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a> </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a> </td>
+          <td class="paramname"> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00055">55</a> of file <a class="el" href="SimplifyCFGPass_8cpp_source.html">SimplifyCFGPass.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3fbc087f56e99e4e67f0ce184a7efee7"></a><!-- doxytag: member="SimplifyCFGPass.cpp::iterativelySimplifyCFG" ref="a3fbc087f56e99e4e67f0ce184a7efee7" args="(Function &F, const DataLayout *TD, const TargetTransformInfo *TTI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> iterativelySimplifyCFG </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Function.html">Function</a> & </td>
+          <td class="paramname"><em>F</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> * </td>
+          <td class="paramname"><em>TD</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1TargetTransformInfo.html">TargetTransformInfo</a> * </td>
+          <td class="paramname"><em>TTI</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>iterativelySimplifyCFG - Call SimplifyCFG on all the blocks in the function, iterating until no more changes are made. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00297">297</a> of file <a class="el" href="SimplifyCFGPass_8cpp_source.html">SimplifyCFGPass.cpp</a>.</p>
+
+<p>References <a class="el" href="Function_8h_source.html#l00350">llvm::Function::begin()</a>, <a class="el" href="Function_8h_source.html#l00352">llvm::Function::end()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l04001">llvm::SimplifyCFG()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af2b1806cee1e1d34c8d40650041ce734"></a><!-- doxytag: member="SimplifyCFGPass.cpp::markAliveBlocks" ref="af2b1806cee1e1d34c8d40650041ce734" args="(BasicBlock *BB, SmallPtrSet< BasicBlock *, 128 > &Reachable)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> markAliveBlocks </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>BB</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet</a>< <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *, 128 > & </td>
+          <td class="paramname"><em>Reachable</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00109">109</a> of file <a class="el" href="SimplifyCFGPass_8cpp_source.html">SimplifyCFGPass.cpp</a>.</p>
+
+<p>References <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00092">changeToCall()</a>, <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00065">changeToUnreachable()</a>, <a class="el" href="Local_8cpp_source.html#l00056">llvm::ConstantFoldTerminator()</a>, <a class="el" href="Instructions_8h_source.html#l02359">llvm::BranchInst::Create()</a>, <a class="el" href="SmallVector_8h_source.html#l00055">llvm::SmallVectorBase::empty()</a>, <a class="el" href="BasicBlock_8h_source.html#l00191">llvm::BasicBlock::end()</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="SmallPtrSet_8h_source.html#l00254">llvm::SmallPtrSet< PtrType, SmallSize >::insert()</a>, <a class="el" href="SmallVector_8h_source.html#l00424">llvm::S
 mallVectorImpl< T >::pop_back_val()</a>, <a class="el" href="SmallVector_8h_source.html#l00231">llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back()</a>, <a class="el" href="Interval_8h_source.html#l00107">llvm::succ_begin()</a>, and <a class="el" href="Interval_8h_source.html#l00110">llvm::succ_end()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00187">removeUnreachableBlocksFromFn()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5a7c5245d801c4bdbde970b12a5e1a7c"></a><!-- doxytag: member="SimplifyCFGPass.cpp::mergeEmptyReturnBlocks" ref="a5a7c5245d801c4bdbde970b12a5e1a7c" args="(Function &F)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> mergeEmptyReturnBlocks </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Function.html">Function</a> & </td>
+          <td class="paramname"><em>F</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>mergeEmptyReturnBlocks - If we have more than one empty (other than phi node) return blocks, merge them together to promote recursive block merging. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00221">221</a> of file <a class="el" href="SimplifyCFGPass_8cpp_source.html">SimplifyCFGPass.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l02086">llvm::PHINode::addIncoming()</a>, <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="Function_8h_source.html#l00350">llvm::Function::begin()</a>, <a class="el" href="Instructions_8h_source.html#l01999">llvm::PHINode::Create()</a>, <a class="el" href="Instructions_8h_source.html#l02359">llvm::BranchInst::Create()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Function_8h_source.html#l00352">llvm::Function::end()</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00100">llvm::BasicBlock::eraseFromParent()</a>, <a class="el" href="BasicBlock_8h_source.html#l00196">llvm::BasicBlock::front()</a>, <a class="el" href="User_8h_source.html#l00108">llvm::User::getNumOperands()</a>, <a class="el" href="User_8h_sou
 rce.html#l00088">llvm::User::getOperand()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="Interval_8h_source.html#l00117">llvm::pred_begin()</a>, <a class="el" href="Interval_8h_source.html#l00120">llvm::pred_end()</a>, <a class="el" href="Value_8cpp_source.html#l00297">llvm::Value::replaceAllUsesWith()</a>, <a class="el" href="MBlazeISelLowering_8h_source.html#l00082">llvm::MBlazeISD::Ret</a>, and <a class="el" href="User_8h_source.html#l00092">llvm::User::setOperand()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaffd3c5b7dfe91876a436dacde4ae252"></a><!-- doxytag: member="SimplifyCFGPass.cpp::removeUnreachableBlocksFromFn" ref="aaffd3c5b7dfe91876a436dacde4ae252" args="(Function &F)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> removeUnreachableBlocksFromFn </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Function.html">Function</a> & </td>
+          <td class="paramname"><em>F</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>removeUnreachableBlocksFromFn - Remove blocks that are not reachable, even if they are in a dead cycle. Return true if a change was made, false otherwise. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00187">187</a> of file <a class="el" href="SimplifyCFGPass_8cpp_source.html">SimplifyCFGPass.cpp</a>.</p>
+
+<p>References <a class="el" href="Function_8h_source.html#l00350">llvm::Function::begin()</a>, <a class="el" href="SmallPtrSet_8h_source.html#l00265">llvm::SmallPtrSet< PtrType, SmallSize >::count()</a>, <a class="el" href="Function_8h_source.html#l00352">llvm::Function::end()</a>, <a class="el" href="Function_8h_source.html#l00329">llvm::Function::getBasicBlockList()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="SimplifyCFGPass_8cpp_source.html#l00109">markAliveBlocks()</a>, <a class="el" href="SmallPtrSet_8h_source.html#l00080">llvm::SmallPtrSetImpl::size()</a>, <a class="el" href="Function_8h_source.html#l00355">llvm::Function::size()</a>, <a class="el" href="Interval_8h_source.html#l00107">llvm::succ_begin()</a>, and <a class="el" href="Interval_8h_source.html#l00110">llvm::succ_end()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4b8fdf4ef317ca608404ea1520dd4018"></a><!-- doxytag: member="SimplifyCFGPass.cpp::STATISTIC" ref="a4b8fdf4ef317ca608404ea1520dd4018" args="(NumSimpl,"Number of blocks simplified")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumSimpl </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of blocks simplified" </td>
+          <td class="paramname"> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:40 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SimplifyCFGPass_8cpp__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SimplifyCFGPass_8cpp__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SimplifyCFGPass_8cpp__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SimplifyCFGPass_8cpp__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+df27925d703adb4492d74542ad8f6ea3
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SimplifyCFG_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SimplifyCFG_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SimplifyCFG_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SimplifyCFG_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,1806 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SimplifyCFG.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_22ea62e2015f6a823fddac4ac38ba517.html">Transforms</a>      </li>
+      <li class="navelem"><a class="el" href="dir_256b03a856f3de95632a509cd258a236.html">Utils</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Defines</a> |
+<a href="#func-members">Functions</a> |
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">SimplifyCFG.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Local_8h_source.html">llvm/Transforms/Utils/Local.h</a>"</code><br/>
+<code>#include "<a class="el" href="Constants_8h_source.html">llvm/Constants.h</a>"</code><br/>
+<code>#include "<a class="el" href="DataLayout_8h_source.html">llvm/DataLayout.h</a>"</code><br/>
+<code>#include "<a class="el" href="DerivedTypes_8h_source.html">llvm/DerivedTypes.h</a>"</code><br/>
+<code>#include "<a class="el" href="GlobalVariable_8h_source.html">llvm/GlobalVariable.h</a>"</code><br/>
+<code>#include "<a class="el" href="IRBuilder_8h_source.html">llvm/IRBuilder.h</a>"</code><br/>
+<code>#include "<a class="el" href="Instructions_8h_source.html">llvm/Instructions.h</a>"</code><br/>
+<code>#include "<a class="el" href="IntrinsicInst_8h_source.html">llvm/IntrinsicInst.h</a>"</code><br/>
+<code>#include "<a class="el" href="LLVMContext_8h_source.html">llvm/LLVMContext.h</a>"</code><br/>
+<code>#include "<a class="el" href="MDBuilder_8h_source.html">llvm/MDBuilder.h</a>"</code><br/>
+<code>#include "<a class="el" href="Metadata_8h_source.html">llvm/Metadata.h</a>"</code><br/>
+<code>#include "<a class="el" href="Module_8h_source.html">llvm/Module.h</a>"</code><br/>
+<code>#include "<a class="el" href="Operator_8h_source.html">llvm/Operator.h</a>"</code><br/>
+<code>#include "<a class="el" href="Type_8h_source.html">llvm/Type.h</a>"</code><br/>
+<code>#include "<a class="el" href="DenseMap_8h_source.html">llvm/ADT/DenseMap.h</a>"</code><br/>
+<code>#include "<a class="el" href="STLExtras_8h_source.html">llvm/ADT/STLExtras.h</a>"</code><br/>
+<code>#include "<a class="el" href="SetVector_8h_source.html">llvm/ADT/SetVector.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallPtrSet_8h_source.html">llvm/ADT/SmallPtrSet.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallVector_8h_source.html">llvm/ADT/SmallVector.h</a>"</code><br/>
+<code>#include "<a class="el" href="Statistic_8h_source.html">llvm/ADT/Statistic.h</a>"</code><br/>
+<code>#include "<a class="el" href="InstructionSimplify_8h_source.html">llvm/Analysis/InstructionSimplify.h</a>"</code><br/>
+<code>#include "<a class="el" href="ValueTracking_8h_source.html">llvm/Analysis/ValueTracking.h</a>"</code><br/>
+<code>#include "<a class="el" href="CFG_8h_source.html">llvm/Support/CFG.h</a>"</code><br/>
+<code>#include "<a class="el" href="CommandLine_8h_source.html">llvm/Support/CommandLine.h</a>"</code><br/>
+<code>#include "<a class="el" href="ConstantRange_8h_source.html">llvm/Support/ConstantRange.h</a>"</code><br/>
+<code>#include "<a class="el" href="Debug_8h_source.html">llvm/Support/Debug.h</a>"</code><br/>
+<code>#include "<a class="el" href="NoFolder_8h_source.html">llvm/Support/NoFolder.h</a>"</code><br/>
+<code>#include "<a class="el" href="raw__ostream_8h_source.html">llvm/Support/raw_ostream.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetTransformInfo_8h_source.html">llvm/TargetTransformInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="BasicBlockUtils_8h_source.html">llvm/Transforms/Utils/BasicBlockUtils.h</a>"</code><br/>
+<code>#include <algorithm></code><br/>
+<code>#include <set></code><br/>
+<code>#include <map></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for SimplifyCFG.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="SimplifyCFG_8cpp__incl.png" border="0" usemap="#SimplifyCFG_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="SimplifyCFG_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "simplifycfg"</td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a094edb4846824b6513167facc6a7afe1">STATISTIC</a> (NumBitMaps,"Number of switch <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a> turned into bitmaps")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a3b805cb990220111f878d52811233df0">STATISTIC</a> (NumLookupTables,"Number of switch <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a> turned into lookup tables")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#afef79ee5b4feaa59ddd09123c1ae3f6a">STATISTIC</a> (NumSinkCommons,"Number of common <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a> sunk down to the end block")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#ab4d51f817ed15e19df3ba4e102c25207">STATISTIC</a> (NumSpeculations,"Number of speculative executed <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a>")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a02215e210f29948498aeb844022afe53">SafeToMergeTerminators</a> (<a class="el" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> *SI1, <a class="el" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> *SI2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a69987e50a47c1566fa22b3cfd696e7ea">isProfitableToFoldUnconditional</a> (<a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> *SI1, <a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> *SI2, <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *Cond, <a class="el" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a>< <a class="el" href="classllvm_1_1PHINode.html">PHINode</a> * > &PhiNodes)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#adfeed3997bba12e75a8e51d740f1969d">AddPredecessorToBlock</a> (<a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *Succ, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *NewPred, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *ExistPred)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1Value.html">Value</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a872693f6b0f3efb05e9a599e9a24c839">GetIfCondition</a> (<a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *BB, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *&IfTrue, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *&IfFalse)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classunsigned.html">unsigned</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#aaaae27d25fe7431c2ad47c4fb12273e8">ComputeSpeculationCost</a> (const <a class="el" href="classllvm_1_1User.html">User</a> *I)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#ad3acb8f156ef3691661eae4471cb4887">DominatesMergePoint</a> (<a class="el" href="classllvm_1_1Value.html">Value</a> *V, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *BB, <a class="el" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet</a>< <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *, 4 > *AggressiveInsts, <a class="el" href="classunsigned.html">unsigned</a> &CostRemaining)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a0b050aae0f188426acd4124d39e50ae6">GetConstantInt</a> (<a class="el" href="classllvm_1_1Value.html">Value</a> *V, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1Value.html">Value</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#aa62a063a23f704f9544485e57858b670">GatherConstantCompares</a> (<a class="el" href="classllvm_1_1Value.html">Value</a> *V, std::vector< <a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a> * > &Vals, <a class="el" href="classllvm_1_1Value.html">Value</a> *&Extra, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD, <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isEQ, <a class="el" href="classunsigned.html">unsigned</a> &UsedICmps)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#ad04d12b08532d23bbd327a7024caad89">EraseTerminatorInstAndDCECond</a> (<a class="el" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> *TI)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a38517d96538b847c6c3dbe58965c8053">EliminateBlockCases</a> (<a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *BB, std::vector< ValueEqualityComparisonCase > &Cases)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#aaba6ba9e89bea12994fa7a7a6ade4d38">ValuesOverlap</a> (std::vector< ValueEqualityComparisonCase > &C1, std::vector< ValueEqualityComparisonCase > &C2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a31b649e28babc24eeefe7f6f9c9645d7">ConstantIntSortPredicate</a> (const void *P1, const void *P2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#ada99fd4fd27356d1518273d8248940a5">HasBranchWeights</a> (const <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *I)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a165512f38f31f01e7f18bf3838f3a12e">GetBranchWeights</a> (<a class="el" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> *TI, <a class="el" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a>< uint64_t > &Weights)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a95ec32778f2bb913dc4cc45ac7a66e42">FitWeights</a> (<a class="el" href="classllvm_1_1MutableArrayRef.html">MutableArrayRef</a>< uint64_t > Weights)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a3aaba0277f5dd5636e099fa81c20c533">isSafeToHoistInvoke</a> (<a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *BB1, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *BB2, <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *I1, <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *I2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a6434e674d53619188f1a6b4bac3b304e">HoistThenElseCodeToIf</a> (<a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> *BI)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a136cc7ed9c1041928df9f03631026a0d">SinkThenElseCodeToEnd</a> (<a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> *BI1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a9ea7032961696413a2b145bedf1224ad">SpeculativelyExecuteBB</a> (<a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> *BI, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *BB1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a03a2d451a241c934af3405a7cfc8adb4">BlockIsSimpleEnoughToThreadThrough</a> (<a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *BB)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a1e3544295480ec7b23c650873d046538">FoldCondBranchOnPHI</a> (<a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> *BI, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a518d290fbe6b5f5e314e5b4e29780635">FoldTwoEntryPHINode</a> (<a class="el" href="classllvm_1_1PHINode.html">PHINode</a> *PN, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a2e1b28b7b4b85744d3a02881d4601122">SimplifyCondBranchToTwoReturns</a> (<a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> *BI, <a class="el" href="classllvm_1_1IRBuilder.html">IRBuilder</a><> &Builder)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a50c9506d55e08fb67115a29dde75388a">ExtractBranchMetadata</a> (<a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> *BI, uint64_t &ProbTrue, uint64_t &ProbFalse)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a747b33c392f2a4faef1bf40a4d169c7d">checkCSEInPredecessor</a> (<a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *Inst, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *PB)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a285d756a993fe2460d35129ba58f92a2">SimplifyCondBranchToCondBranch</a> (<a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> *PBI, <a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> *BI)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#aae15857ee04fb44315481a693e4562c4">SimplifyTerminatorOnSelect</a> (<a class="el" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> *OldTerm, <a class="el" href="classllvm_1_1Value.html">Value</a> *Cond, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *TrueBB, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *FalseBB, uint32_t TrueWeight, uint32_t FalseWeight)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#af0d7fe1e3aa12d83e0af774a398d34ab">SimplifySwitchOnSelect</a> (<a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI, <a class="el" href="classllvm_1_1SelectInst.html">SelectInst</a> *Select)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a3ab1a6ec499c9bfd45258e149aa555c5">SimplifyIndirectBrOnSelect</a> (<a class="el" href="classllvm_1_1IndirectBrInst.html">IndirectBrInst</a> *IBI, <a class="el" href="classllvm_1_1SelectInst.html">SelectInst</a> *SI)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a08e3b1927df1f87b617dcae0998dff2e">TryToSimplifyUncondBranchWithICmpInIt</a> (<a class="el" href="classllvm_1_1ICmpInst.html">ICmpInst</a> *ICI, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD, <a class="el" href="classllvm_1_1IRBuilder.html">IRBuilder</a><> &Builder)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a39eb6c7310d5673dad5be0af7c6a79f8">SimplifyBranchOnICmpChain</a> (<a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> *BI, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD, <a class="el" href="classllvm_1_1IRBuilder.html">IRBuilder</a><> &Builder)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#abf5ef34c952cc6bc5dce92d91598bdd2">TurnSwitchRangeIntoICmp</a> (<a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI, <a class="el" href="classllvm_1_1IRBuilder.html">IRBuilder</a><> &Builder)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a48977a4b045a92bc5cf1c0ad4d95129e">EliminateDeadSwitchCases</a> (<a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1PHINode.html">PHINode</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a3a785324436b8d2862b09f5fd8d1c061">FindPHIForConditionForwarding</a> (<a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a> *CaseValue, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *BB, int *PhiIndex)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a819fe08329be34252ffde1e710574a34">ForwardSwitchConditionToPHI</a> (<a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a73476159b3f570043406e83b49ea036c">ValidLookupTableConstant</a> (<a class="el" href="classllvm_1_1Constant.html">Constant</a> *C)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1Constant.html">Constant</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#afe11668c8bd8d29c005ca8e66ba9ef6b">LookupConstant</a> (<a class="el" href="classllvm_1_1Value.html">Value</a> *V, const <a class="el" href="classllvm_1_1SmallDenseMap.html">SmallDenseMap</a>< <a class="el" href="classllvm_1_1Value.html">Value</a> *, <a class="el" href="classllvm_1_1Constant.html">Constant</a> * > &ConstantPool)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1Constant.html">Constant</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a62553ebb8196620b44ccdfe7593fe089">ConstantFold</a> (<a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *I, const <a class="el" href="classllvm_1_1SmallDenseMap.html">SmallDenseMap</a>< <a class="el" href="classllvm_1_1Value.html">Value</a> *, <a class="el" href="classllvm_1_1Constant.html">Constant</a> * > &ConstantPool)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#aca98f036365a2ce139c14606a593a438">GetCaseResults</a> (<a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI, <a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a> *CaseVal, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *CaseDest, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> **CommonDest, <a class="el" href="classllvm_1_1SmallVector.html">SmallVector</a>< std::pair< <a class="el" href="classllvm_1_1PHINode.html">PHINode</a> *, <a class="el" href="classllvm_1_1Constant.html">Constant</a> * >, 4 > &Res)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#aa1d125e64c3d0c3105dbedc0cc4d5787">ShouldBuildLookupTable</a> (<a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI, uint64_t TableSize, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD, const <a class="el" href="classllvm_1_1SmallDenseMap.html">SmallDenseMap</a>< <a class="el" href="classllvm_1_1PHINode.html">PHINode</a> *, <a class="el" href="classllvm_1_1Type.html">Type</a> * > &ResultTypes)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#ae403a3eeaed2fb079121bc3f2092064f">SwitchToLookupTable</a> (<a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI, <a class="el" href="classllvm_1_1IRBuilder.html">IRBuilder</a><> &Builder, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD, const <a class="el" href="classllvm_1_1TargetTransformInfo.html">TargetTransformInfo</a> *TTI)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a8d718b79cd2832d71600169ac3e132b0">passingValueIsAlwaysUndefined</a> (<a class="el" href="classllvm_1_1Value.html">Value</a> *V, <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *I)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Check if passing a value to an instruction will cause undefined behavior.  <a href="#a8d718b79cd2832d71600169ac3e132b0"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a2026c2afa149ebc0c1ac8fd091fdc22c">removeUndefIntroducingPredecessor</a> (<a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *BB)</td></tr>
+<tr><td colspan="2"><h2><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a>< <a class="el" href="classunsigned.html">unsigned</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a830a17648b2e5112beef220cc707c977">PHINodeFoldingThreshold</a> ("phi-node-folding-threshold", cl::Hidden, cl::init(1), <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Control the amount of phi node folding to perform (default = 1)"))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a>< <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#a0b13773c26dad640e24611c48c657463">DupRet</a> ("simplifycfg-dup-ret", cl::Hidden, cl::init(<a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>), <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Duplicate return <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a> into unconditional branches"))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a>< <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="SimplifyCFG_8cpp.html#ac7707bcaec113d0d136467c7b97a62f1">SinkCommon</a> ("simplifycfg-<a class="el" href="MachineSink_8cpp.html#abaeca283dd5280e74ec8774a25829c8d">sink</a>-common", cl::Hidden, cl::init(<a class="el" href="LoopSimplify_8cpp.html#a13f020c6a40eb04f1b4f9ddfbb004ce0">true</a>), <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Sink common <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a> down to the end block"))</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="SimplifyCFG.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "simplifycfg"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00014">14</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="adfeed3997bba12e75a8e51d740f1969d"></a><!-- doxytag: member="SimplifyCFG.cpp::AddPredecessorToBlock" ref="adfeed3997bba12e75a8e51d740f1969d" args="(BasicBlock *Succ, BasicBlock *NewPred, BasicBlock *ExistPred)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void AddPredecessorToBlock </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>Succ</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>NewPred</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>ExistPred</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>AddPredecessorToBlock - Update PHI nodes in Succ to indicate that there will now be entries in it from the 'NewPred' block. The values that will be flowing into the PHI nodes will be the same as those coming in from ExistPred, an existing predecessor of Succ. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00183">183</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l02086">llvm::PHINode::addIncoming()</a>, <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Instructions_8h_source.html#l02125">llvm::PHINode::getIncomingValueForBlock()</a>, and <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l01871">llvm::FoldBranchToCommonDest()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l01514">FoldCondBranchOnPHI()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l01056">HoistThenElseCodeToIf()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l02632">SimplifyBranchOnICmpChain()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l02189">SimplifyCondBranchToCondBranch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a03a2d451a241c934af3405a7cfc8adb4"></a><!-- doxytag: member="SimplifyCFG.cpp::BlockIsSimpleEnoughToThreadThrough" ref="a03a2d451a241c934af3405a7cfc8adb4" args="(BasicBlock *BB)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> BlockIsSimpleEnoughToThreadThrough </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>BB</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>BlockIsSimpleEnoughToThreadThrough - Return true if we can thread a branch across this block. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l01486">1486</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, and <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l01514">FoldCondBranchOnPHI()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l02189">SimplifyCondBranchToCondBranch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a747b33c392f2a4faef1bf40a4d169c7d"></a><!-- doxytag: member="SimplifyCFG.cpp::checkCSEInPredecessor" ref="a747b33c392f2a4faef1bf40a4d169c7d" args="(Instruction *Inst, BasicBlock *PB)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> checkCSEInPredecessor </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Instruction.html">Instruction</a> * </td>
+          <td class="paramname"><em>Inst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>PB</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>checkCSEInPredecessor - Return true if the given instruction is available in its predecessor block. If yes, the instruction will be removed. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l01853">1853</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="BasicBlock_8h_source.html#l00191">llvm::BasicBlock::end()</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="Instruction_8cpp_source.html#l00173">llvm::Instruction::isIdenticalTo()</a>, and <a class="el" href="Value_8cpp_source.html#l00297">llvm::Value::replaceAllUsesWith()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l01871">llvm::FoldBranchToCommonDest()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaaae27d25fe7431c2ad47c4fb12273e8"></a><!-- doxytag: member="SimplifyCFG.cpp::ComputeSpeculationCost" ref="aaaae27d25fe7431c2ad47c4fb12273e8" args="(const User *I)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classunsigned.html">unsigned</a> ComputeSpeculationCost </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1User.html">User</a> * </td>
+          <td class="paramname"><em>I</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>ComputeSpeculuationCost - Compute an abstract "cost" of speculating the given instruction, which is assumed to be safe to speculate. 1 means cheap, 2 means less cheap, and UINT_MAX means prohibitively expensive. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00283">283</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="APInt_8h_source.html#l01759">llvm::APIntOps::And()</a>, <a class="el" href="CallingConvLower_8h_source.html#l00149">llvm::Call</a>, <a class="el" href="Operator_8h_source.html#l00049">llvm::Operator::getOpcode()</a>, <a class="el" href="InstVisitor_8h_source.html#l00162">llvm::ICmp</a>, <a class="el" href="ValueTracking_8cpp_source.html#l01853">llvm::isSafeToSpeculativelyExecute()</a>, <a class="el" href="SparcInstrInfo_8h_source.html#l00031">llvm::SPII::Load</a>, <a class="el" href="InstVisitor_8h_source.html#l00124">llvm::LShr</a>, <a class="el" href="APInt_8h_source.html#l01765">llvm::APIntOps::Or()</a>, <a class="el" href="MCInstrDesc_8h_source.html#l00110">llvm::MCID::Select</a>, <a class="el" href="InstVisitor_8h_source.html#l00148">llvm::SExt</a>, <a class="el" href="InstVisitor_8h_source.html#l00146">llvm::Trunc</a>, and <a class="el" href="APInt_8h_source.html#l01771">llvm::APIntOps::Xor()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l00333">DominatesMergePoint()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l01353">SpeculativelyExecuteBB()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a62553ebb8196620b44ccdfe7593fe089"></a><!-- doxytag: member="SimplifyCFG.cpp::ConstantFold" ref="a62553ebb8196620b44ccdfe7593fe089" args="(Instruction *I, const SmallDenseMap< Value *, Constant * > &ConstantPool)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1Constant.html">Constant</a>* ConstantFold </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Instruction.html">Instruction</a> * </td>
+          <td class="paramname"><em>I</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1SmallDenseMap.html">SmallDenseMap</a>< <a class="el" href="classllvm_1_1Value.html">Value</a> *, <a class="el" href="classllvm_1_1Constant.html">Constant</a> * > & </td>
+          <td class="paramname"><em>ConstantPool</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>ConstantFold - Try to fold instruction I into a constant. This works for simple instructions such as binary operations where both operands are constant or can be replaced by constants from the ConstantPool. Returns the resulting constant on success, 0 otherwise. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l03212">3212</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="ARMBaseInfo_8h_source.html#l00098">llvm::ARM_PROC::A</a>, <a class="el" href="ISDOpcodes_8h_source.html#l00063">llvm::ISD::ConstantPool</a>, <a class="el" href="Constants_8cpp_source.html#l01610">llvm::ConstantExpr::get()</a>, <a class="el" href="Constants_8cpp_source.html#l01389">llvm::ConstantExpr::getCast()</a>, <a class="el" href="Constants_8cpp_source.html#l01730">llvm::ConstantExpr::getCompare()</a>, <a class="el" href="User_8h_source.html#l00088">llvm::User::getOperand()</a>, <a class="el" href="Constants_8cpp_source.html#l00067">llvm::Constant::isAllOnesValue()</a>, <a class="el" href="Constants_8cpp_source.html#l00054">llvm::Constant::isNullValue()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l03201">LookupConstant()</a>, and <a class="el" href="InstVisitor_8h_source.html#l00166">llvm::Select</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l03259">GetCaseResults()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a31b649e28babc24eeefe7f6f9c9645d7"></a><!-- doxytag: member="SimplifyCFG.cpp::ConstantIntSortPredicate" ref="a31b649e28babc24eeefe7f6f9c9645d7" args="(const void *P1, const void *P2)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static int ConstantIntSortPredicate </td>
+          <td>(</td>
+          <td class="paramtype">const void * </td>
+          <td class="paramname"><em>P1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void * </td>
+          <td class="paramname"><em>P2</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00762">762</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Constants_8h_source.html#l00104">llvm::ConstantInt::getValue()</a>, and <a class="el" href="APInt_8cpp_source.html#l00515">llvm::APInt::ult()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l02632">SimplifyBranchOnICmpChain()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l03003">TurnSwitchRangeIntoICmp()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad3acb8f156ef3691661eae4471cb4887"></a><!-- doxytag: member="SimplifyCFG.cpp::DominatesMergePoint" ref="ad3acb8f156ef3691661eae4471cb4887" args="(Value *V, BasicBlock *BB, SmallPtrSet< Instruction *, 4 > *AggressiveInsts, unsigned &CostRemaining)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> DominatesMergePoint </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>BB</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet</a>< <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *, 4 > * </td>
+          <td class="paramname"><em>AggressiveInsts</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> & </td>
+          <td class="paramname"><em>CostRemaining</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>DominatesMergePoint - If we have a merge point of an "if condition" as accepted above, return true if the specified value dominates the block. We don't handle the true generality of domination here, just a special case which works well enough for us.</p>
+<p>If AggressiveInsts is non-null, and if V does not dominate BB, we check to see if V (which must be an instruction) and its recursive operands that do not dominate BB have a combined cost lower than CostRemaining and are non-trapping. If both are true, the instruction is inserted into the set and true is returned.</p>
+<p>The cost for most non-trapping instructions is defined as 1 except for Select whose cost is 2.</p>
+<p>After this function returns, CostRemaining is decreased by the cost of V plus its non-dominating operands. If that cost is greater than CostRemaining, false is returned and CostRemaining is undefined. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00333">333</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="CallingConv_8h_source.html#l00031">llvm::CallingConv::C</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00283">ComputeSpeculationCost()</a>, <a class="el" href="SmallPtrSet_8h_source.html#l00265">llvm::SmallPtrSet< PtrType, SmallSize >::count()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="Instructions_8h_source.html#l02392">llvm::BranchInst::getSuccessor()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="SmallPtrSet_8h_source.html#l00254">llvm::SmallPtrSet< PtrType, SmallSize >::insert()</a>, <a class="el" href="Instructions_8h_source.html#l02378">llvm::BranchInst::isConditional()</a>, <a class="el" href="ValueTracking_8cpp_source.html
 #l01853">llvm::isSafeToSpeculativelyExecute()</a>, <a class="el" href="User_8h_source.html#l00116">llvm::User::op_begin()</a>, and <a class="el" href="User_8h_source.html#l00118">llvm::User::op_end()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l01610">FoldTwoEntryPHINode()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a38517d96538b847c6c3dbe58965c8053"></a><!-- doxytag: member="SimplifyCFG.cpp::EliminateBlockCases" ref="a38517d96538b847c6c3dbe58965c8053" args="(BasicBlock *BB, std::vector< ValueEqualityComparisonCase > &Cases)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void EliminateBlockCases </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>BB</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">std::vector< ValueEqualityComparisonCase > & </td>
+          <td class="paramname"><em>Cases</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>EliminateBlockCases - Given a vector of bb/value pairs, remove any entries in the list that match the specified block. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00570">570</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="namespacellvm_1_1sys_1_1fs.html#ac15deda0837e2db86daf672a10cb7ccb">llvm::sys::fs::remove()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a48977a4b045a92bc5cf1c0ad4d95129e"></a><!-- doxytag: member="SimplifyCFG.cpp::EliminateDeadSwitchCases" ref="a48977a4b045a92bc5cf1c0ad4d95129e" args="(SwitchInst *SI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> EliminateDeadSwitchCases </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> * </td>
+          <td class="paramname"><em>SI</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>EliminateDeadSwitchCases - Compute masked bits for the condition of a switch and use it to remove dead cases. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l03067">3067</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="SmallVector_8h_source.html#l00154">llvm::SmallVectorTemplateCommon< T >::back()</a>, <a class="el" href="SmallVector_8h_source.html#l00111">llvm::SmallVectorTemplateCommon< T >::begin()</a>, <a class="el" href="TGLexer_8h_source.html#l00045">llvm::tgtok::Bits</a>, <a class="el" href="Instructions_8h_source.html#l02540">llvm::SwitchInst::case_begin()</a>, <a class="el" href="Instructions_8h_source.html#l02564">llvm::SwitchInst::case_default()</a>, <a class="el" href="Instructions_8h_source.html#l02551">llvm::SwitchInst::case_end()</a>, <a class="el" href="ValueTracking_8cpp_source.html#l00228">llvm::ComputeMaskedBits()</a>, <a class="el" href="Debug_8cpp_source.html#l00101">llvm::dbgs()</a>, <a class="el" href="Debug_8h_source.html#l00097">DEBUG</a>, <a class="el" href="SmallVector_8h_source.html#l00055">llvm::SmallVectorBase::empty()</a>, <a class="el" href="SmallVector_8h_source.html#l00113">llvm::SmallVectorTemplateCommon< T
  >::end()</a>, <a class="el" href="Instructions_8h_source.html#l02575">llvm::SwitchInst::findCaseValue()</a>, <a class="el" href="ValueTracking_8cpp_source.html#l00039">getBitWidth()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00784">GetBranchWeights()</a>, <a class="el" href="Instructions_8h_source.html#l02715">llvm::SwitchInst::CaseIteratorT< SwitchInstTy, ConstantIntTy, SubsetsItTy, BasicBlockTy >::getCaseIndex()</a>, <a class="el" href="Instructions_8h_source.html#l02707">llvm::SwitchInst::CaseIteratorT< SwitchInstTy, ConstantIntTy, SubsetsItTy, BasicBlockTy >::getCaseSuccessor()</a>, <a class="el" href="Instructions_8h_source.html#l02521">llvm::SwitchInst::getCondition()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00033">llvm::BasicBlock::getContext()</a>, <a class="el" href="Instructions_8h_source.html#l02534">llvm::SwitchInst::getNumCases()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a
 >, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00772">HasBranchWeights()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="LLVMContext_8h_source.html#l00046">llvm::LLVMContext::MD_prof</a>, <a class="el" href="SmallVector_8h_source.html#l00255">llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::pop_back()</a>, <a class="el" href="SmallVector_8h_source.html#l00231">llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back()</a>, <a class="el" href="Instructions_8cpp_source.html#l03213">llvm::SwitchInst::removeCase()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00216">llvm::BasicBlock::removePredecessor()</a>, <a class="el" href="Metadata_8cpp_source.html#l00622">llvm::Instruction::setMetadata()</a>, <a class="el" href="SmallVector_8h_source.html#l00126">llvm::SmallVectorTemplateCommon< T 
 >::size()</a>, and <a class="el" href="OwningPtr_8h_source.html#l00084">llvm::swap()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad04d12b08532d23bbd327a7024caad89"></a><!-- doxytag: member="SimplifyCFG.cpp::EraseTerminatorInstAndDCECond" ref="ad04d12b08532d23bbd327a7024caad89" args="(TerminatorInst *TI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void EraseTerminatorInstAndDCECond </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> * </td>
+          <td class="paramname"><em>TI</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00504">504</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, and <a class="el" href="Local_8cpp_source.html#l00318">llvm::RecursivelyDeleteTriviallyDeadInstructions()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l01871">llvm::FoldBranchToCommonDest()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l01056">HoistThenElseCodeToIf()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l02632">SimplifyBranchOnICmpChain()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l01747">SimplifyCondBranchToTwoReturns()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l02391">SimplifyTerminatorOnSelect()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a50c9506d55e08fb67115a29dde75388a"></a><!-- doxytag: member="SimplifyCFG.cpp::ExtractBranchMetadata" ref="a50c9506d55e08fb67115a29dde75388a" args="(BranchInst *BI, uint64_t &ProbTrue, uint64_t &ProbFalse)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> ExtractBranchMetadata </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> * </td>
+          <td class="paramname"><em>BI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t & </td>
+          <td class="paramname"><em>ProbTrue</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t & </td>
+          <td class="paramname"><em>ProbFalse</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>ExtractBranchMetadata - Given a conditional BranchInstruction, retrieve the probabilities of the branch taking each edge. Fills in the two APInt parameters and return true, or returns false if no or invalid metadata was found. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l01836">1836</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Instruction_8h_source.html#l00139">llvm::Instruction::getMetadata()</a>, <a class="el" href="Constants_8h_source.html#l00104">llvm::ConstantInt::getValue()</a>, <a class="el" href="APInt_8h_source.html#l01214">llvm::APInt::getZExtValue()</a>, <a class="el" href="Instructions_8h_source.html#l02378">llvm::BranchInst::isConditional()</a>, and <a class="el" href="LLVMContext_8h_source.html#l00046">llvm::LLVMContext::MD_prof</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l01871">llvm::FoldBranchToCommonDest()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l02189">SimplifyCondBranchToCondBranch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3a785324436b8d2862b09f5fd8d1c061"></a><!-- doxytag: member="SimplifyCFG.cpp::FindPHIForConditionForwarding" ref="a3a785324436b8d2862b09f5fd8d1c061" args="(ConstantInt *CaseValue, BasicBlock *BB, int *PhiIndex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1PHINode.html">PHINode</a>* FindPHIForConditionForwarding </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a> * </td>
+          <td class="paramname"><em>CaseValue</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>BB</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>PhiIndex</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>FindPHIForConditionForwarding - If BB would be eligible for simplification by TryToSimplifyUncondBranchFromEmptyBlock (i.e. it is empty and terminated by an unconditional branch), look at the phi node for BB in the successor block and see if the incoming value is equal to CaseValue. If so, return the phi node, and set PhiIndex to BB's index in the phi node. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l03120">3120</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="MCInstrDesc_8h_source.html#l00105">llvm::MCID::Branch</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00140">llvm::BasicBlock::getFirstNonPHIOrDbg()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00183">llvm::BasicBlock::getSinglePredecessor()</a>, <a class="el" href="Instructions_8h_source.html#l02392">llvm::BranchInst::getSuccessor()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="Instructions_8h_source.html#l02377">llvm::BranchInst::isUnconditional()</a>, and <a class="el" href="InstVisitor_8h_source.html#l00164">llvm::PHI</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l03153">ForwardSwitchConditionToPHI()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a95ec32778f2bb913dc4cc45ac7a66e42"></a><!-- doxytag: member="SimplifyCFG.cpp::FitWeights" ref="a95ec32778f2bb913dc4cc45ac7a66e42" args="(MutableArrayRef< uint64_t > Weights)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void FitWeights </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MutableArrayRef.html">MutableArrayRef</a>< uint64_t > </td>
+          <td class="paramname"><em>Weights</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Sees if any of the weights are too big for a uint32_t, and halves all the weights if any are. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00807">807</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="ArrayRef_8h_source.html#l00093">llvm::ArrayRef< T >::size()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l01871">llvm::FoldBranchToCommonDest()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l02189">SimplifyCondBranchToCondBranch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1e3544295480ec7b23c650873d046538"></a><!-- doxytag: member="SimplifyCFG.cpp::FoldCondBranchOnPHI" ref="a1e3544295480ec7b23c650873d046538" args="(BranchInst *BI, const DataLayout *TD)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> FoldCondBranchOnPHI </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> * </td>
+          <td class="paramname"><em>BI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> * </td>
+          <td class="paramname"><em>TD</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>FoldCondBranchOnPHI - If we have a conditional branch on a PHI node value that is defined in the same block as the branch and if any PHI entries are constants, thread edges corresponding to that entry to be branches to their ultimate destination. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l01514">1514</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="SimplifyCFG_8cpp_source.html#l00183">AddPredecessorToBlock()</a>, <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l01486">BlockIsSimpleEnoughToThreadThrough()</a>, <a class="el" href="BasicBlock_8h_source.html#l00102">llvm::BasicBlock::Create()</a>, <a class="el" href="Instructions_8h_source.html#l02359">llvm::BranchInst::Create()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="DenseMap_8h_source.html#l00057">llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT >, KeyT, ValueT, KeyInfoT >::end()</a>, <a class="el" href="DenseMap_8h_source.html#l00106">llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT >, KeyT, ValueT, KeyInfoT >::find()</a>, <a class="el" href="BasicBlockUtils_8cpp_source.html#l00067">llvm::FoldSingleEntryPHINodes()</a>, <a class="el" href="Instructions_8h_source.ht
 ml#l02380">llvm::BranchInst::getCondition()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00033">llvm::BasicBlock::getContext()</a>, <a class="el" href="Instructions_8h_source.html#l02060">llvm::PHINode::getIncomingBlock()</a>, <a class="el" href="Instructions_8h_source.html#l02045">llvm::PHINode::getIncomingValue()</a>, <a class="el" href="Instructions_8h_source.html#l02125">llvm::PHINode::getIncomingValueForBlock()</a>, <a class="el" href="BasicBlock_8h_source.html#l00204">llvm::BasicBlock::getInstList()</a>, <a class="el" href="Value_8cpp_source.html#l00164">llvm::Value::getName()</a>, <a class="el" href="Instructions_8h_source.html#l02041">llvm::PHINode::getNumIncomingValues()</a>, <a class="el" href="InstrTypes_8h_source.html#l00059">llvm::TerminatorInst::getNumSuccessors()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="BasicBlock_8h_source.html#l00110">llvm::BasicBlock::getParent()</a>, <a cla
 ss="el" href="InstrTypes_8h_source.html#l00065">llvm::TerminatorInst::getSuccessor()</a>, <a class="el" href="Instructions_8h_source.html#l02392">llvm::BranchInst::getSuccessor()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="Constants_8h_source.html#l00140">llvm::ConstantInt::getType()</a>, <a class="el" href="Constants_8h_source.html#l00116">llvm::ConstantInt::getZExtValue()</a>, <a class="el" href="Value_8h_source.html#l00156">llvm::Value::hasOneUse()</a>, <a class="el" href="Type_8h_source.html#l00180">llvm::Type::isIntegerTy()</a>, <a class="el" href="regcomp_8c.html#a0240ac851181b84ac374872dc5434ee4">N</a>, <a class="el" href="User_8h_source.html#l00116">llvm::User::op_begin()</a>, <a class="el" href="User_8h_source.html#l00118">llvm::User::op_end()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00216">llvm::BasicBlock::removePredecessor()</a>, <a class="el" href="Value_8cpp_source.html#l00
 172">llvm::Value::setName()</a>, <a class="el" href="InstrTypes_8h_source.html#l00071">llvm::TerminatorInst::setSuccessor()</a>, and <a class="el" href="InstructionSimplify_8cpp_source.html#l02781">llvm::SimplifyInstruction()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a518d290fbe6b5f5e314e5b4e29780635"></a><!-- doxytag: member="SimplifyCFG.cpp::FoldTwoEntryPHINode" ref="a518d290fbe6b5f5e314e5b4e29780635" args="(PHINode *PN, const DataLayout *TD)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> FoldTwoEntryPHINode </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1PHINode.html">PHINode</a> * </td>
+          <td class="paramname"><em>PN</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> * </td>
+          <td class="paramname"><em>TD</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>FoldTwoEntryPHINode - Given a BB that starts with the specified two-entry PHI node, see if we can eliminate it. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l01610">1610</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="SmallPtrSet_8h_source.html#l00265">llvm::SmallPtrSet< PtrType, SmallSize >::count()</a>, <a class="el" href="IRBuilder_8h_source.html#l00460">llvm::IRBuilder< preserveNames, T, Inserter >::CreateBr()</a>, <a class="el" href="IRBuilder_8h_source.html#l01256">llvm::IRBuilder< preserveNames, T, Inserter >::CreateSelect()</a>, <a class="el" href="Debug_8cpp_source.html#l00101">llvm::dbgs()</a>, <a class="el" href="Debug_8h_source.html#l00097">DEBUG</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00333">DominatesMergePoint()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00203">GetIfCondition()</a>, <a class="el" href="Instructions_8h_source.html#l02060">llvm::P
 HINode::getIncomingBlock()</a>, <a class="el" href="Instructions_8h_source.html#l02045">llvm::PHINode::getIncomingValue()</a>, <a class="el" href="BasicBlock_8h_source.html#l00204">llvm::BasicBlock::getInstList()</a>, <a class="el" href="Value_8cpp_source.html#l00164">llvm::Value::getName()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="Type_8h_source.html#l00180">llvm::Type::isIntegerTy()</a>, <a class="el" href="SimplifyCFG_8cpp.html#a830a17648b2e5112beef220cc707c977">PHINodeFoldingThreshold</a>, <a class="el" href="Interval_8h_source.html#l00117">llvm::pred_begin()</a>, <a class="el" href="Value_8cpp_source.html#l00297">llvm::Value::replaceAllUsesWith()</a>, 
 <a class="el" href="IRBuilder_8h_source.html#l00075">llvm::IRBuilderBase::SetInsertPoint()</a>, <a class="el" href="InstructionSimplify_8cpp_source.html#l02781">llvm::SimplifyInstruction()</a>, and <a class="el" href="Value_8cpp_source.html#l00233">llvm::Value::takeName()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a819fe08329be34252ffde1e710574a34"></a><!-- doxytag: member="SimplifyCFG.cpp::ForwardSwitchConditionToPHI" ref="a819fe08329be34252ffde1e710574a34" args="(SwitchInst *SI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> ForwardSwitchConditionToPHI </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> * </td>
+          <td class="paramname"><em>SI</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>ForwardSwitchConditionToPHI - Try to forward the condition of a switch instruction to a phi node dominated by the switch, if that would mean that some of the destination blocks of the switch can be folded away. Returns true if a change is made. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l03153">3153</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l02540">llvm::SwitchInst::case_begin()</a>, <a class="el" href="Instructions_8h_source.html#l02551">llvm::SwitchInst::case_end()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l03120">FindPHIForConditionForwarding()</a>, <a class="el" href="Instructions_8h_source.html#l02521">llvm::SwitchInst::getCondition()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="InstVisitor_8h_source.html#l00164">llvm::PHI</a>, <a class="el" href="Instructions_8h_source.html#l02048">llvm::PHINode::setIncomingValue()</a>, and <a class="el" href="SmallVector_8h_source.html#l00126">llvm::SmallVectorTemplateCommon< T, typename >::size()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa62a063a23f704f9544485e57858b670"></a><!-- doxytag: member="SimplifyCFG.cpp::GatherConstantCompares" ref="aa62a063a23f704f9544485e57858b670" args="(Value *V, std::vector< ConstantInt * > &Vals, Value *&Extra, const DataLayout *TD, bool isEQ, unsigned &UsedICmps)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1Value.html">Value</a>* GatherConstantCompares </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">std::vector< <a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a> * > & </td>
+          <td class="paramname"><em>Vals</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Value.html">Value</a> *& </td>
+          <td class="paramname"><em>Extra</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> * </td>
+          <td class="paramname"><em>TD</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td>
+          <td class="paramname"><em>isEQ</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> & </td>
+          <td class="paramname"><em>UsedICmps</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>GatherConstantCompares - Given a potentially 'or'd or 'and'd together collection of icmp eq/ne instructions that compare a value against a constant, return the value being compared, and stick the constant into the Values vector. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00423">423</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="APInt_8h_source.html#l01759">llvm::APIntOps::And()</a>, <a class="el" href="CallingConv_8h_source.html#l00031">llvm::CallingConv::C</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Constants_8cpp_source.html#l00460">llvm::ConstantInt::get()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00390">GetConstantInt()</a>, <a class="el" href="Value_8cpp_source.html#l00468">llvm::Value::getContext()</a>, <a class="el" href="ConstantRange_8h_source.html#l00071">llvm::ConstantRange::getLower()</a>, <a class="el" href="Instruction_8h_source.html#l00082">llvm::Instruction::getOpcode()</a>, <a class="el" href="User_8h_source.html#l00088">llvm::User::getOperand()</a>, <a class="el" href="ConstantRange_8cpp_source.html#l00145">llvm::ConstantRange::getSetSize()</a>, <a class="el" href="ConstantRange_8h_source.html#l00075">llvm::ConstantRange::getUpper()</a>, <a class="el" href="ARMBaseInfo_8h_source.ht
 ml#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="InstrTypes_8h_source.html#l00666">llvm::CmpInst::ICMP_EQ</a>, <a class="el" href="InstrTypes_8h_source.html#l00667">llvm::CmpInst::ICMP_NE</a>, <a class="el" href="ConstantRange_8cpp_source.html#l00708">llvm::ConstantRange::inverse()</a>, <a class="el" href="ConstantRange_8cpp_source.html#l00124">llvm::ConstantRange::isEmptySet()</a>, <a class="el" href="ConstantRange_8cpp_source.html#l00051">llvm::ConstantRange::makeICmpRegion()</a>, <a class="el" href="APInt_8h_source.html#l01765">llvm::APIntOps::Or()</a>, and <a class="el" href="APInt_8h_source.html#l01000">llvm::APInt::ugt()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l02632">SimplifyBranchOnICmpChain()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a165512f38f31f01e7f18bf3838f3a12e"></a><!-- doxytag: member="SimplifyCFG.cpp::GetBranchWeights" ref="a165512f38f31f01e7f18bf3838f3a12e" args="(TerminatorInst *TI, SmallVectorImpl< uint64_t > &Weights)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void GetBranchWeights </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> * </td>
+          <td class="paramname"><em>TI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a>< uint64_t > & </td>
+          <td class="paramname"><em>Weights</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get Weights of a given TerminatorInst, the default weight is at the front of the vector. If TI is a conditional eq, we need to swap the branch-weight metadata. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00784">784</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="SmallVector_8h_source.html#l00154">llvm::SmallVectorTemplateCommon< T >::back()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="SmallVector_8h_source.html#l00147">llvm::SmallVectorTemplateCommon< T >::front()</a>, <a class="el" href="Instructions_8h_source.html#l02380">llvm::BranchInst::getCondition()</a>, <a class="el" href="Instruction_8h_source.html#l00139">llvm::Instruction::getMetadata()</a>, <a class="el" href="Metadata_8h_source.html#l00145">llvm::MDNode::getNumOperands()</a>, <a class="el" href="Metadata_8cpp_source.html#l00305">llvm::MDNode::getOperand()</a>, <a class="el" href="Constants_8h_source.html#l00104">llvm::ConstantInt::getValue()</a>, <a class="el" href="APInt_8h_source.html#l01214">llvm::APInt::getZExtValue()</a>, <a class="el" href="InstrTypes_8h_source.html#l00666">llvm::CmpInst::ICMP_EQ</a>, <a class="el" href="LLVMContext_8h_source.html#l00046">llvm::LLVMC
 ontext::MD_prof</a>, <a class="el" href="SmallVector_8h_source.html#l00231">llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back()</a>, <a class="el" href="SmallVector_8h_source.html#l00126">llvm::SmallVectorTemplateCommon< T >::size()</a>, and <a class="el" href="BitVector_8h_source.html#l00584">std::swap()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l03067">EliminateDeadSwitchCases()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l02456">SimplifySwitchOnSelect()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l02525">TryToSimplifyUncondBranchWithICmpInIt()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l03003">TurnSwitchRangeIntoICmp()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aca98f036365a2ce139c14606a593a438"></a><!-- doxytag: member="SimplifyCFG.cpp::GetCaseResults" ref="aca98f036365a2ce139c14606a593a438" args="(SwitchInst *SI, ConstantInt *CaseVal, BasicBlock *CaseDest, BasicBlock **CommonDest, SmallVector< std::pair< PHINode *, Constant * >, 4 > &Res)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> GetCaseResults </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> * </td>
+          <td class="paramname"><em>SI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a> * </td>
+          <td class="paramname"><em>CaseVal</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>CaseDest</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> ** </td>
+          <td class="paramname"><em>CommonDest</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SmallVector.html">SmallVector</a>< std::pair< <a class="el" href="classllvm_1_1PHINode.html">PHINode</a> *, <a class="el" href="classllvm_1_1Constant.html">Constant</a> * >, 4 > & </td>
+          <td class="paramname"><em>Res</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>GetCaseResults - Try to determine the resulting constant values in phi nodes at the common destination basic block, *CommonDest, for one of the case destionations CaseDest corresponding to value CaseVal (0 for the default case), of a switch instruction SI. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l03259">3259</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="CallingConv_8h_source.html#l00031">llvm::CallingConv::C</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l03212">ConstantFold()</a>, <a class="el" href="ISDOpcodes_8h_source.html#l00063">llvm::ISD::ConstantPool</a>, <a class="el" href="BasicBlock_8h_source.html#l00191">llvm::BasicBlock::end()</a>, <a class="el" href="Instructions_8h_source.html#l02521">llvm::SwitchInst::getCondition()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="DenseMap_8h_source.html#l00151">llvm::DenseMapBase< SmallDenseMap< KeyT, ValueT, InlineBuckets, KeyInfoT >, KeyT, ValueT, KeyInfoT >::insert()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l03201">LookupConstant()</a>, <a class="el" href="InstVisitor_8h_source.ht
 ml#l00164">llvm::PHI</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l03188">ValidLookupTableConstant()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l03535">SwitchToLookupTable()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0b050aae0f188426acd4124d39e50ae6"></a><!-- doxytag: member="SimplifyCFG.cpp::GetConstantInt" ref="a0b050aae0f188426acd4124d39e50ae6" args="(Value *V, const DataLayout *TD)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a>* GetConstantInt </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> * </td>
+          <td class="paramname"><em>TD</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>GetConstantInt - Extract ConstantInt from value, looking through IntToPtr and PointerNullValue. Return NULL if value is not a constant int. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00390">390</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Constants_8cpp_source.html#l00460">llvm::ConstantInt::get()</a>, <a class="el" href="Constants_8cpp_source.html#l01440">llvm::ConstantExpr::getIntegerCast()</a>, <a class="el" href="DataLayout_8cpp_source.html#l00665">llvm::DataLayout::getIntPtrType()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="Constants_8h_source.html#l00140">llvm::ConstantInt::getType()</a>, <a class="el" href="InstVisitor_8h_source.html#l00156">llvm::IntToPtr</a>, and <a class="el" href="Type_8h_source.html#l00204">llvm::Type::isPointerTy()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l00423">GatherConstantCompares()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a872693f6b0f3efb05e9a599e9a24c839"></a><!-- doxytag: member="SimplifyCFG.cpp::GetIfCondition" ref="a872693f6b0f3efb05e9a599e9a24c839" args="(BasicBlock *BB, BasicBlock *&IfTrue, BasicBlock *&IfFalse)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1Value.html">Value</a>* GetIfCondition </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>BB</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *& </td>
+          <td class="paramname"><em>IfTrue</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> *& </td>
+          <td class="paramname"><em>IfFalse</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>GetIfCondition - Given a basic block (BB) with two predecessors (and at least one PHI node in it), check to see if the merge at this block is due to an "if condition". If so, return the boolean condition that determines which entry into BB will be taken. Also, return by references the block that will be entered from if the condition is true, and the block that will be entered if the condition is false.</p>
+<p>This does no checking to see if the true/false blocks have large or unsavory instructions in them. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00203">203</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Instructions_8h_source.html#l02380">llvm::BranchInst::getCondition()</a>, <a class="el" href="Instructions_8h_source.html#l02060">llvm::PHINode::getIncomingBlock()</a>, <a class="el" href="Instructions_8h_source.html#l02041">llvm::PHINode::getNumIncomingValues()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00183">llvm::BasicBlock::getSinglePredecessor()</a>, <a class="el" href="Instructions_8h_source.html#l02392">llvm::BranchInst::getSuccessor()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="Instructions_8h_source.html#l02378">llvm::BranchInst::isConditional()</a>, and <a class="el" href="OwningPtr_8h_source.html#l00084">llvm::swap()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l01610">FoldTwoEntryPHINode()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ada99fd4fd27356d1518273d8248940a5"></a><!-- doxytag: member="SimplifyCFG.cpp::HasBranchWeights" ref="ada99fd4fd27356d1518273d8248940a5" args="(const Instruction *I)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> HasBranchWeights </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> * </td>
+          <td class="paramname"><em>I</em></td><td>)</td>
+          <td><code> [inline, static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00772">772</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Instruction_8h_source.html#l00139">llvm::Instruction::getMetadata()</a>, <a class="el" href="Metadata_8cpp_source.html#l00305">llvm::MDNode::getOperand()</a>, and <a class="el" href="LLVMContext_8h_source.html#l00046">llvm::LLVMContext::MD_prof</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l03067">EliminateDeadSwitchCases()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l02456">SimplifySwitchOnSelect()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l02525">TryToSimplifyUncondBranchWithICmpInIt()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l03003">TurnSwitchRangeIntoICmp()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6434e674d53619188f1a6b4bac3b304e"></a><!-- doxytag: member="SimplifyCFG.cpp::HoistThenElseCodeToIf" ref="a6434e674d53619188f1a6b4bac3b304e" args="(BranchInst *BI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> HoistThenElseCodeToIf </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> * </td>
+          <td class="paramname"><em>BI</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>HoistThenElseCodeToIf - Given a conditional branch that goes to BB1 and BB2, hoist any common code in the two blocks up into the branch block. The caller of this function guarantees that BI's block dominates BB1 and BB2. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l01056">1056</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="SimplifyCFG_8cpp_source.html#l00183">AddPredecessorToBlock()</a>, <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="Instruction_8cpp_source.html#l00432">llvm::Instruction::clone()</a>, <a class="el" href="IRBuilder_8h_source.html#l01256">llvm::IRBuilder< preserveNames, T, Inserter >::CreateSelect()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00504">EraseTerminatorInstAndDCECond()</a>, <a class="el" href="Instructions_8h_source.html#l02380">llvm::BranchInst::getCondition()</a>, <a class="el" href="Instructions_8h_source.html#l02060">llvm::PHINode::getIncomingBlock()</a>, <a class="el" href="Instructions_8h_source.html#l02125">llvm::PHINode::getIncomingValueForBlock()</a>, <a class="el" href="BasicBlock_8h_source.html#l00204">llvm::BasicBlock::getInstList()</a>, <a class="el" href="Value_8cpp_source.h
 tml#l00164">llvm::Value::getName()</a>, <a class="el" href="Instructions_8h_source.html#l02041">llvm::PHINode::getNumIncomingValues()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="Instructions_8h_source.html#l02392">llvm::BranchInst::getSuccessor()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="Value_8h_source.html#l00253">llvm::Value::intersectOptionalDataWith()</a>, <a class="el" href="Instruction_8cpp_source.html#l00181">llvm::Instruction::isIdenticalToWhenDefined()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l01037">isSafeToHoistInvoke()</a>, <a class="el" href="Type_8h_source.html#l00136">llvm::Type::isVoidTy()</a>, <a class="el" href="Value_8cpp_source.html#l00297">llvm::Value::replaceAllUsesWith()</a>, <a class="el" href="Instructions_8h_source.html#l02048">llvm::PHINode::setIncomingValue()</a>, <a class="el" href="Interval_8h_source.h
 tml#l00107">llvm::succ_begin()</a>, <a class="el" href="Interval_8h_source.html#l00110">llvm::succ_end()</a>, and <a class="el" href="Value_8cpp_source.html#l00233">llvm::Value::takeName()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a69987e50a47c1566fa22b3cfd696e7ea"></a><!-- doxytag: member="SimplifyCFG.cpp::isProfitableToFoldUnconditional" ref="a69987e50a47c1566fa22b3cfd696e7ea" args="(BranchInst *SI1, BranchInst *SI2, Instruction *Cond, SmallVectorImpl< PHINode * > &PhiNodes)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isProfitableToFoldUnconditional </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> * </td>
+          <td class="paramname"><em>SI1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> * </td>
+          <td class="paramname"><em>SI2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Instruction.html">Instruction</a> * </td>
+          <td class="paramname"><em>Cond</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a>< <a class="el" href="classllvm_1_1PHINode.html">PHINode</a> * > & </td>
+          <td class="paramname"><em>PhiNodes</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>isProfitableToFoldUnconditional - Return true if it is safe and profitable to merge these two terminator instructions together, where SI1 is an unconditional branch. PhiNodes will store all PHI nodes in common successors. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00143">143</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="SmallPtrSet_8h_source.html#l00265">llvm::SmallPtrSet< PtrType, SmallSize >::count()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Instructions_8h_source.html#l02380">llvm::BranchInst::getCondition()</a>, <a class="el" href="Instructions_8h_source.html#l02125">llvm::PHINode::getIncomingValueForBlock()</a>, <a class="el" href="User_8h_source.html#l00088">llvm::User::getOperand()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="Instructions_8h_source.html#l02378">llvm::BranchInst::isConditional()</a>, <a class="el" href="Instructions_8h_source.html#l02377">llvm::BranchInst::isUnconditional()</a>, <a class="el" href="SmallVector_8h_source.html#l00231">llvm::SmallVectorTemplateBase< T, isPodLike >::push_back()</a>, <a class="el" href="Interv
 al_8h_source.html#l00107">llvm::succ_begin()</a>, and <a class="el" href="Interval_8h_source.html#l00110">llvm::succ_end()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l01871">llvm::FoldBranchToCommonDest()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3aaba0277f5dd5636e099fa81c20c533"></a><!-- doxytag: member="SimplifyCFG.cpp::isSafeToHoistInvoke" ref="a3aaba0277f5dd5636e099fa81c20c533" args="(BasicBlock *BB1, BasicBlock *BB2, Instruction *I1, Instruction *I2)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isSafeToHoistInvoke </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>BB1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>BB2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Instruction.html">Instruction</a> * </td>
+          <td class="paramname"><em>I1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Instruction.html">Instruction</a> * </td>
+          <td class="paramname"><em>I2</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l01037">1037</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Instructions_8h_source.html#l02125">llvm::PHINode::getIncomingValueForBlock()</a>, <a class="el" href="Interval_8h_source.html#l00107">llvm::succ_begin()</a>, and <a class="el" href="Interval_8h_source.html#l00110">llvm::succ_end()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l01056">HoistThenElseCodeToIf()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afe11668c8bd8d29c005ca8e66ba9ef6b"></a><!-- doxytag: member="SimplifyCFG.cpp::LookupConstant" ref="afe11668c8bd8d29c005ca8e66ba9ef6b" args="(Value *V, const SmallDenseMap< Value *, Constant * > &ConstantPool)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1Constant.html">Constant</a>* LookupConstant </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1SmallDenseMap.html">SmallDenseMap</a>< <a class="el" href="classllvm_1_1Value.html">Value</a> *, <a class="el" href="classllvm_1_1Constant.html">Constant</a> * > & </td>
+          <td class="paramname"><em>ConstantPool</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>LookupConstant - If V is a Constant, return it. Otherwise, try to look up its constant value in ConstantPool, returning 0 if it's not there. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l03201">3201</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="CallingConv_8h_source.html#l00031">llvm::CallingConv::C</a>, and <a class="el" href="DenseMap_8h_source.html#l00141">llvm::DenseMapBase< SmallDenseMap< KeyT, ValueT, InlineBuckets, KeyInfoT >, KeyT, ValueT, KeyInfoT >::lookup()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l03212">ConstantFold()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l03259">GetCaseResults()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8d718b79cd2832d71600169ac3e132b0"></a><!-- doxytag: member="SimplifyCFG.cpp::passingValueIsAlwaysUndefined" ref="a8d718b79cd2832d71600169ac3e132b0" args="(Value *V, Instruction *I)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> passingValueIsAlwaysUndefined </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Instruction.html">Instruction</a> * </td>
+          <td class="paramname"><em>I</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Check if passing a value to an instruction will cause undefined behavior. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l03866">3866</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="CallingConv_8h_source.html#l00031">llvm::CallingConv::C</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="BasicBlock_8h_source.html#l00191">llvm::BasicBlock::end()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="Constants_8cpp_source.html#l00054">llvm::Constant::isNullValue()</a>, <a class="el" href="LoopInfoImpl_8h_source.html#l00430">LI</a>, <a class="el" href="Value_8h_source.html#l00145">llvm::Value::use_begin()</a>, and <a class="el" href="Value_8h_source.html#l00144">llvm::Value::use_empty()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l03906">removeUndefIntroducingPredecessor()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2026c2afa149ebc0c1ac8fd091fdc22c"></a><!-- doxytag: member="SimplifyCFG.cpp::removeUndefIntroducingPredecessor" ref="a2026c2afa149ebc0c1ac8fd091fdc22c" args="(BasicBlock *BB)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> removeUndefIntroducingPredecessor </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>BB</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>If BB has an incoming value that will always trigger undefined behavior (eg. null pointer dereference), remove the branch leading here. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l03906">3906</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="IRBuilder_8h_source.html#l00460">llvm::IRBuilder< preserveNames, T, Inserter >::CreateBr()</a>, <a class="el" href="IRBuilder_8h_source.html#l00520">llvm::IRBuilder< preserveNames, T, Inserter >::CreateUnreachable()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="Instructions_8h_source.html#l02060">llvm::PHINode::getIncomingBlock()</a>, <a class="el" href="Instructions_8h_source.html#l02045">llvm::PHINode::getIncomingValue()</a>, <a class="el" href="Instructions_8h_source.html#l02041">llvm::PHINode::getNumIncomingValues()</a>, <a class="el" href="Instructions_8h_source.html#l02392">llvm::BranchInst::getSuccessor()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTermi
 nator()</a>, <a class="el" href="Instructions_8h_source.html#l02377">llvm::BranchInst::isUnconditional()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l03866">passingValueIsAlwaysUndefined()</a>, <a class="el" href="InstVisitor_8h_source.html#l00164">llvm::PHI</a>, and <a class="el" href="BasicBlock_8cpp_source.html#l00216">llvm::BasicBlock::removePredecessor()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a02215e210f29948498aeb844022afe53"></a><!-- doxytag: member="SimplifyCFG.cpp::SafeToMergeTerminators" ref="a02215e210f29948498aeb844022afe53" args="(TerminatorInst *SI1, TerminatorInst *SI2)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> SafeToMergeTerminators </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> * </td>
+          <td class="paramname"><em>SI1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> * </td>
+          <td class="paramname"><em>SI2</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>SafeToMergeTerminators - Return true if it is safe to merge these two terminator instructions together. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00115">115</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="SmallPtrSet_8h_source.html#l00265">llvm::SmallPtrSet< PtrType, SmallSize >::count()</a>, <a class="el" href="Instructions_8h_source.html#l02125">llvm::PHINode::getIncomingValueForBlock()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="Interval_8h_source.html#l00107">llvm::succ_begin()</a>, and <a class="el" href="Interval_8h_source.html#l00110">llvm::succ_end()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l01871">llvm::FoldBranchToCommonDest()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa1d125e64c3d0c3105dbedc0cc4d5787"></a><!-- doxytag: member="SimplifyCFG.cpp::ShouldBuildLookupTable" ref="aa1d125e64c3d0c3105dbedc0cc4d5787" args="(SwitchInst *SI, uint64_t TableSize, const DataLayout *TD, const SmallDenseMap< PHINode *, Type * > &ResultTypes)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> ShouldBuildLookupTable </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> * </td>
+          <td class="paramname"><em>SI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>TableSize</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> * </td>
+          <td class="paramname"><em>TD</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1SmallDenseMap.html">SmallDenseMap</a>< <a class="el" href="classllvm_1_1PHINode.html">PHINode</a> *, <a class="el" href="classllvm_1_1Type.html">Type</a> * > & </td>
+          <td class="paramname"><em>ResultTypes</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>ShouldBuildLookupTable - Determine whether a lookup table should be built for this switch, based on the number of caes, size of the table and the types of the results. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l03511">3511</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="DenseMap_8h_source.html#l00053">llvm::DenseMapBase< SmallDenseMap< KeyT, ValueT, InlineBuckets, KeyInfoT >, KeyT, ValueT, KeyInfoT >::begin()</a>, <a class="el" href="DenseMap_8h_source.html#l00057">llvm::DenseMapBase< SmallDenseMap< KeyT, ValueT, InlineBuckets, KeyInfoT >, KeyT, ValueT, KeyInfoT >::end()</a>, <a class="el" href="Instructions_8h_source.html#l02534">llvm::SwitchInst::getNumCases()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, and <a class="el" href="DataTypes_8h_source.html#l00188">UINT64_MAX</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l03535">SwitchToLookupTable()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a39eb6c7310d5673dad5be0af7c6a79f8"></a><!-- doxytag: member="SimplifyCFG.cpp::SimplifyBranchOnICmpChain" ref="a39eb6c7310d5673dad5be0af7c6a79f8" args="(BranchInst *BI, const DataLayout *TD, IRBuilder<> &Builder)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> SimplifyBranchOnICmpChain </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> * </td>
+          <td class="paramname"><em>BI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> * </td>
+          <td class="paramname"><em>TD</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1IRBuilder.html">IRBuilder</a><> & </td>
+          <td class="paramname"><em>Builder</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>SimplifyBranchOnICmpChain - The specified branch is a conditional branch. Check to see if it is branching on an or/and chain of icmp instructions, and fold it into a switch instruction if so. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l02632">2632</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8cpp_source.html#l03185">llvm::SwitchInst::addCase()</a>, <a class="el" href="Instructions_8h_source.html#l02086">llvm::PHINode::addIncoming()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00183">AddPredecessorToBlock()</a>, <a class="el" href="APInt_8h_source.html#l01759">llvm::APIntOps::And()</a>, <a class="el" href="STLExtras_8h_source.html#l00273">llvm::array_pod_sort()</a>, <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00762">ConstantIntSortPredicate()</a>, <a class="el" href="IRBuilder_8h_source.html#l00466">llvm::IRBuilder< preserveNames, T, Inserter >::CreateCondBr()</a>, <a class="el" href="IRBuilder_8h_source.html#l01049">llvm::IRBuilder< preserveNames, T, Inserter >::CreatePtrToInt()</a>, <a class="el" href="IRBuilder_8h_source.html#l00475">llvm::IRBuilder< preserveNames, T, Inserter >::CreateSwitch()</a
 >, <a class="el" href="Debug_8cpp_source.html#l00101">llvm::dbgs()</a>, <a class="el" href="Debug_8h_source.html#l00097">DEBUG</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00504">EraseTerminatorInstAndDCECond()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00423">GatherConstantCompares()</a>, <a class="el" href="Instructions_8h_source.html#l02380">llvm::BranchInst::getCondition()</a>, <a class="el" href="Value_8cpp_source.html#l00468">llvm::Value::getContext()</a>, <a class="el" href="Instructions_8h_source.html#l02125">llvm::PHINode::getIncomingValueForBlock()</a>, <a class="el" href="DataLayout_8cpp_source.html#l00665">llvm::DataLayout::getIntPtrType()</a>, <a class="el" href="Instruction_8h_source.html#l00082">llvm::Instruction::getOpcode()</a>, <a class="el" href="Instruction_8h_sour
 ce.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="Instructions_8h_source.html#l02392">llvm::BranchInst::getSuccessor()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="Type_8h_source.html#l00204">llvm::Type::isPointerTy()</a>, <a class="el" href="APInt_8h_source.html#l01765">llvm::APIntOps::Or()</a>, <a class="el" href="IRBuilder_8h_source.html#l00075">llvm::IRBuilderBase::SetInsertPoint()</a>, <a class="el" href="BasicBlock_8h_source.html#l00194">llvm::BasicBlock::size()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00298">llvm::BasicBlock::splitBasicBlock()</a>, and <a class="el" href="OwningPtr_8h_source.html#l00084">llvm::swap()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a285d756a993fe2460d35129ba58f92a2"></a><!-- doxytag: member="SimplifyCFG.cpp::SimplifyCondBranchToCondBranch" ref="a285d756a993fe2460d35129ba58f92a2" args="(BranchInst *PBI, BranchInst *BI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> SimplifyCondBranchToCondBranch </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> * </td>
+          <td class="paramname"><em>PBI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> * </td>
+          <td class="paramname"><em>BI</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>SimplifyCondBranchToCondBranch - If we have a conditional branch as a predecessor of another block, this function tries to simplify it. We know that PBI and BI are both conditional branches, and BI is in one of the successor blocks of PBI - PBI branches to BI. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l02189">2189</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l02086">llvm::PHINode::addIncoming()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00183">AddPredecessorToBlock()</a>, <a class="el" href="StringRef_8h_source.html#l00098">llvm::StringRef::begin()</a>, <a class="el" href="SmallVector_8h_source.html#l00111">llvm::SmallVectorTemplateCommon< T >::begin()</a>, <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l01486">BlockIsSimpleEnoughToThreadThrough()</a>, <a class="el" href="BasicBlock_8h_source.html#l00102">llvm::BasicBlock::Create()</a>, <a class="el" href="Instructions_8h_source.html#l01999">llvm::PHINode::Create()</a>, <a class="el" href="Instructions_8h_source.html#l02359">llvm::BranchInst::Create()</a>, <a class="el" href="IRBuilder_8h_source.html#l00793">llvm::IRBuilder< preserveNames, T, Inserter >::CreateNot()</a>, <a class="el" href="IRBuilder_8h_sourc
 e.html#l00736">llvm::IRBuilder< preserveNames, T, Inserter >::CreateOr()</a>, <a class="el" href="IRBuilder_8h_source.html#l01256">llvm::IRBuilder< preserveNames, T, Inserter >::CreateSelect()</a>, <a class="el" href="Debug_8cpp_source.html#l00101">llvm::dbgs()</a>, <a class="el" href="Debug_8h_source.html#l00097">DEBUG</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="SmallVector_8h_source.html#l00113">llvm::SmallVectorTemplateCommon< T >::end()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l01836">ExtractBranchMetadata()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00807">FitWeights()</a>, <a class="el" href="Constants_8cpp_source.html#l00460">llvm::ConstantInt::get()</a>, <a class="el" href="Instructions_8h_source.html#l02380">llvm::BranchInst::getCondition()</a>, <a class="el" href="Value_8cpp_source.html#l00468">llvm::Value::getContext()</a>, <a class="el" href="Instructions_8h_source.ht
 ml#l02125">llvm::PHINode::getIncomingValueForBlock()</a>, <a class="el" href="Type_8cpp_source.html#l00237">llvm::Type::getInt1Ty()</a>, <a class="el" href="Value_8cpp_source.html#l00164">llvm::Value::getName()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="BasicBlock_8h_source.html#l00110">llvm::BasicBlock::getParent()</a>, <a class="el" href="Instructions_8h_source.html#l02392">llvm::BranchInst::getSuccessor()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="Instructions_8h_source.html#l02378">llvm::BranchInst::isConditional()</a>, <a class="el" href="LLVMContext_8h_source.html#l00046">llvm::LLVMContext::MD_prof</a>, <a class="el" href="Interval_8h_source.html#l00117">llvm::pred_begin()</a>, <a class="el" href="Interval_8h_source.html#l00120">llvm::pred_end()</a>, <a class="el" href="SmallVector_8h_source.html#l00231">llvm::SmallVector
 TemplateBase< T, isPodLike< T >::value >::push_back()</a>, <a class="el" href="Instructions_8h_source.html#l02385">llvm::BranchInst::setCondition()</a>, <a class="el" href="Metadata_8cpp_source.html#l00622">llvm::Instruction::setMetadata()</a>, and <a class="el" href="Instructions_8h_source.html#l02397">llvm::BranchInst::setSuccessor()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2e1b28b7b4b85744d3a02881d4601122"></a><!-- doxytag: member="SimplifyCFG.cpp::SimplifyCondBranchToTwoReturns" ref="a2e1b28b7b4b85744d3a02881d4601122" args="(BranchInst *BI, IRBuilder<> &Builder)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> SimplifyCondBranchToTwoReturns </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> * </td>
+          <td class="paramname"><em>BI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1IRBuilder.html">IRBuilder</a><> & </td>
+          <td class="paramname"><em>Builder</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>SimplifyCondBranchToTwoReturns - If we found a conditional branch that goes to two returning blocks, try to merge them together into one return, introducing a select if the return values disagree. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l01747">1747</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="IRBuilder_8h_source.html#l00441">llvm::IRBuilder< preserveNames, T, Inserter >::CreateRet()</a>, <a class="el" href="IRBuilder_8h_source.html#l00434">llvm::IRBuilder< preserveNames, T, Inserter >::CreateRetVoid()</a>, <a class="el" href="IRBuilder_8h_source.html#l01256">llvm::IRBuilder< preserveNames, T, Inserter >::CreateSelect()</a>, <a class="el" href="Debug_8cpp_source.html#l00101">llvm::dbgs()</a>, <a class="el" href="Debug_8h_source.html#l00097">DEBUG</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00504">EraseTerminatorInstAndDCECond()</a>, <a class="el" href="Instructions_8h_source.html#l02380">llvm::BranchInst::getCondition()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00140">llvm::BasicBlock::getFirstNonPHIOrDbg()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="Instructions_8h_source.html#l02304">llvm::ReturnInst::getReturnValue()
 </a>, <a class="el" href="Instructions_8h_source.html#l02392">llvm::BranchInst::getSuccessor()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="Instructions_8h_source.html#l02378">llvm::BranchInst::isConditional()</a>, <a class="el" href="Instruction_8h_source.html#l00085">llvm::Instruction::isTerminator()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00216">llvm::BasicBlock::removePredecessor()</a>, and <a class="el" href="IRBuilder_8h_source.html#l00075">llvm::IRBuilderBase::SetInsertPoint()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3ab1a6ec499c9bfd45258e149aa555c5"></a><!-- doxytag: member="SimplifyCFG.cpp::SimplifyIndirectBrOnSelect" ref="a3ab1a6ec499c9bfd45258e149aa555c5" args="(IndirectBrInst *IBI, SelectInst *SI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> SimplifyIndirectBrOnSelect </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1IndirectBrInst.html">IndirectBrInst</a> * </td>
+          <td class="paramname"><em>IBI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SelectInst.html">SelectInst</a> * </td>
+          <td class="paramname"><em>SI</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l02492">2492</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Constants_8h_source.html#l00765">llvm::BlockAddress::getBasicBlock()</a>, <a class="el" href="Instructions_8h_source.html#l01452">llvm::SelectInst::getCondition()</a>, <a class="el" href="Instructions_8h_source.html#l01454">llvm::SelectInst::getFalseValue()</a>, <a class="el" href="Instructions_8h_source.html#l01453">llvm::SelectInst::getTrueValue()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l02391">SimplifyTerminatorOnSelect()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af0d7fe1e3aa12d83e0af774a398d34ab"></a><!-- doxytag: member="SimplifyCFG.cpp::SimplifySwitchOnSelect" ref="af0d7fe1e3aa12d83e0af774a398d34ab" args="(SwitchInst *SI, SelectInst *Select)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> SimplifySwitchOnSelect </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> * </td>
+          <td class="paramname"><em>SI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SelectInst.html">SelectInst</a> * </td>
+          <td class="paramname"><em>Select</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l02456">2456</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Instructions_8h_source.html#l02575">llvm::SwitchInst::findCaseValue()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00784">GetBranchWeights()</a>, <a class="el" href="Instructions_8h_source.html#l01452">llvm::SelectInst::getCondition()</a>, <a class="el" href="Instructions_8h_source.html#l01454">llvm::SelectInst::getFalseValue()</a>, <a class="el" href="Instructions_8h_source.html#l02534">llvm::SwitchInst::getNumCases()</a>, <a class="el" href="Instructions_8h_source.html#l01453">llvm::SelectInst::getTrueValue()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00772">HasBranchWeights()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l02391">SimplifyTerminatorOnSelect()</a>, and <a class="el" href="SmallVector_8h_source.html#l00126">llvm::SmallVectorTemplateCommon< T >::size()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aae15857ee04fb44315481a693e4562c4"></a><!-- doxytag: member="SimplifyCFG.cpp::SimplifyTerminatorOnSelect" ref="aae15857ee04fb44315481a693e4562c4" args="(TerminatorInst *OldTerm, Value *Cond, BasicBlock *TrueBB, BasicBlock *FalseBB, uint32_t TrueWeight, uint32_t FalseWeight)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> SimplifyTerminatorOnSelect </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> * </td>
+          <td class="paramname"><em>OldTerm</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>Cond</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>TrueBB</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>FalseBB</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint32_t </td>
+          <td class="paramname"><em>TrueWeight</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint32_t </td>
+          <td class="paramname"><em>FalseWeight</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l02391">2391</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="IRBuilder_8h_source.html#l00460">llvm::IRBuilder< preserveNames, T, Inserter >::CreateBr()</a>, <a class="el" href="IRBuilder_8h_source.html#l00466">llvm::IRBuilder< preserveNames, T, Inserter >::CreateCondBr()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00504">EraseTerminatorInstAndDCECond()</a>, <a class="el" href="Value_8cpp_source.html#l00468">llvm::Value::getContext()</a>, <a class="el" href="Instruction_8h_source.html#l00177">llvm::Instruction::getDebugLoc()</a>, <a class="el" href="InstrTypes_8h_source.html#l00059">llvm::TerminatorInst::getNumSuccessors()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="InstrTypes_8h_source.html#l00065">llvm::TerminatorInst::getSuccessor()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="LLVMContext_8h_source.html#l00046">llvm::LLVMContext::MD_prof</a>, <a cla
 ss="el" href="BasicBlock_8cpp_source.html#l00216">llvm::BasicBlock::removePredecessor()</a>, <a class="el" href="IRBuilder_8h_source.html#l00110">llvm::IRBuilderBase::SetCurrentDebugLocation()</a>, and <a class="el" href="Metadata_8cpp_source.html#l00622">llvm::Instruction::setMetadata()</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l02492">SimplifyIndirectBrOnSelect()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l02456">SimplifySwitchOnSelect()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a136cc7ed9c1041928df9f03631026a0d"></a><!-- doxytag: member="SimplifyCFG.cpp::SinkThenElseCodeToEnd" ref="a136cc7ed9c1041928df9f03631026a0d" args="(BranchInst *BI1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> SinkThenElseCodeToEnd </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> * </td>
+          <td class="paramname"><em>BI1</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>SinkThenElseCodeToEnd - Given an unconditional branch that goes to BBEnd, check whether BBEnd has only two predecessors and the other predecessor ends with an unconditional branch. If it is true, sink any common code in the two predecessors to BBEnd. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l01170">1170</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l02086">llvm::PHINode::addIncoming()</a>, <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="Instructions_8h_source.html#l01999">llvm::PHINode::Create()</a>, <a class="el" href="Debug_8cpp_source.html#l00101">llvm::dbgs()</a>, <a class="el" href="Debug_8h_source.html#l00097">DEBUG</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="BasicBlock_8h_source.html#l00191">llvm::BasicBlock::end()</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="BasicBlock_8h_source.html#l00204">llvm::BasicBlock::getInstList()</a>, <a class="el" href="Value_8cpp_source.html#l00164">llvm::Value::getName()</a>, <a class="el" href="User_8h_source.html#l00108">llvm::User::getNumOperands()</a>, <a class="el" href="User_8h_source.html#l00088">llvm::User::getOperand()</a>, <
 a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="Instructions_8h_source.html#l02392">llvm::BranchInst::getSuccessor()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="Value_8h_source.html#l00156">llvm::Value::hasOneUse()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="Value_8h_source.html#l00253">llvm::Value::intersectOptionalDataWith()</a>, <a class="el" href="Instruction_8cpp_source.html#l00243">llvm::Instruction::isSameOperationAs()</a>, <a class="el" href="Instructions_8h_source.html#l02377">llvm::BranchInst::isUnconditional()</a>, <a class="el" href="Instruction_8h_source.html#l00264">llvm::Instruction::mayHaveSideEffects()</a>, <a class="el" href="Instruction_8h_source.html#l00250">llvm::Instruction::mayReadOr
 WriteMemory()</a>, <a class="el" href="Interval_8h_source.html#l00117">llvm::pred_begin()</a>, <a class="el" href="Interval_8h_source.html#l00120">llvm::pred_end()</a>, <a class="el" href="Value_8cpp_source.html#l00297">llvm::Value::replaceAllUsesWith()</a>, <a class="el" href="User_8h_source.html#l00092">llvm::User::setOperand()</a>, and <a class="el" href="Value_8h_source.html#l00144">llvm::Value::use_empty()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9ea7032961696413a2b145bedf1224ad"></a><!-- doxytag: member="SimplifyCFG.cpp::SpeculativelyExecuteBB" ref="a9ea7032961696413a2b145bedf1224ad" args="(BranchInst *BI, BasicBlock *BB1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> SpeculativelyExecuteBB </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BranchInst.html">BranchInst</a> * </td>
+          <td class="paramname"><em>BI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> * </td>
+          <td class="paramname"><em>BB1</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>SpeculativelyExecuteBB - Given a conditional branch that goes to BB1 and an BB2 and the only successor of BB1 is BB2, hoist simple code (for now, restricted to a single instruction that's side effect free) from the BB1 into the branch block to speculatively execute it.</p>
+<p>Turn BB: t1 = icmp br i1 t1, label BB1, label BB2 BB1: t3 = add t2, c br label BB2 BB2: => BB: t1 = icmp t4 = add t2, c t3 = select i1 t1, t2, t3 </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l01353">1353</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00283">ComputeSpeculationCost()</a>, <a class="el" href="IRBuilder_8h_source.html#l01256">llvm::IRBuilder< preserveNames, T, Inserter >::CreateSelect()</a>, <a class="el" href="Debug_8cpp_source.html#l00101">llvm::dbgs()</a>, <a class="el" href="Debug_8h_source.html#l00097">DEBUG</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="SetVector_8h_source.html#l00059">llvm::SetVector< T, SmallVector< T, N >, SmallSet< T, N > >::empty()</a>, <a class="el" href="BasicBlock_8h_source.html#l00191">llvm::BasicBlock::end()</a>, <a class="el" href="Instructions_8h_source.html#l02118">llvm::PHINode::getBasicBlockIndex()</a>, <a class="el" href="Instructions_8h_source.html#l02380">llvm::BranchInst::getCondition()</a>, <a class="el" href="Instructions_8h_source.html#l02045">
 llvm::PHINode::getIncomingValue()</a>, <a class="el" href="Instructions_8h_source.html#l02125">llvm::PHINode::getIncomingValueForBlock()</a>, <a class="el" href="BasicBlock_8h_source.html#l00204">llvm::BasicBlock::getInstList()</a>, <a class="el" href="Value_8cpp_source.html#l00164">llvm::Value::getName()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="InstrTypes_8h_source.html#l00065">llvm::TerminatorInst::getSuccessor()</a>, <a class="el" href="Instructions_8h_source.html#l02392">llvm::BranchInst::getSuccessor()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="SetVector_8h_source.html#l00102">llvm::SetVector< T, SmallVector< T, N >, SmallSet< T, N > >::insert()</a>, <a class="el" href="ValueTracking_8cpp_source.html#l01853">llvm::isSafeToSpec
 ulativelyExecute()</a>, <a class="el" href="Value_8cpp_source.html#l00110">llvm::Value::isUsedInBasicBlock()</a>, <a class="el" href="Instruction_8h_source.html#l00264">llvm::Instruction::mayHaveSideEffects()</a>, <a class="el" href="User_8h_source.html#l00116">llvm::User::op_begin()</a>, <a class="el" href="User_8h_source.html#l00118">llvm::User::op_end()</a>, <a class="el" href="SimplifyCFG_8cpp.html#a830a17648b2e5112beef220cc707c977">PHINodeFoldingThreshold</a>, <a class="el" href="Instructions_8h_source.html#l02048">llvm::PHINode::setIncomingValue()</a>, and <a class="el" href="SetVector_8h_source.html#l00064">llvm::SetVector< T, SmallVector< T, N >, SmallSet< T, N > >::size()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a094edb4846824b6513167facc6a7afe1"></a><!-- doxytag: member="SimplifyCFG.cpp::STATISTIC" ref="a094edb4846824b6513167facc6a7afe1" args="(NumBitMaps,"Number of switch instructions turned into bitmaps")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumBitMaps </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of switch <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a> turned into bitmaps" </td>
+          <td class="paramname"> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a3b805cb990220111f878d52811233df0"></a><!-- doxytag: member="SimplifyCFG.cpp::STATISTIC" ref="a3b805cb990220111f878d52811233df0" args="(NumLookupTables,"Number of switch instructions turned into lookup tables")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumLookupTables </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of switch <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a> turned into lookup tables" </td>
+          <td class="paramname"> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="afef79ee5b4feaa59ddd09123c1ae3f6a"></a><!-- doxytag: member="SimplifyCFG.cpp::STATISTIC" ref="afef79ee5b4feaa59ddd09123c1ae3f6a" args="(NumSinkCommons,"Number of common instructions sunk down to the end block")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumSinkCommons </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of common <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a> sunk down to the end block" </td>
+          <td class="paramname"> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab4d51f817ed15e19df3ba4e102c25207"></a><!-- doxytag: member="SimplifyCFG.cpp::STATISTIC" ref="ab4d51f817ed15e19df3ba4e102c25207" args="(NumSpeculations,"Number of speculative executed instructions")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumSpeculations </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of speculative executed <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a>" </td>
+          <td class="paramname"> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae403a3eeaed2fb079121bc3f2092064f"></a><!-- doxytag: member="SimplifyCFG.cpp::SwitchToLookupTable" ref="ae403a3eeaed2fb079121bc3f2092064f" args="(SwitchInst *SI, IRBuilder<> &Builder, const DataLayout *TD, const TargetTransformInfo *TTI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> SwitchToLookupTable </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> * </td>
+          <td class="paramname"><em>SI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1IRBuilder.html">IRBuilder</a><> & </td>
+          <td class="paramname"><em>Builder</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> * </td>
+          <td class="paramname"><em>TD</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1TargetTransformInfo.html">TargetTransformInfo</a> * </td>
+          <td class="paramname"><em>TTI</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>SwitchToLookupTable - If the switch is only used to initialize one or more phi nodes in a common successor block with different constant values, replace the switch with lookup tables. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l03535">3535</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l02540">llvm::SwitchInst::case_begin()</a>, <a class="el" href="Instructions_8h_source.html#l02551">llvm::SwitchInst::case_end()</a>, <a class="el" href="DenseMap_8h_source.html#l00101">llvm::DenseMapBase< SmallDenseMap< KeyT, ValueT, InlineBuckets, KeyInfoT >, KeyT, ValueT, KeyInfoT >::count()</a>, <a class="el" href="BasicBlock_8h_source.html#l00102">llvm::BasicBlock::Create()</a>, <a class="el" href="IRBuilder_8h_source.html#l00460">llvm::IRBuilder< preserveNames, T, Inserter >::CreateBr()</a>, <a class="el" href="IRBuilder_8h_source.html#l00466">llvm::IRBuilder< preserveNames, T, Inserter >::CreateCondBr()</a>, <a class="el" href="IRBuilder_8h_source.html#l01138">llvm::IRBuilder< preserveNames, T, Inserter >::CreateICmpULT()</a>, <a class="el" href="IRBuilder_8h_source.html#l00441">llvm::IRBuilder< preserveNames, T, Inserter >::CreateRet()</a>, <a class="el" href="IRBuilder_
 8h_source.html#l00568">llvm::IRBuilder< preserveNames, T, Inserter >::CreateSub()</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="Constants_8cpp_source.html#l00460">llvm::ConstantInt::get()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l03259">GetCaseResults()</a>, <a class="el" href="Instructions_8h_source.html#l02521">llvm::SwitchInst::getCondition()</a>, <a class="el" href="Module_8h_source.html#l00247">llvm::Module::getContext()</a>, <a class="el" href="Instructions_8h_source.html#l02524">llvm::SwitchInst::getDefaultDest()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00140">llvm::BasicBlock::getFirstNonPHIOrDbg()</a>, <a class="el" href="APInt_8h_source.html#l00388">llvm::APInt::getLimitedValue()</a>, <a class="el" href="Instructions_8h_source.html#l02534">llvm::SwitchInst::getNumCases()</a>, <a class="el" href="Instructions_8h_source.html#l02624">llvm::SwitchInst::getNumSu
 ccessors()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="BasicBlock_8h_source.html#l00110">llvm::BasicBlock::getParent()</a>, <a class="el" href="GlobalValue_8h_source.html#l00286">llvm::GlobalValue::getParent()</a>, <a class="el" href="TargetTransformInfo_8h_source.html#l00057">llvm::TargetTransformInfo::getScalarTargetTransformInfo()</a>, <a class="el" href="Instructions_8h_source.html#l02625">llvm::SwitchInst::getSuccessor()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="Constants_8h_source.html#l00140">llvm::ConstantInt::getType()</a>, <a class="el" href="Constants_8h_source.html#l00104">llvm::ConstantInt::getValue()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="InstVisitor_8h_source.html#l00164">llvm::PHI</a>, <a class="el" href="SmallVector_8h_source.html#l00231">llvm::SmallVectorTemplateBa
 se< T, isPodLike< T >::value >::push_back()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00216">llvm::BasicBlock::removePredecessor()</a>, <a class="el" href="IRBuilder_8h_source.html#l00075">llvm::IRBuilderBase::SetInsertPoint()</a>, <a class="el" href="APInt_8h_source.html#l01016">llvm::APInt::sgt()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l03511">ShouldBuildLookupTable()</a>, <a class="el" href="TargetTransformInfo_8h_source.html#l00122">llvm::ScalarTargetTransformInfo::shouldBuildLookupTables()</a>, <a class="el" href="SmallVector_8h_source.html#l00126">llvm::SmallVectorTemplateCommon< T >::size()</a>, and <a class="el" href="APInt_8cpp_source.html#l00547">llvm::APInt::slt()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a08e3b1927df1f87b617dcae0998dff2e"></a><!-- doxytag: member="SimplifyCFG.cpp::TryToSimplifyUncondBranchWithICmpInIt" ref="a08e3b1927df1f87b617dcae0998dff2e" args="(ICmpInst *ICI, const DataLayout *TD, IRBuilder<> &Builder)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> TryToSimplifyUncondBranchWithICmpInIt </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1ICmpInst.html">ICmpInst</a> * </td>
+          <td class="paramname"><em>ICI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> * </td>
+          <td class="paramname"><em>TD</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1IRBuilder.html">IRBuilder</a><> & </td>
+          <td class="paramname"><em>Builder</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>TryToSimplifyUncondBranchWithICmpInIt - This is called when we find an icmp instruction (a seteq/setne with a constant) as the only instruction in a block that ends with an uncond branch. We are looking for a very specific pattern that occurs when "A == 1 || A == 2 || A == 3" gets simplified. In this case, we merge the first two "or's of icmp" into a switch, but then the default value goes to an uncond block with a seteq in it, we get something like:</p>
+<p>switch i8 A, label DEFAULT [ i8 1, label end i8 2, label end ] DEFAULT: tmp = icmp eq i8 A, 92 br label end end: ... = phi i1 [ true, entry ], [ tmp, DEFAULT ], [ true, entry ]</p>
+<p>We prefer to split the edge to 'end' so that there is a true/false entry to the PHI, merging the third icmp into the switch. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l02525">2525</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8cpp_source.html#l03185">llvm::SwitchInst::addCase()</a>, <a class="el" href="Instructions_8h_source.html#l02086">llvm::PHINode::addIncoming()</a>, <a class="el" href="BasicBlock_8h_source.html#l00189">llvm::BasicBlock::begin()</a>, <a class="el" href="Instructions_8h_source.html#l02564">llvm::SwitchInst::case_default()</a>, <a class="el" href="BasicBlock_8h_source.html#l00102">llvm::BasicBlock::Create()</a>, <a class="el" href="IRBuilder_8h_source.html#l00460">llvm::IRBuilder< preserveNames, T, Inserter >::CreateBr()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="Instructions_8h_source.html#l02590">llvm::SwitchInst::findCaseDest()</a>, <a class="el" href="Instructions_8h_source.html#l02575">llvm::SwitchInst::findCaseValue()</a>, <a class="el" href="BasicBlock_8h_source.html#
 l00196">llvm::BasicBlock::front()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00784">GetBranchWeights()</a>, <a class="el" href="Instructions_8h_source.html#l02521">llvm::SwitchInst::getCondition()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00033">llvm::BasicBlock::getContext()</a>, <a class="el" href="Value_8cpp_source.html#l00468">llvm::Value::getContext()</a>, <a class="el" href="Instruction_8h_source.html#l00177">llvm::Instruction::getDebugLoc()</a>, <a class="el" href="Instructions_8h_source.html#l02524">llvm::SwitchInst::getDefaultDest()</a>, <a class="el" href="Constants_8cpp_source.html#l00413">llvm::ConstantInt::getFalse()</a>, <a class="el" href="Instructions_8h_source.html#l02534">llvm::SwitchInst::getNumCases()</a>, <a class="el" href="User_8h_source.html#l00088">llvm::User::getOperand()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="BasicBlock_8h_source.html#l00110">llvm::
 BasicBlock::getParent()</a>, <a class="el" href="InstrTypes_8h_source.html#l00708">llvm::CmpInst::getPredicate()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00183">llvm::BasicBlock::getSinglePredecessor()</a>, <a class="el" href="InstrTypes_8h_source.html#l00065">llvm::TerminatorInst::getSuccessor()</a>, <a class="el" href="BasicBlock_8cpp_source.html#l00120">llvm::BasicBlock::getTerminator()</a>, <a class="el" href="Constants_8cpp_source.html#l00406">llvm::ConstantInt::getTrue()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00772">HasBranchWeights()</a>, <a class="el" href="Value_8h_source.html#l00156">llvm::Value::hasOneUse()</a>, <a class="el" href="InstrTypes_8h_source.html#l00666">llvm::CmpInst::ICMP_EQ</a>, <a class="el" href="LLVMContext_8h_source.html#l00046">llvm::LLVMContext::MD_prof</a>, <a class="el" href="Value_8cpp_source.html#l00297">llvm::Value::replaceAllUsesWith()</a>, <a class="el" href="IRBuilder_8h_source.html#l00110">llvm::IRBuilderBa
 se::SetCurrentDebugLocation()</a>, <a class="el" href="IRBuilder_8h_source.html#l00075">llvm::IRBuilderBase::SetInsertPoint()</a>, <a class="el" href="Metadata_8cpp_source.html#l00622">llvm::Instruction::setMetadata()</a>, <a class="el" href="User_8h_source.html#l00092">llvm::User::setOperand()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l04001">llvm::SimplifyCFG()</a>, <a class="el" href="InstructionSimplify_8cpp_source.html#l02781">llvm::SimplifyInstruction()</a>, <a class="el" href="BitVector_8h_source.html#l00584">std::swap()</a>, and <a class="el" href="Instruction_8h_source.html#l00048">llvm::Instruction::use_back()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abf5ef34c952cc6bc5dce92d91598bdd2"></a><!-- doxytag: member="SimplifyCFG.cpp::TurnSwitchRangeIntoICmp" ref="abf5ef34c952cc6bc5dce92d91598bdd2" args="(SwitchInst *SI, IRBuilder<> &Builder)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> TurnSwitchRangeIntoICmp </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SwitchInst.html">SwitchInst</a> * </td>
+          <td class="paramname"><em>SI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1IRBuilder.html">IRBuilder</a><> & </td>
+          <td class="paramname"><em>Builder</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>TurnSwitchRangeIntoICmp - Turns a switch with that contains only a integer range comparison into a sub, an icmp and a branch. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l03003">3003</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="STLExtras_8h_source.html#l00273">llvm::array_pod_sort()</a>, <a class="el" href="Instructions_8h_source.html#l02540">llvm::SwitchInst::case_begin()</a>, <a class="el" href="Instructions_8h_source.html#l02551">llvm::SwitchInst::case_end()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00762">ConstantIntSortPredicate()</a>, <a class="el" href="IRBuilder_8h_source.html#l00546">llvm::IRBuilder< preserveNames, T, Inserter >::CreateAdd()</a>, <a class="el" href="IRBuilder_8h_source.html#l00466">llvm::IRBuilder< preserveNames, T, Inserter >::CreateCondBr()</a>, <a class="el" href="IRBuilder_8h_source.html#l01138">llvm::IRBuilder< preserveNames, T, Inserter >::CreateICmpULT()</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="Constants_8cpp_source.html#l00460">llvm::ConstantInt::get()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00784">GetBra
 nchWeights()</a>, <a class="el" href="Instructions_8h_source.html#l02707">llvm::SwitchInst::CaseIteratorT< SwitchInstTy, ConstantIntTy, SubsetsItTy, BasicBlockTy >::getCaseSuccessor()</a>, <a class="el" href="Instructions_8h_source.html#l02691">llvm::SwitchInst::CaseIteratorT< SwitchInstTy, ConstantIntTy, SubsetsItTy, BasicBlockTy >::getCaseValue()</a>, <a class="el" href="Instructions_8h_source.html#l02521">llvm::SwitchInst::getCondition()</a>, <a class="el" href="Value_8cpp_source.html#l00468">llvm::Value::getContext()</a>, <a class="el" href="Instructions_8h_source.html#l02524">llvm::SwitchInst::getDefaultDest()</a>, <a class="el" href="Value_8cpp_source.html#l00164">llvm::Value::getName()</a>, <a class="el" href="Constants_8cpp_source.html#l01930">llvm::ConstantExpr::getNeg()</a>, <a class="el" href="Instructions_8h_source.html#l02534">llvm::SwitchInst::getNumCases()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a
 >, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l00772">HasBranchWeights()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="Constants_8cpp_source.html#l00054">llvm::Constant::isNullValue()</a>, <a class="el" href="LLVMContext_8h_source.html#l00046">llvm::LLVMContext::MD_prof</a>, <a class="el" href="Metadata_8cpp_source.html#l00622">llvm::Instruction::setMetadata()</a>, and <a class="el" href="SmallVector_8h_source.html#l00126">llvm::SmallVectorTemplateCommon< T >::size()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a73476159b3f570043406e83b49ea036c"></a><!-- doxytag: member="SimplifyCFG.cpp::ValidLookupTableConstant" ref="a73476159b3f570043406e83b49ea036c" args="(Constant *C)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> ValidLookupTableConstant </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Constant.html">Constant</a> * </td>
+          <td class="paramname"><em>C</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>ValidLookupTableConstant - Return true if the backend will be able to handle initializing an array of constants like C. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l03188">3188</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="CallingConv_8h_source.html#l00031">llvm::CallingConv::C</a>.</p>
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l03259">GetCaseResults()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaba6ba9e89bea12994fa7a7a6ade4d38"></a><!-- doxytag: member="SimplifyCFG.cpp::ValuesOverlap" ref="aaba6ba9e89bea12994fa7a7a6ade4d38" args="(std::vector< ValueEqualityComparisonCase > &C1, std::vector< ValueEqualityComparisonCase > &C2)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> ValuesOverlap </td>
+          <td>(</td>
+          <td class="paramtype">std::vector< ValueEqualityComparisonCase > & </td>
+          <td class="paramname"><em>C1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">std::vector< ValueEqualityComparisonCase > & </td>
+          <td class="paramname"><em>C2</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>ValuesOverlap - Return true if there are any keys in C1 that exist in C2 as well. </p>
+
+<p>Definition at line <a class="el" href="SimplifyCFG_8cpp_source.html#l00578">578</a> of file <a class="el" href="SimplifyCFG_8cpp_source.html">SimplifyCFG.cpp</a>.</p>
+
+<p>References <a class="el" href="STLExtras_8h_source.html#l00273">llvm::array_pod_sort()</a>, <a class="el" href="BitVector_8h_source.html#l00584">std::swap()</a>, <a class="el" href="NVPTX_8h_source.html#l00121">llvm::NVPTX::PTXLdStInstCode::V2</a>, and <a class="el" href="Value_8cpp_source.html#l00043">llvm::Value::Value()</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="a0b13773c26dad640e24611c48c657463"></a><!-- doxytag: member="SimplifyCFG.cpp::DupRet" ref="a0b13773c26dad640e24611c48c657463" args="("simplifycfg-dup-ret", cl::Hidden, cl::init(false), cl::desc("Duplicate return instructions into unconditional branches"))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a><<a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a>> <a class="el" href="SimplifyCFG_8cpp.html#a0b13773c26dad640e24611c48c657463">DupRet</a>("simplifycfg-dup-ret", cl::Hidden, cl::init(<a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>), <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Duplicate return <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a> into unconditional branches"))<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a830a17648b2e5112beef220cc707c977"></a><!-- doxytag: member="SimplifyCFG.cpp::PHINodeFoldingThreshold" ref="a830a17648b2e5112beef220cc707c977" args="("phi-node-folding-threshold", cl::Hidden, cl::init(1), cl::desc("Control the amount of phi node folding to perform (default = 1)"))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a><<a class="el" href="classunsigned.html">unsigned</a>> <a class="el" href="SimplifyCFG_8cpp.html#a830a17648b2e5112beef220cc707c977">PHINodeFoldingThreshold</a>("phi-node-folding-threshold", cl::Hidden, cl::init(1), <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Control the amount of phi node folding to perform (default = 1)"))<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Referenced by <a class="el" href="SimplifyCFG_8cpp_source.html#l01610">FoldTwoEntryPHINode()</a>, and <a class="el" href="SimplifyCFG_8cpp_source.html#l01353">SpeculativelyExecuteBB()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac7707bcaec113d0d136467c7b97a62f1"></a><!-- doxytag: member="SimplifyCFG.cpp::SinkCommon" ref="ac7707bcaec113d0d136467c7b97a62f1" args="("simplifycfg-sink-common", cl::Hidden, cl::init(true), cl::desc("Sink common instructions down to the end block"))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a><<a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a>> <a class="el" href="SimplifyCFG_8cpp.html#ac7707bcaec113d0d136467c7b97a62f1">SinkCommon</a>("simplifycfg-<a class="el" href="MachineSink_8cpp.html#abaeca283dd5280e74ec8774a25829c8d">sink</a>-common", cl::Hidden, cl::init(<a class="el" href="LoopSimplify_8cpp.html#a13f020c6a40eb04f1b4f9ddfbb004ce0">true</a>), <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Sink common <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a> down to the end block"))<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:40 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SimplifyIndVar_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SimplifyIndVar_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SimplifyIndVar_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SimplifyIndVar_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,449 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SimplifyIndVar.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_22ea62e2015f6a823fddac4ac38ba517.html">Transforms</a>      </li>
+      <li class="navelem"><a class="el" href="dir_256b03a856f3de95632a509cd258a236.html">Utils</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">SimplifyIndVar.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="SimplifyIndVar_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- SimplifyIndVar.cpp - Induction variable simplification ------------===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This file implements induction variable simplification. It does</span>
+<a name="l00011"></a>00011 <span class="comment">// not define any actual pass or policy, but provides a single function to</span>
+<a name="l00012"></a>00012 <span class="comment">// simplify a loop's induction variables based on ScalarEvolution.</span>
+<a name="l00013"></a>00013 <span class="comment">//</span>
+<a name="l00014"></a>00014 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00015"></a>00015 
+<a name="l00016"></a><a class="code" href="SimplifyIndVar_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">00016</a> <span class="preprocessor">#define DEBUG_TYPE "indvars"</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="Instructions_8h.html">llvm/Instructions.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="IVUsers_8h.html">llvm/Analysis/IVUsers.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="LoopInfo_8h.html">llvm/Analysis/LoopInfo.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="LoopPass_8h.html">llvm/Analysis/LoopPass.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="ScalarEvolutionExpressions_8h.html">llvm/Analysis/ScalarEvolutionExpressions.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="CommandLine_8h.html">llvm/Support/CommandLine.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="Debug_8h.html">llvm/Support/Debug.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="SimplifyIndVar_8h.html">llvm/Transforms/Utils/SimplifyIndVar.h</a>"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="DataLayout_8h.html">llvm/DataLayout.h</a>"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="SmallVector_8h.html">llvm/ADT/SmallVector.h</a>"</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="Statistic_8h.html">llvm/ADT/Statistic.h</a>"</span>
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031 <span class="keyword">using namespace </span>llvm;
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumElimIdentity, <span class="stringliteral">"Number of IV identities eliminated"</span>);
+<a name="l00034"></a>00034 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumElimOperand,  <span class="stringliteral">"Number of IV operands folded into a use"</span>);
+<a name="l00035"></a>00035 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumElimRem     , <span class="stringliteral">"Number of IV remainder operations eliminated"</span>);
+<a name="l00036"></a>00036 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumElimCmp     , <span class="stringliteral">"Number of IV comparisons eliminated"</span>);
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038 <span class="keyword">namespace </span>{<span class="comment"></span>
+<a name="l00039"></a>00039 <span class="comment">  /// SimplifyIndvar - This is a utility for simplifying induction variables</span>
+<a name="l00040"></a>00040 <span class="comment">  /// based on ScalarEvolution. It is the primary instrument of the</span>
+<a name="l00041"></a>00041 <span class="comment">  /// IndvarSimplify pass, but it may also be directly invoked to cleanup after</span>
+<a name="l00042"></a>00042 <span class="comment">  /// other loop passes that preserve SCEV.</span>
+<a name="l00043"></a>00043 <span class="comment"></span>  <span class="keyword">class </span>SimplifyIndvar {
+<a name="l00044"></a>00044     <a class="code" href="classllvm_1_1Loop.html">Loop</a>             *L;
+<a name="l00045"></a>00045     <a class="code" href="classllvm_1_1LoopInfo.html">LoopInfo</a>         *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>;
+<a name="l00046"></a>00046     <a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a>  *SE;
+<a name="l00047"></a>00047     <span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD; <span class="comment">// May be NULL</span>
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049     <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<WeakVH></a> &DeadInsts;
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051     <span class="keywordtype">bool</span> Changed;
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053   <span class="keyword">public</span>:
+<a name="l00054"></a>00054     SimplifyIndvar(<a class="code" href="classllvm_1_1Loop.html">Loop</a> *<a class="code" href="classllvm_1_1Loop.html">Loop</a>, <a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a> *SE, <a class="code" href="classllvm_1_1LPPassManager.html">LPPassManager</a> *LPM,
+<a name="l00055"></a>00055                    <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<WeakVH></a> &<a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa2fee1a7db4e84247a193a9af1f907013">Dead</a>, <a class="code" href="classllvm_1_1IVUsers.html">IVUsers</a> *IVU = NULL) :
+<a name="l00056"></a>00056       L(Loop),
+<a name="l00057"></a>00057       <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>(LPM->getAnalysisIfAvailable<<a class="code" href="classllvm_1_1LoopInfo.html">LoopInfo</a>>()),
+<a name="l00058"></a>00058       SE(SE),
+<a name="l00059"></a>00059       TD(LPM->getAnalysisIfAvailable<<a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a>>()),
+<a name="l00060"></a>00060       DeadInsts(Dead),
+<a name="l00061"></a>00061       Changed(<a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>) {
+<a name="l00062"></a>00062       assert(<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a> && <span class="stringliteral">"IV simplification requires LoopInfo"</span>);
+<a name="l00063"></a>00063     }
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065     <span class="keywordtype">bool</span> hasChanged()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Changed; }
+<a name="l00066"></a>00066 <span class="comment"></span>
+<a name="l00067"></a>00067 <span class="comment">    /// Iteratively perform simplification on a worklist of users of the</span>
+<a name="l00068"></a>00068 <span class="comment">    /// specified induction variable. This is the top-level driver that applies</span>
+<a name="l00069"></a>00069 <span class="comment">    /// all simplicitions to users of an IV.</span>
+<a name="l00070"></a>00070 <span class="comment"></span>    <span class="keywordtype">void</span> simplifyUsers(<a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *CurrIV, <a class="code" href="classllvm_1_1IVVisitor.html">IVVisitor</a> *V = NULL);
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *foldIVUser(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *UseInst, <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *IVOperand);
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074     <span class="keywordtype">bool</span> eliminateIVUser(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *UseInst, <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *IVOperand);
+<a name="l00075"></a>00075     <span class="keywordtype">void</span> eliminateIVComparison(<a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a> *<a class="code" href="namespacellvm.html#a6a4ce50f71e29df6dd1920cf067a2eb5">ICmp</a>, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *IVOperand);
+<a name="l00076"></a>00076     <span class="keywordtype">void</span> eliminateIVRemainder(<a class="code" href="classllvm_1_1BinaryOperator.html">BinaryOperator</a> *Rem, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *IVOperand,
+<a name="l00077"></a>00077                               <span class="keywordtype">bool</span> IsSigned);
+<a name="l00078"></a>00078   };
+<a name="l00079"></a>00079 }
+<a name="l00080"></a>00080 <span class="comment"></span>
+<a name="l00081"></a>00081 <span class="comment">/// foldIVUser - Fold an IV operand into its use.  This removes increments of an</span>
+<a name="l00082"></a>00082 <span class="comment">/// aligned IV when used by a instruction that ignores the low bits.</span>
+<a name="l00083"></a>00083 <span class="comment">///</span>
+<a name="l00084"></a>00084 <span class="comment">/// IVOperand is guaranteed SCEVable, but UseInst may not be.</span>
+<a name="l00085"></a>00085 <span class="comment">///</span>
+<a name="l00086"></a>00086 <span class="comment">/// Return the operand of IVOperand for this induction variable if IVOperand can</span>
+<a name="l00087"></a>00087 <span class="comment">/// be folded (in case more folding opportunities have been exposed).</span>
+<a name="l00088"></a>00088 <span class="comment">/// Otherwise return null.</span>
+<a name="l00089"></a>00089 <span class="comment"></span><a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *SimplifyIndvar::foldIVUser(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *UseInst, <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *IVOperand) {
+<a name="l00090"></a>00090   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *IVSrc = 0;
+<a name="l00091"></a>00091   <span class="keywordtype">unsigned</span> OperIdx = 0;
+<a name="l00092"></a>00092   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *FoldedExpr = 0;
+<a name="l00093"></a>00093   <span class="keywordflow">switch</span> (UseInst-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>()) {
+<a name="l00094"></a>00094   <span class="keywordflow">default</span>:
+<a name="l00095"></a>00095     <span class="keywordflow">return</span> 0;
+<a name="l00096"></a>00096   <span class="keywordflow">case</span> Instruction::UDiv:
+<a name="l00097"></a>00097   <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a5d76973fd2e5e0fd234e129d3fb03db0">Instruction::LShr</a>:
+<a name="l00098"></a>00098     <span class="comment">// We're only interested in the case where we know something about</span>
+<a name="l00099"></a>00099     <span class="comment">// the numerator and have a constant denominator.</span>
+<a name="l00100"></a>00100     <span class="keywordflow">if</span> (IVOperand != UseInst-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(OperIdx) ||
+<a name="l00101"></a>00101         !isa<ConstantInt>(UseInst-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(1)))
+<a name="l00102"></a>00102       <span class="keywordflow">return</span> 0;
+<a name="l00103"></a>00103 
+<a name="l00104"></a>00104     <span class="comment">// Attempt to fold a binary operator with constant operand.</span>
+<a name="l00105"></a>00105     <span class="comment">// e.g. ((I + 1) >> 2) => I >> 2</span>
+<a name="l00106"></a>00106     <span class="keywordflow">if</span> (!isa<BinaryOperator>(IVOperand)
+<a name="l00107"></a>00107         || !isa<ConstantInt>(IVOperand-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(1)))
+<a name="l00108"></a>00108       <span class="keywordflow">return</span> 0;
+<a name="l00109"></a>00109 
+<a name="l00110"></a>00110     IVSrc = IVOperand-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0);
+<a name="l00111"></a>00111     <span class="comment">// IVSrc must be the (SCEVable) IV, since the other operand is const.</span>
+<a name="l00112"></a>00112     assert(SE->isSCEVable(IVSrc-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()) && <span class="stringliteral">"Expect SCEVable IV operand"</span>);
+<a name="l00113"></a>00113 
+<a name="l00114"></a>00114     <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *D = cast<ConstantInt>(UseInst-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(1));
+<a name="l00115"></a>00115     <span class="keywordflow">if</span> (UseInst-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>() == <a class="code" href="namespacellvm.html#a5d76973fd2e5e0fd234e129d3fb03db0">Instruction::LShr</a>) {
+<a name="l00116"></a>00116       <span class="comment">// Get a constant for the divisor. See createSCEV.</span>
+<a name="l00117"></a>00117       uint32_t BitWidth = cast<IntegerType>(UseInst-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>())-><a class="code" href="ValueTracking_8cpp.html#a06c14477546c3a0eb4c79ff007ea2375">getBitWidth</a>();
+<a name="l00118"></a>00118       <span class="keywordflow">if</span> (D-><a class="code" href="classllvm_1_1ConstantInt.html#af8dde13a97efce293a7b04daf1e208fb" title="Return the constant's value.">getValue</a>().<a class="code" href="classllvm_1_1APInt.html#a0229ff3a1d7432810a86c8efab115c33" title="Unsigned greater or equal comparison.">uge</a>(BitWidth))
+<a name="l00119"></a>00119         <span class="keywordflow">return</span> 0;
+<a name="l00120"></a>00120 
+<a name="l00121"></a>00121       D = <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(UseInst-><a class="code" href="classllvm_1_1Value.html#af85a4828b6b5a8de7fc0a55cc0e5b52f" title="All values hold a context through their type.">getContext</a>(),
+<a name="l00122"></a>00122                            <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a>(BitWidth, 1).<a class="code" href="classllvm_1_1APInt.html#a411d64cdd67dcdfd36677fda0cc52bc1" title="Left-shift function.">shl</a>(D-><a class="code" href="classllvm_1_1ConstantInt.html#a6edd823ba5e4e1effc8280ca8a1194ef" title="Return the zero extended value.">getZExtValue</a>()));
+<a name="l00123"></a>00123     }
+<a name="l00124"></a>00124     FoldedExpr = SE->getUDivExpr(SE->getSCEV(IVSrc), SE->getSCEV(D));
+<a name="l00125"></a>00125   }
+<a name="l00126"></a>00126   <span class="comment">// We have something that might fold it's operand. Compare SCEVs.</span>
+<a name="l00127"></a>00127   <span class="keywordflow">if</span> (!SE->isSCEVable(UseInst-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()))
+<a name="l00128"></a>00128     <span class="keywordflow">return</span> 0;
+<a name="l00129"></a>00129 
+<a name="l00130"></a>00130   <span class="comment">// Bypass the operand if SCEV can prove it has no effect.</span>
+<a name="l00131"></a>00131   <span class="keywordflow">if</span> (SE->getSCEV(UseInst) != FoldedExpr)
+<a name="l00132"></a>00132     <span class="keywordflow">return</span> 0;
+<a name="l00133"></a>00133 
+<a name="l00134"></a>00134   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"INDVARS: Eliminated IV operand: "</span> << *IVOperand
+<a name="l00135"></a>00135         << <span class="stringliteral">" -> "</span> << *UseInst << <span class="charliteral">'\n'</span>);
+<a name="l00136"></a>00136 
+<a name="l00137"></a>00137   UseInst-><a class="code" href="classllvm_1_1User.html#a5fa9b8e1842b354f64c1ba6be0a4a17f">setOperand</a>(OperIdx, IVSrc);
+<a name="l00138"></a>00138   assert(SE->getSCEV(UseInst) == FoldedExpr && <span class="stringliteral">"bad SCEV with folded oper"</span>);
+<a name="l00139"></a>00139 
+<a name="l00140"></a>00140   ++NumElimOperand;
+<a name="l00141"></a>00141   Changed = <span class="keyword">true</span>;
+<a name="l00142"></a>00142   <span class="keywordflow">if</span> (IVOperand-><a class="code" href="classllvm_1_1Value.html#ac38c53f76ef532f91f1666c8a87370e9">use_empty</a>())
+<a name="l00143"></a>00143     DeadInsts.push_back(IVOperand);
+<a name="l00144"></a>00144   <span class="keywordflow">return</span> IVSrc;
+<a name="l00145"></a>00145 }
+<a name="l00146"></a>00146 <span class="comment"></span>
+<a name="l00147"></a>00147 <span class="comment">/// eliminateIVComparison - SimplifyIVUsers helper for eliminating useless</span>
+<a name="l00148"></a>00148 <span class="comment">/// comparisons against an induction variable.</span>
+<a name="l00149"></a>00149 <span class="comment"></span><span class="keywordtype">void</span> SimplifyIndvar::eliminateIVComparison(<a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a> *<a class="code" href="namespacellvm.html#a6a4ce50f71e29df6dd1920cf067a2eb5">ICmp</a>, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *IVOperand) {
+<a name="l00150"></a>00150   <span class="keywordtype">unsigned</span> IVOperIdx = 0;
+<a name="l00151"></a>00151   <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05">ICmpInst::Predicate</a> Pred = ICmp-><a class="code" href="classllvm_1_1CmpInst.html#a8afd4995fae596b2c86eeed85b3d388b" title="Return the predicate for this instruction.">getPredicate</a>();
+<a name="l00152"></a>00152   <span class="keywordflow">if</span> (IVOperand != ICmp-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0)) {
+<a name="l00153"></a>00153     <span class="comment">// Swapped</span>
+<a name="l00154"></a>00154     assert(IVOperand == ICmp-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(1) && <span class="stringliteral">"Can't find IVOperand"</span>);
+<a name="l00155"></a>00155     IVOperIdx = 1;
+<a name="l00156"></a>00156     Pred = <a class="code" href="classllvm_1_1CmpInst.html#ab5d3f9900a0284e85ee7a1520a4eeb60" title="Return the predicate as if the operands were swapped.">ICmpInst::getSwappedPredicate</a>(Pred);
+<a name="l00157"></a>00157   }
+<a name="l00158"></a>00158 
+<a name="l00159"></a>00159   <span class="comment">// Get the SCEVs for the ICmp operands.</span>
+<a name="l00160"></a>00160   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *S = SE->getSCEV(ICmp-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(IVOperIdx));
+<a name="l00161"></a>00161   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *<a class="code" href="namespacellvm.html#a6569d00d31a5d74e563e2f39f82271ab">X</a> = SE->getSCEV(ICmp-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(1 - IVOperIdx));
+<a name="l00162"></a>00162 
+<a name="l00163"></a>00163   <span class="comment">// Simplify unnecessary loops away.</span>
+<a name="l00164"></a>00164   <span class="keyword">const</span> <a class="code" href="classllvm_1_1Loop.html">Loop</a> *ICmpLoop = <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->getLoopFor(ICmp-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>());
+<a name="l00165"></a>00165   S = SE->getSCEVAtScope(S, ICmpLoop);
+<a name="l00166"></a>00166   X = SE->getSCEVAtScope(X, ICmpLoop);
+<a name="l00167"></a>00167 
+<a name="l00168"></a>00168   <span class="comment">// If the condition is always true or always false, replace it with</span>
+<a name="l00169"></a>00169   <span class="comment">// a constant value.</span>
+<a name="l00170"></a>00170   <span class="keywordflow">if</span> (SE->isKnownPredicate(Pred, S, X))
+<a name="l00171"></a>00171     ICmp-><a class="code" href="classllvm_1_1Value.html#a3ab5fc45117b450e8bb04e564cb6e5f2">replaceAllUsesWith</a>(<a class="code" href="classllvm_1_1ConstantInt.html#a82dbbd8e3688b0bc1eedb338864d0d0c">ConstantInt::getTrue</a>(ICmp-><a class="code" href="classllvm_1_1Value.html#af85a4828b6b5a8de7fc0a55cc0e5b52f" title="All values hold a context through their type.">getContext</a>()));
+<a name="l00172"></a>00172   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SE->isKnownPredicate(<a class="code" href="classllvm_1_1CmpInst.html#a3c76890714593c78e3b5d142c9030548" title="Return the inverse of the instruction's predicate.">ICmpInst::getInversePredicate</a>(Pred), S, X))
+<a name="l00173"></a>00173     ICmp-><a class="code" href="classllvm_1_1Value.html#a3ab5fc45117b450e8bb04e564cb6e5f2">replaceAllUsesWith</a>(<a class="code" href="classllvm_1_1ConstantInt.html#aa7cce62ac5cc6df09cce0535874336b7">ConstantInt::getFalse</a>(ICmp-><a class="code" href="classllvm_1_1Value.html#af85a4828b6b5a8de7fc0a55cc0e5b52f" title="All values hold a context through their type.">getContext</a>()));
+<a name="l00174"></a>00174   <span class="keywordflow">else</span>
+<a name="l00175"></a>00175     <span class="keywordflow">return</span>;
+<a name="l00176"></a>00176 
+<a name="l00177"></a>00177   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"INDVARS: Eliminated comparison: "</span> << *ICmp << <span class="charliteral">'\n'</span>);
+<a name="l00178"></a>00178   ++NumElimCmp;
+<a name="l00179"></a>00179   Changed = <span class="keyword">true</span>;
+<a name="l00180"></a>00180   DeadInsts.push_back(ICmp);
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182 <span class="comment"></span>
+<a name="l00183"></a>00183 <span class="comment">/// eliminateIVRemainder - SimplifyIVUsers helper for eliminating useless</span>
+<a name="l00184"></a>00184 <span class="comment">/// remainder operations operating on an induction variable.</span>
+<a name="l00185"></a>00185 <span class="comment"></span><span class="keywordtype">void</span> SimplifyIndvar::eliminateIVRemainder(<a class="code" href="classllvm_1_1BinaryOperator.html">BinaryOperator</a> *Rem,
+<a name="l00186"></a>00186                                       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *IVOperand,
+<a name="l00187"></a>00187                                       <span class="keywordtype">bool</span> IsSigned) {
+<a name="l00188"></a>00188   <span class="comment">// We're only interested in the case where we know something about</span>
+<a name="l00189"></a>00189   <span class="comment">// the numerator.</span>
+<a name="l00190"></a>00190   <span class="keywordflow">if</span> (IVOperand != Rem-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0))
+<a name="l00191"></a>00191     <span class="keywordflow">return</span>;
+<a name="l00192"></a>00192 
+<a name="l00193"></a>00193   <span class="comment">// Get the SCEVs for the ICmp operands.</span>
+<a name="l00194"></a>00194   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *S = SE->getSCEV(Rem-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0));
+<a name="l00195"></a>00195   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *X = SE->getSCEV(Rem-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(1));
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197   <span class="comment">// Simplify unnecessary loops away.</span>
+<a name="l00198"></a>00198   <span class="keyword">const</span> <a class="code" href="classllvm_1_1Loop.html">Loop</a> *ICmpLoop = <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->getLoopFor(Rem-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>());
+<a name="l00199"></a>00199   S = SE->getSCEVAtScope(S, ICmpLoop);
+<a name="l00200"></a>00200   X = SE->getSCEVAtScope(X, ICmpLoop);
+<a name="l00201"></a>00201 
+<a name="l00202"></a>00202   <span class="comment">// i % n  -->  i  if i is in [0,n).</span>
+<a name="l00203"></a>00203   <span class="keywordflow">if</span> ((!IsSigned || SE->isKnownNonNegative(S)) &&
+<a name="l00204"></a>00204       SE->isKnownPredicate(IsSigned ? <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05a15ae464950ac676919c2f0c7aafc706c" title="signed less than">ICmpInst::ICMP_SLT</a> : <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05a91d86a4753c8bd7624e01bf565d87f8e" title="unsigned less than">ICmpInst::ICMP_ULT</a>,
+<a name="l00205"></a>00205                            S, X))
+<a name="l00206"></a>00206     Rem-><a class="code" href="classllvm_1_1Value.html#a3ab5fc45117b450e8bb04e564cb6e5f2">replaceAllUsesWith</a>(Rem-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0));
+<a name="l00207"></a>00207   <span class="keywordflow">else</span> {
+<a name="l00208"></a>00208     <span class="comment">// (i+1) % n  -->  (i+1)==n?0:(i+1)  if i is in [0,n).</span>
+<a name="l00209"></a>00209     <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *LessOne =
+<a name="l00210"></a>00210       SE->getMinusSCEV(S, SE->getConstant(S-><a class="code" href="classllvm_1_1SCEV.html#a9a16f1241255a605fc8debc1e26eaa4c">getType</a>(), 1));
+<a name="l00211"></a>00211     <span class="keywordflow">if</span> (IsSigned && !SE->isKnownNonNegative(LessOne))
+<a name="l00212"></a>00212       <span class="keywordflow">return</span>;
+<a name="l00213"></a>00213 
+<a name="l00214"></a>00214     <span class="keywordflow">if</span> (!SE->isKnownPredicate(IsSigned ?
+<a name="l00215"></a>00215                               <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05a15ae464950ac676919c2f0c7aafc706c" title="signed less than">ICmpInst::ICMP_SLT</a> : ICmpInst::ICMP_ULT,
+<a name="l00216"></a>00216                               LessOne, X))
+<a name="l00217"></a>00217       <span class="keywordflow">return</span>;
+<a name="l00218"></a>00218 
+<a name="l00219"></a>00219     <a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a> *ICmp = <span class="keyword">new</span> <a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a>(Rem, <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05aa719225e2de4059f93fd3209e1f48218" title="equal">ICmpInst::ICMP_EQ</a>,
+<a name="l00220"></a>00220                                   Rem-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0), Rem-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(1));
+<a name="l00221"></a>00221     <a class="code" href="classllvm_1_1SelectInst.html">SelectInst</a> *Sel =
+<a name="l00222"></a>00222       <a class="code" href="classllvm_1_1SelectInst.html#a8bce457e977f23507c48c9dfd7052990">SelectInst::Create</a>(ICmp,
+<a name="l00223"></a>00223                          <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(Rem-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), 0),
+<a name="l00224"></a>00224                          Rem-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0), <span class="stringliteral">"tmp"</span>, Rem);
+<a name="l00225"></a>00225     Rem-><a class="code" href="classllvm_1_1Value.html#a3ab5fc45117b450e8bb04e564cb6e5f2">replaceAllUsesWith</a>(Sel);
+<a name="l00226"></a>00226   }
+<a name="l00227"></a>00227 
+<a name="l00228"></a>00228   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"INDVARS: Simplified rem: "</span> << *Rem << <span class="charliteral">'\n'</span>);
+<a name="l00229"></a>00229   ++NumElimRem;
+<a name="l00230"></a>00230   Changed = <span class="keyword">true</span>;
+<a name="l00231"></a>00231   DeadInsts.push_back(Rem);
+<a name="l00232"></a>00232 }
+<a name="l00233"></a>00233 <span class="comment"></span>
+<a name="l00234"></a>00234 <span class="comment">/// eliminateIVUser - Eliminate an operation that consumes a simple IV and has</span>
+<a name="l00235"></a>00235 <span class="comment">/// no observable side-effect given the range of IV values.</span>
+<a name="l00236"></a>00236 <span class="comment">/// IVOperand is guaranteed SCEVable, but UseInst may not be.</span>
+<a name="l00237"></a>00237 <span class="comment"></span><span class="keywordtype">bool</span> SimplifyIndvar::eliminateIVUser(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *UseInst,
+<a name="l00238"></a>00238                                      <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *IVOperand) {
+<a name="l00239"></a>00239   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a> *ICmp = dyn_cast<ICmpInst>(UseInst)) {
+<a name="l00240"></a>00240     eliminateIVComparison(ICmp, IVOperand);
+<a name="l00241"></a>00241     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00242"></a>00242   }
+<a name="l00243"></a>00243   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1BinaryOperator.html">BinaryOperator</a> *Rem = dyn_cast<BinaryOperator>(UseInst)) {
+<a name="l00244"></a>00244     <span class="keywordtype">bool</span> IsSigned = Rem-><a class="code" href="classllvm_1_1BinaryOperator.html#a88505baf41407782678a5df1702d2d31" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>() == Instruction::SRem;
+<a name="l00245"></a>00245     <span class="keywordflow">if</span> (IsSigned || Rem-><a class="code" href="classllvm_1_1BinaryOperator.html#a88505baf41407782678a5df1702d2d31" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>() == Instruction::URem) {
+<a name="l00246"></a>00246       eliminateIVRemainder(Rem, IVOperand, IsSigned);
+<a name="l00247"></a>00247       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00248"></a>00248     }
+<a name="l00249"></a>00249   }
+<a name="l00250"></a>00250 
+<a name="l00251"></a>00251   <span class="comment">// Eliminate any operation that SCEV can prove is an identity function.</span>
+<a name="l00252"></a>00252   <span class="keywordflow">if</span> (!SE->isSCEVable(UseInst-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()) ||
+<a name="l00253"></a>00253       (UseInst-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>() != IVOperand-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()) ||
+<a name="l00254"></a>00254       (SE->getSCEV(UseInst) != SE->getSCEV(IVOperand)))
+<a name="l00255"></a>00255     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00256"></a>00256 
+<a name="l00257"></a>00257   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"INDVARS: Eliminated identity: "</span> << *UseInst << <span class="charliteral">'\n'</span>);
+<a name="l00258"></a>00258 
+<a name="l00259"></a>00259   UseInst-><a class="code" href="classllvm_1_1Value.html#a3ab5fc45117b450e8bb04e564cb6e5f2">replaceAllUsesWith</a>(IVOperand);
+<a name="l00260"></a>00260   ++NumElimIdentity;
+<a name="l00261"></a>00261   Changed = <span class="keyword">true</span>;
+<a name="l00262"></a>00262   DeadInsts.push_back(UseInst);
+<a name="l00263"></a>00263   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00264"></a>00264 }
+<a name="l00265"></a>00265 <span class="comment"></span>
+<a name="l00266"></a>00266 <span class="comment">/// pushIVUsers - Add all uses of Def to the current IV's worklist.</span>
+<a name="l00267"></a>00267 <span class="comment">///</span>
+<a name="l00268"></a><a class="code" href="SimplifyIndVar_8cpp.html#a644363e986ed6b4712ec081d8330c9d1">00268</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SimplifyIndVar_8cpp.html#a644363e986ed6b4712ec081d8330c9d1">pushIVUsers</a>(
+<a name="l00269"></a>00269   <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5aceb138f68fe183995736614928e3394a">Def</a>,
+<a name="l00270"></a>00270   <a class="code" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet<Instruction*,16></a> &Simplified,
+<a name="l00271"></a>00271   <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a>< std::pair<Instruction*,Instruction*> > &SimpleIVUsers) {
+<a name="l00272"></a>00272 
+<a name="l00273"></a>00273   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1value__use__iterator.html">Value::use_iterator</a> UI = Def-><a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>(), E = Def-><a class="code" href="classllvm_1_1Value.html#ad86469939d2a8bdd4169be9403b89f5a">use_end</a>();
+<a name="l00274"></a>00274        UI != E; ++UI) {
+<a name="l00275"></a>00275     <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *<a class="code" href="classllvm_1_1User.html">User</a> = cast<Instruction>(*UI);
+<a name="l00276"></a>00276 
+<a name="l00277"></a>00277     <span class="comment">// Avoid infinite or exponential worklist processing.</span>
+<a name="l00278"></a>00278     <span class="comment">// Also ensure unique worklist users.</span>
+<a name="l00279"></a>00279     <span class="comment">// If Def is a LoopPhi, it may not be in the Simplified set, so check for</span>
+<a name="l00280"></a>00280     <span class="comment">// self edges first.</span>
+<a name="l00281"></a>00281     <span class="keywordflow">if</span> (User != Def && Simplified.<a class="code" href="classllvm_1_1SmallPtrSet.html#a9b6dd0fc7a648a939e571246045b673e">insert</a>(User))
+<a name="l00282"></a>00282       SimpleIVUsers.push_back(std::make_pair(User, Def));
+<a name="l00283"></a>00283   }
+<a name="l00284"></a>00284 }
+<a name="l00285"></a>00285 <span class="comment"></span>
+<a name="l00286"></a>00286 <span class="comment">/// isSimpleIVUser - Return true if this instruction generates a simple SCEV</span>
+<a name="l00287"></a>00287 <span class="comment">/// expression in terms of that IV.</span>
+<a name="l00288"></a>00288 <span class="comment">///</span>
+<a name="l00289"></a>00289 <span class="comment">/// This is similar to IVUsers' isInteresting() but processes each instruction</span>
+<a name="l00290"></a>00290 <span class="comment">/// non-recursively when the operand is already known to be a simpleIVUser.</span>
+<a name="l00291"></a>00291 <span class="comment">///</span>
+<a name="l00292"></a><a class="code" href="SimplifyIndVar_8cpp.html#a3e219df8a1368668aa0aac77616a4ce9">00292</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SimplifyIndVar_8cpp.html#a3e219df8a1368668aa0aac77616a4ce9">isSimpleIVUser</a>(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Loop.html">Loop</a> *L, <a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a> *SE) {
+<a name="l00293"></a>00293   <span class="keywordflow">if</span> (!SE-><a class="code" href="classllvm_1_1ScalarEvolution.html#ae9623974341419bfd1d185cfdc65bedd">isSCEVable</a>(I-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()))
+<a name="l00294"></a>00294     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00295"></a>00295 
+<a name="l00296"></a>00296   <span class="comment">// Get the symbolic expression for this instruction.</span>
+<a name="l00297"></a>00297   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *S = SE-><a class="code" href="classllvm_1_1ScalarEvolution.html#a30bd18ac905eacf3601bc6a553a9ff49">getSCEV</a>(I);
+<a name="l00298"></a>00298 
+<a name="l00299"></a>00299   <span class="comment">// Only consider affine recurrences.</span>
+<a name="l00300"></a>00300   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEVAddRecExpr.html">SCEVAddRecExpr</a> *AR = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1SCEVAddRecExpr.html">SCEVAddRecExpr</a>>(S);
+<a name="l00301"></a>00301   <span class="keywordflow">if</span> (AR && AR-><a class="code" href="classllvm_1_1SCEVAddRecExpr.html#a7fcbbc51eef313e675a2442bb2053ae9">getLoop</a>() == L)
+<a name="l00302"></a>00302     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00303"></a>00303 
+<a name="l00304"></a>00304   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00305"></a>00305 }
+<a name="l00306"></a>00306 <span class="comment"></span>
+<a name="l00307"></a>00307 <span class="comment">/// simplifyUsers - Iteratively perform simplification on a worklist of users</span>
+<a name="l00308"></a>00308 <span class="comment">/// of the specified induction variable. Each successive simplification may push</span>
+<a name="l00309"></a>00309 <span class="comment">/// more users which may themselves be candidates for simplification.</span>
+<a name="l00310"></a>00310 <span class="comment">///</span>
+<a name="l00311"></a>00311 <span class="comment">/// This algorithm does not require IVUsers analysis. Instead, it simplifies</span>
+<a name="l00312"></a>00312 <span class="comment">/// instructions in-place during analysis. Rather than rewriting induction</span>
+<a name="l00313"></a>00313 <span class="comment">/// variables bottom-up from their users, it transforms a chain of IVUsers</span>
+<a name="l00314"></a>00314 <span class="comment">/// top-down, updating the IR only when it encouters a clear optimization</span>
+<a name="l00315"></a>00315 <span class="comment">/// opportunitiy.</span>
+<a name="l00316"></a>00316 <span class="comment">///</span>
+<a name="l00317"></a>00317 <span class="comment">/// Once DisableIVRewrite is default, LSR will be the only client of IVUsers.</span>
+<a name="l00318"></a>00318 <span class="comment">///</span>
+<a name="l00319"></a>00319 <span class="comment"></span><span class="keywordtype">void</span> SimplifyIndvar::simplifyUsers(<a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *CurrIV, <a class="code" href="classllvm_1_1IVVisitor.html">IVVisitor</a> *V) {
+<a name="l00320"></a>00320   <span class="keywordflow">if</span> (!SE->isSCEVable(CurrIV-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()))
+<a name="l00321"></a>00321     <span class="keywordflow">return</span>;
+<a name="l00322"></a>00322 
+<a name="l00323"></a>00323   <span class="comment">// Instructions processed by SimplifyIndvar for CurrIV.</span>
+<a name="l00324"></a>00324   <a class="code" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet<Instruction*,16></a> Simplified;
+<a name="l00325"></a>00325 
+<a name="l00326"></a>00326   <span class="comment">// Use-def pairs if IV users waiting to be processed for CurrIV.</span>
+<a name="l00327"></a>00327   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<std::pair<Instruction*, Instruction*></a>, 8> SimpleIVUsers;
+<a name="l00328"></a>00328 
+<a name="l00329"></a>00329   <span class="comment">// Push users of the current LoopPhi. In rare cases, pushIVUsers may be</span>
+<a name="l00330"></a>00330   <span class="comment">// called multiple times for the same LoopPhi. This is the proper thing to</span>
+<a name="l00331"></a>00331   <span class="comment">// do for loop header phis that use each other.</span>
+<a name="l00332"></a>00332   <a class="code" href="SimplifyIndVar_8cpp.html#a644363e986ed6b4712ec081d8330c9d1">pushIVUsers</a>(CurrIV, Simplified, SimpleIVUsers);
+<a name="l00333"></a>00333 
+<a name="l00334"></a>00334   <span class="keywordflow">while</span> (!SimpleIVUsers.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>()) {
+<a name="l00335"></a>00335     std::pair<Instruction*, Instruction*> UseOper =
+<a name="l00336"></a>00336       SimpleIVUsers.<a class="code" href="classllvm_1_1SmallVectorImpl.html#a0c8ffe664a36e30d49c84d0aded2fe08">pop_back_val</a>();
+<a name="l00337"></a>00337     <span class="comment">// Bypass back edges to avoid extra work.</span>
+<a name="l00338"></a>00338     <span class="keywordflow">if</span> (UseOper.first == CurrIV) <span class="keywordflow">continue</span>;
+<a name="l00339"></a>00339 
+<a name="l00340"></a>00340     <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *IVOperand = UseOper.second;
+<a name="l00341"></a>00341     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> N = 0; IVOperand; ++<a class="code" href="regcomp_8c.html#a0240ac851181b84ac374872dc5434ee4">N</a>) {
+<a name="l00342"></a>00342       assert(N <= Simplified.<a class="code" href="classllvm_1_1SmallPtrSetImpl.html#a41c201584742f7eb45b2be8cd54e3bcb">size</a>() && <span class="stringliteral">"runaway iteration"</span>);
+<a name="l00343"></a>00343 
+<a name="l00344"></a>00344       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *NewOper = foldIVUser(UseOper.first, IVOperand);
+<a name="l00345"></a>00345       <span class="keywordflow">if</span> (!NewOper)
+<a name="l00346"></a>00346         <span class="keywordflow">break</span>; <span class="comment">// done folding</span>
+<a name="l00347"></a>00347       IVOperand = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1Instruction.html">Instruction</a>>(NewOper);
+<a name="l00348"></a>00348     }
+<a name="l00349"></a>00349     <span class="keywordflow">if</span> (!IVOperand)
+<a name="l00350"></a>00350       <span class="keywordflow">continue</span>;
+<a name="l00351"></a>00351 
+<a name="l00352"></a>00352     <span class="keywordflow">if</span> (eliminateIVUser(UseOper.first, IVOperand)) {
+<a name="l00353"></a>00353       <a class="code" href="SimplifyIndVar_8cpp.html#a644363e986ed6b4712ec081d8330c9d1">pushIVUsers</a>(IVOperand, Simplified, SimpleIVUsers);
+<a name="l00354"></a>00354       <span class="keywordflow">continue</span>;
+<a name="l00355"></a>00355     }
+<a name="l00356"></a>00356     <a class="code" href="classllvm_1_1CastInst.html" title="Base class of casting instructions.">CastInst</a> *Cast = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1CastInst.html" title="Base class of casting instructions.">CastInst</a>>(UseOper.first);
+<a name="l00357"></a>00357     <span class="keywordflow">if</span> (V && Cast) {
+<a name="l00358"></a>00358       V-><a class="code" href="classllvm_1_1IVVisitor.html#a366cbb9ce621c37ddb186c0813e60f22">visitCast</a>(Cast);
+<a name="l00359"></a>00359       <span class="keywordflow">continue</span>;
+<a name="l00360"></a>00360     }
+<a name="l00361"></a>00361     <span class="keywordflow">if</span> (<a class="code" href="SimplifyIndVar_8cpp.html#a3e219df8a1368668aa0aac77616a4ce9">isSimpleIVUser</a>(UseOper.first, L, SE)) {
+<a name="l00362"></a>00362       <a class="code" href="SimplifyIndVar_8cpp.html#a644363e986ed6b4712ec081d8330c9d1">pushIVUsers</a>(UseOper.first, Simplified, SimpleIVUsers);
+<a name="l00363"></a>00363     }
+<a name="l00364"></a>00364   }
+<a name="l00365"></a>00365 }
+<a name="l00366"></a>00366 
+<a name="l00367"></a>00367 <span class="keyword">namespace </span>llvm {
+<a name="l00368"></a>00368 
+<a name="l00369"></a>00369 <span class="keywordtype">void</span> IVVisitor::anchor() { }
+<a name="l00370"></a>00370 <span class="comment"></span>
+<a name="l00371"></a>00371 <span class="comment">/// simplifyUsersOfIV - Simplify instructions that use this induction variable</span>
+<a name="l00372"></a>00372 <span class="comment">/// by using ScalarEvolution to analyze the IV's recurrence.</span>
+<a name="l00373"></a><a class="code" href="namespacellvm.html#adead3a49058bc795978ec97b9c99e1a2">00373</a> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#adead3a49058bc795978ec97b9c99e1a2">simplifyUsersOfIV</a>(<a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *CurrIV, <a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a> *SE, <a class="code" href="classllvm_1_1LPPassManager.html">LPPassManager</a> *LPM,
+<a name="l00374"></a>00374                        <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<WeakVH></a> &<a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa2fee1a7db4e84247a193a9af1f907013">Dead</a>, <a class="code" href="classllvm_1_1IVVisitor.html">IVVisitor</a> *V)
+<a name="l00375"></a>00375 {
+<a name="l00376"></a>00376   <a class="code" href="classllvm_1_1LoopInfo.html">LoopInfo</a> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a> = &LPM-><a class="code" href="classllvm_1_1Pass.html#ab78af013d3a11515403da8517f8f3d4a">getAnalysis</a><<a class="code" href="classllvm_1_1LoopInfo.html">LoopInfo</a>>();
+<a name="l00377"></a>00377   SimplifyIndvar SIV(LI-><a class="code" href="classllvm_1_1LoopInfo.html#a4abca289c73cd09487e05d11d9f7d877">getLoopFor</a>(CurrIV-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>()), SE, LPM, Dead);
+<a name="l00378"></a>00378   SIV.simplifyUsers(CurrIV, V);
+<a name="l00379"></a>00379   <span class="keywordflow">return</span> SIV.hasChanged();
+<a name="l00380"></a>00380 }
+<a name="l00381"></a>00381 <span class="comment"></span>
+<a name="l00382"></a>00382 <span class="comment">/// simplifyLoopIVs - Simplify users of induction variables within this</span>
+<a name="l00383"></a>00383 <span class="comment">/// loop. This does not actually change or add IVs.</span>
+<a name="l00384"></a><a class="code" href="namespacellvm.html#aa7578a2ebd899a0174c82843cdf3c274">00384</a> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#aa7578a2ebd899a0174c82843cdf3c274">simplifyLoopIVs</a>(<a class="code" href="classllvm_1_1Loop.html">Loop</a> *L, <a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a> *SE, <a class="code" href="classllvm_1_1LPPassManager.html">LPPassManager</a> *LPM,
+<a name="l00385"></a>00385                      <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<WeakVH></a> &<a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa2fee1a7db4e84247a193a9af1f907013">Dead</a>) {
+<a name="l00386"></a>00386   <span class="keywordtype">bool</span> Changed = <span class="keyword">false</span>;
+<a name="l00387"></a>00387   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = L-><a class="code" href="classllvm_1_1LoopBase.html#ac4f141a355e5898255f2cbc57c5b54c3">getHeader</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>(); isa<PHINode>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>); ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00388"></a>00388     Changed |= <a class="code" href="namespacellvm.html#adead3a49058bc795978ec97b9c99e1a2">simplifyUsersOfIV</a>(cast<PHINode>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>), SE, LPM, Dead);
+<a name="l00389"></a>00389   }
+<a name="l00390"></a>00390   <span class="keywordflow">return</span> Changed;
+<a name="l00391"></a>00391 }
+<a name="l00392"></a>00392 
+<a name="l00393"></a>00393 } <span class="comment">// namespace llvm</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:37:55 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SimplifyIndVar_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SimplifyIndVar_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SimplifyIndVar_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SimplifyIndVar_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,102 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="SimplifyIndVar.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="llvm/Support/CommandLine.h",height=0.2,width=0.4,color="black",URL="$CommandLine_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node2 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="black",URL="$SmallVector_8h.html"];
+  Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_8h.html"];
+  Node13 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node12 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node12 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node12 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node12 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node12 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="memory",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="black",URL="$Twine_8h.html"];
+  Node20 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="black",URL="$StringRef_8h.html"];
+  Node21 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="limits",height=0.2,width=0.4,color="grey75"];
+  Node21 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node21 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8h.html"];
+  Node24 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="cstdarg",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Support/ValueHandle.h",height=0.2,width=0.4,color="black",URL="$ValueHandle_8h.html"];
+  Node28 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/ADT/DenseMapInfo.h",height=0.2,width=0.4,color="black",URL="$DenseMapInfo_8h.html"];
+  Node29 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/Support/PointerLikeTypeTraits.h",height=0.2,width=0.4,color="black",URL="$PointerLikeTypeTraits_8h.html"];
+  Node30 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/ADT/PointerIntPair.h",height=0.2,width=0.4,color="black",URL="$PointerIntPair_8h.html"];
+  Node31 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/Value.h",height=0.2,width=0.4,color="black",URL="$Value_8h.html"];
+  Node32 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/Use.h",height=0.2,width=0.4,color="black",URL="$Use_8h.html"];
+  Node33 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Support/Casting.h",height=0.2,width=0.4,color="black",URL="$Casting_8h.html"];
+  Node34 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/SimplifyIndVar_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SimplifyIndVar_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SimplifyIndVar_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SimplifyIndVar_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,109 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SimplifyIndVar.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+      <li class="navelem"><a class="el" href="dir_5c61f109262ee79315cb0ac1a5e1be6f.html">Transforms</a>      </li>
+      <li class="navelem"><a class="el" href="dir_281a58b14cc8f76e4a094a720e66e337.html">Utils</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">SimplifyIndVar.h</div>  </div>
+</div>
+<div class="contents">
+<a href="SimplifyIndVar_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- llvm/Transforms/Utils/SimplifyIndVar.h - Indvar Utils ---*- C++ -*-===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This file defines in interface for induction variable simplification. It does</span>
+<a name="l00011"></a>00011 <span class="comment">// not define any actual pass or policy, but provides a single function to</span>
+<a name="l00012"></a>00012 <span class="comment">// simplify a loop's induction variables based on ScalarEvolution.</span>
+<a name="l00013"></a>00013 <span class="comment">//</span>
+<a name="l00014"></a>00014 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00015"></a>00015 
+<a name="l00016"></a>00016 <span class="preprocessor">#ifndef LLVM_TRANSFORMS_UTILS_SIMPLIFYINDVAR_H</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_TRANSFORMS_UTILS_SIMPLIFYINDVAR_H</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="CommandLine_8h.html">llvm/Support/CommandLine.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="ValueHandle_8h.html">llvm/Support/ValueHandle.h</a>"</span>
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>llvm {
+<a name="l00023"></a>00023 
+<a name="l00024"></a>00024 <span class="keyword">class </span>CastInst;
+<a name="l00025"></a>00025 <span class="keyword">class </span>IVUsers;
+<a name="l00026"></a>00026 <span class="keyword">class </span><a class="code" href="namespacellvm_1_1GC.html#a5f606a2b04c809f789a574660cd25213a960eba6a93af558b44d3d14e8393d324" title="Instr is a loop (backwards branch).">Loop</a>;
+<a name="l00027"></a>00027 <span class="keyword">class </span>LPPassManager;
+<a name="l00028"></a>00028 <span class="keyword">class </span>PHINode;
+<a name="l00029"></a>00029 <span class="keyword">class </span>ScalarEvolution;
+<a name="l00030"></a>00030 <span class="comment"></span>
+<a name="l00031"></a>00031 <span class="comment">/// Interface for visiting interesting IV users that are recognized but not</span>
+<a name="l00032"></a>00032 <span class="comment">/// simplified by this utility.</span>
+<a name="l00033"></a><a class="code" href="classllvm_1_1IVVisitor.html">00033</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classllvm_1_1IVVisitor.html">IVVisitor</a> {
+<a name="l00034"></a>00034   <span class="keyword">virtual</span> <span class="keywordtype">void</span> anchor();
+<a name="l00035"></a>00035 <span class="keyword">public</span>:
+<a name="l00036"></a><a class="code" href="classllvm_1_1IVVisitor.html#ab4b6613af725ade77c0426f317c704c1">00036</a>   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1IVVisitor.html#ab4b6613af725ade77c0426f317c704c1">~IVVisitor</a>() {}
+<a name="l00037"></a>00037   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1IVVisitor.html#a366cbb9ce621c37ddb186c0813e60f22">visitCast</a>(<a class="code" href="classllvm_1_1CastInst.html" title="Base class of casting instructions.">CastInst</a> *Cast) = 0;
+<a name="l00038"></a>00038 };
+<a name="l00039"></a>00039 <span class="comment"></span>
+<a name="l00040"></a>00040 <span class="comment">/// simplifyUsersOfIV - Simplify instructions that use this induction variable</span>
+<a name="l00041"></a>00041 <span class="comment">/// by using ScalarEvolution to analyze the IV's recurrence.</span>
+<a name="l00042"></a>00042 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#adead3a49058bc795978ec97b9c99e1a2">simplifyUsersOfIV</a>(PHINode *CurrIV, ScalarEvolution *SE, LPPassManager *LPM,
+<a name="l00043"></a>00043                        SmallVectorImpl<WeakVH> &<a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa2fee1a7db4e84247a193a9af1f907013">Dead</a>, IVVisitor *V = NULL);
+<a name="l00044"></a>00044 <span class="comment"></span>
+<a name="l00045"></a>00045 <span class="comment">/// SimplifyLoopIVs - Simplify users of induction variables within this</span>
+<a name="l00046"></a>00046 <span class="comment">/// loop. This does not actually change or add IVs.</span>
+<a name="l00047"></a>00047 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#aa7578a2ebd899a0174c82843cdf3c274">simplifyLoopIVs</a>(<a class="code" href="namespacellvm_1_1GC.html#a5f606a2b04c809f789a574660cd25213a960eba6a93af558b44d3d14e8393d324" title="Instr is a loop (backwards branch).">Loop</a> *L, ScalarEvolution *SE, LPPassManager *LPM,
+<a name="l00048"></a>00048                      SmallVectorImpl<WeakVH> &<a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa2fee1a7db4e84247a193a9af1f907013">Dead</a>);
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050 } <span class="comment">// namespace llvm</span>
+<a name="l00051"></a>00051 
+<a name="l00052"></a>00052 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:37:55 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SimplifyLibCalls_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SimplifyLibCalls_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SimplifyLibCalls_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SimplifyLibCalls_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+9849807bd45e2766915774dbd4efcca4
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SlotIndexes_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SlotIndexes_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SlotIndexes_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SlotIndexes_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,108 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SlotIndexes.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+      <li class="navelem"><a class="el" href="dir_33f9015af551a3c03ac5a968f2023d57.html">CodeGen</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#typedef-members">Typedefs</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">SlotIndexes.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="MachineInstrBundle_8h_source.html">llvm/CodeGen/MachineInstrBundle.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineFunction_8h_source.html">llvm/CodeGen/MachineFunction.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineFunctionPass_8h_source.html">llvm/CodeGen/MachineFunctionPass.h</a>"</code><br/>
+<code>#include "<a class="el" href="PointerIntPair_8h_source.html">llvm/ADT/PointerIntPair.h</a>"</code><br/>
+<code>#include "<a class="el" href="ilist_8h_source.html">llvm/ADT/ilist.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallVector_8h_source.html">llvm/ADT/SmallVector.h</a>"</code><br/>
+<code>#include "<a class="el" href="DenseMap_8h_source.html">llvm/ADT/DenseMap.h</a>"</code><br/>
+<code>#include "<a class="el" href="Allocator_8h_source.html">llvm/Support/Allocator.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for SlotIndexes.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="SlotIndexes_8h__incl.png" border="0" usemap="#SlotIndexes_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="SlotIndexes_8h__dep__incl.png" border="0" usemap="#SlotIndexes_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="SlotIndexes_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1IndexListEntry.html">llvm::IndexListEntry</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structllvm_1_1ilist__traits_3_01IndexListEntry_01_4.html">llvm::ilist_traits< IndexListEntry ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1SlotIndex.html">llvm::SlotIndex</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> - An opaque wrapper around machine indexes.  <a href="classllvm_1_1SlotIndex.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structllvm_1_1isPodLike_3_01SlotIndex_01_4.html">llvm::isPodLike< SlotIndex ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structllvm_1_1Idx2MBBCompare.html">llvm::Idx2MBBCompare</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1SlotIndexes.html">llvm::SlotIndexes</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structllvm_1_1IntervalMapInfo_3_01SlotIndex_01_4.html">llvm::IntervalMapInfo< SlotIndex ></a></td></tr>
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td colspan="2"><h2><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef std::pair< SlotIndex, <br class="typebreak"/>
+MachineBasicBlock * > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#aba24e536c3251a25af8e222286db0850">llvm::IdxMBBPair</a></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">raw_ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#afb2f5b035ec59f95f3816eafe1ac4b43">llvm::operator<<</a> (raw_ostream &os, SlotIndex li)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#acbebae85c778fdcf1a8b19620084ce18">llvm::operator<</a> (SlotIndex V, const IdxMBBPair &IM)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a7cc26e8345ee22f199c63e4d63846330">llvm::operator<</a> (const IdxMBBPair &IM, SlotIndex V)</td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:40 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SlotIndexes_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SlotIndexes_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SlotIndexes_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SlotIndexes_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+f2a08a92f77fcd9adb0f20362aa23c30
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SmallBitVector_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SmallBitVector_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SmallBitVector_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SmallBitVector_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+44b8999e98affc20417a840db724f147
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SmallPtrSet_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SmallPtrSet_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SmallPtrSet_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SmallPtrSet_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,53 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="SmallPtrSet.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="black",URL="$SmallPtrSet_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/Support/PointerLikeTypeTraits.h",height=0.2,width=0.4,color="black",URL="$PointerLikeTypeTraits_8h.html"];
+  Node9 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/ADT/DenseMapInfo.h",height=0.2,width=0.4,color="black",URL="$DenseMapInfo_8h.html"];
+  Node14 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node15 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="black",URL="$MathExtras_8h.html"];
+  Node17 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/Support/SwapByteOrder.h",height=0.2,width=0.4,color="black",URL="$SwapByteOrder_8h.html"];
+  Node18 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="limits",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/SmallSet_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SmallSet_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SmallSet_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SmallSet_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+2c3f7da4f1eaad42abecfead9dab3e7d
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SmallSet_8h__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SmallSet_8h__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SmallSet_8h__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SmallSet_8h__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+c4081a2d01406e41e881b152be667283
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SmallString_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SmallString_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SmallString_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SmallString_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,78 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SmallString.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+      <li class="navelem"><a class="el" href="dir_5760af5717174facf3d4fa63878994a9.html">ADT</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a>  </div>
+  <div class="headertitle">
+<div class="title">SmallString.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="SmallVector_8h_source.html">llvm/ADT/SmallVector.h</a>"</code><br/>
+<code>#include "<a class="el" href="StringRef_8h_source.html">llvm/ADT/StringRef.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for SmallString.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="SmallString_8h__incl.png" border="0" usemap="#SmallString_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="SmallString_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1SmallString.html">llvm::SmallString< InternalLen ></a></td></tr>
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:41 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SmallVector_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SmallVector_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SmallVector_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SmallVector_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,42 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="SmallVector.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="memory",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Solution_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Solution_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Solution_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Solution_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,19 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="Solution.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="HeuristicSolver.h",height=0.2,width=0.4,color="black",URL="$HeuristicSolver_8h.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="HeuristicBase.h",height=0.2,width=0.4,color="black",URL="$HeuristicBase_8h.html"];
+  Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="Briggs.h",height=0.2,width=0.4,color="black",URL="$Briggs_8h.html"];
+  Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="RegAllocPBQP.cpp",height=0.2,width=0.4,color="black",URL="$RegAllocPBQP_8cpp.html"];
+  Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="RegAllocPBQP.h",height=0.2,width=0.4,color="black",URL="$RegAllocPBQP_8h.html"];
+  Node6 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/SourceMgr_8h__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SourceMgr_8h__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SourceMgr_8h__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SourceMgr_8h__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+f90903248259aebafdaac647e34c0185
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcAsmPrinter_8cpp__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcAsmPrinter_8cpp__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcAsmPrinter_8cpp__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcAsmPrinter_8cpp__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+5aa708c1afb8ec0e58eb88702594b5f0
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcFrameLowering_8cpp__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcFrameLowering_8cpp__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcFrameLowering_8cpp__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcFrameLowering_8cpp__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+0ac711542f8ad3aff0de8451b1c16f8e
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcFrameLowering_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcFrameLowering_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcFrameLowering_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcFrameLowering_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,96 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SparcFrameLowering.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_edce17930487b6f6a46914aab75e7d58.html">Sparc</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">SparcFrameLowering.h</div>  </div>
+</div>
+<div class="contents">
+<a href="SparcFrameLowering_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- SparcFrameLowering.h - Define frame lowering for Sparc --*- C++ -*-===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">//</span>
+<a name="l00011"></a>00011 <span class="comment">//</span>
+<a name="l00012"></a>00012 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00013"></a>00013 
+<a name="l00014"></a>00014 <span class="preprocessor">#ifndef SPARC_FRAMEINFO_H</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#define SPARC_FRAMEINFO_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="Sparc_8h.html">Sparc.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="SparcSubtarget_8h.html">SparcSubtarget.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="TargetFrameLowering_8h.html">llvm/Target/TargetFrameLowering.h</a>"</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>llvm {
+<a name="l00022"></a>00022   <span class="keyword">class </span>SparcSubtarget;
+<a name="l00023"></a>00023 
+<a name="l00024"></a><a class="code" href="classllvm_1_1SparcFrameLowering.html">00024</a> <span class="keyword">class </span><a class="code" href="classllvm_1_1SparcFrameLowering.html">SparcFrameLowering</a> : <span class="keyword">public</span> <a class="code" href="classllvm_1_1TargetFrameLowering.html">TargetFrameLowering</a> {
+<a name="l00025"></a>00025 <span class="keyword">public</span>:
+<a name="l00026"></a><a class="code" href="classllvm_1_1SparcFrameLowering.html#ab73b43f8166e5daefd276eb3320833d2">00026</a>   <span class="keyword">explicit</span> <a class="code" href="classllvm_1_1SparcFrameLowering.html#ab73b43f8166e5daefd276eb3320833d2">SparcFrameLowering</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1SparcSubtarget.html">SparcSubtarget</a> &<span class="comment">/*sti*/</span>)
+<a name="l00027"></a>00027     : <a class="code" href="classllvm_1_1TargetFrameLowering.html">TargetFrameLowering</a>(<a class="code" href="classllvm_1_1TargetFrameLowering.html">TargetFrameLowering</a>::<a class="code" href="classllvm_1_1TargetFrameLowering.html#a453c74e2daac0745b53f8b31c11fc50cad1fc7c9d0bae5bf76a67d2d26ce99c1a">StackGrowsDown</a>, 8, 0) {
+<a name="l00028"></a>00028   }
+<a name="l00029"></a>00029 <span class="comment"></span>
+<a name="l00030"></a>00030 <span class="comment">  /// emitProlog/emitEpilog - These methods insert prolog and epilog code into</span>
+<a name="l00031"></a>00031 <span class="comment">  /// the function.</span>
+<a name="l00032"></a>00032 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1SparcFrameLowering.html#ab683aa4264876a91326df0c62b0495ea">emitPrologue</a>(<a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a> &MF) <span class="keyword">const</span>;
+<a name="l00033"></a>00033   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1SparcFrameLowering.html#a3625cd68d7b3456e35f607b6eb9e28c9">emitEpilogue</a>(<a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a> &MF, <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> &MBB) <span class="keyword">const</span>;
+<a name="l00034"></a>00034 
+<a name="l00035"></a><a class="code" href="classllvm_1_1SparcFrameLowering.html#abc026d52c6ae080bff69c891069c7812">00035</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1SparcFrameLowering.html#abc026d52c6ae080bff69c891069c7812">hasFP</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a> &MF)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }
+<a name="l00036"></a>00036 };
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038 } <span class="comment">// End llvm namespace</span>
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:38:18 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcInstrInfo_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcInstrInfo_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcInstrInfo_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcInstrInfo_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,114 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SparcInstrInfo.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_edce17930487b6f6a46914aab75e7d58.html">Sparc</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#define-members">Defines</a> |
+<a href="#enum-members">Enumerations</a>  </div>
+  <div class="headertitle">
+<div class="title">SparcInstrInfo.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="SparcRegisterInfo_8h_source.html">SparcRegisterInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetInstrInfo_8h_source.html">llvm/Target/TargetInstrInfo.h</a>"</code><br/>
+<code>#include "SparcGenInstrInfo.inc"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for SparcInstrInfo.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="SparcInstrInfo_8h__incl.png" border="0" usemap="#SparcInstrInfo_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="SparcInstrInfo_8h__dep__incl.png" border="0" usemap="#SparcInstrInfo_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="SparcInstrInfo_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1SparcInstrInfo.html">llvm::SparcInstrInfo</a></td></tr>
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1SPII.html">llvm::SPII</a></td></tr>
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SparcInstrInfo_8h.html#ab12de263eb2ee622714701bc1946fad6">GET_INSTRINFO_HEADER</a></td></tr>
+<tr><td colspan="2"><h2><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="namespacellvm_1_1SPII.html#add994c36633ba2d8f6a1366b775e88a6a17a19cadefc233162854b3d0e5a45705">llvm::SPII::Pseudo</a> =  (1<<0), 
+<a class="el" href="namespacellvm_1_1SPII.html#add994c36633ba2d8f6a1366b775e88a6a5069619ca8fdce305534f3fe85091a0f">llvm::SPII::Load</a> =  (1<<1), 
+<a class="el" href="namespacellvm_1_1SPII.html#add994c36633ba2d8f6a1366b775e88a6a36b3dd3b84fde3f8494a9b18af131856">llvm::SPII::Store</a> =  (1<<2), 
+<a class="el" href="namespacellvm_1_1SPII.html#add994c36633ba2d8f6a1366b775e88a6a7441cc88673535510c39412b68c7618b">llvm::SPII::DelaySlot</a> =  (1<<3)
+ }</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ab12de263eb2ee622714701bc1946fad6"></a><!-- doxytag: member="SparcInstrInfo.h::GET_INSTRINFO_HEADER" ref="ab12de263eb2ee622714701bc1946fad6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GET_INSTRINFO_HEADER</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SparcInstrInfo_8h_source.html#l00020">20</a> of file <a class="el" href="SparcInstrInfo_8h_source.html">SparcInstrInfo.h</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:41 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcInstrInfo_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcInstrInfo_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcInstrInfo_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcInstrInfo_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+fe429cb431a93e3e61e9e68cb935e4b6
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcMCAsmInfo_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcMCAsmInfo_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcMCAsmInfo_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcMCAsmInfo_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,66 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SparcMCAsmInfo.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_edce17930487b6f6a46914aab75e7d58.html">Sparc</a>      </li>
+      <li class="navelem"><a class="el" href="dir_0ab3e721b4862084a2819cf1ac46b201.html">MCTargetDesc</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">SparcMCAsmInfo.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="SparcMCAsmInfo_8h_source.html">SparcMCAsmInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="Triple_8h_source.html">llvm/ADT/Triple.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for SparcMCAsmInfo.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="SparcMCAsmInfo_8cpp__incl.png" border="0" usemap="#SparcMCAsmInfo_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="SparcMCAsmInfo_8cpp_source.html">Go to the source code of this file.</a></p>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:43 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcMCAsmInfo_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcMCAsmInfo_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcMCAsmInfo_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcMCAsmInfo_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,100 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SparcMCAsmInfo.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_edce17930487b6f6a46914aab75e7d58.html">Sparc</a>      </li>
+      <li class="navelem"><a class="el" href="dir_0ab3e721b4862084a2819cf1ac46b201.html">MCTargetDesc</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">SparcMCAsmInfo.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="SparcMCAsmInfo_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- SparcMCAsmInfo.cpp - Sparc asm properties -------------------------===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This file contains the declarations of the SparcMCAsmInfo properties.</span>
+<a name="l00011"></a>00011 <span class="comment">//</span>
+<a name="l00012"></a>00012 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00013"></a>00013 
+<a name="l00014"></a>00014 <span class="preprocessor">#include "<a class="code" href="SparcMCAsmInfo_8h.html">SparcMCAsmInfo.h</a>"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="Triple_8h.html">llvm/ADT/Triple.h</a>"</span>
+<a name="l00016"></a>00016 
+<a name="l00017"></a>00017 <span class="keyword">using namespace </span>llvm;
+<a name="l00018"></a>00018 
+<a name="l00019"></a>00019 <span class="keywordtype">void</span> SparcELFMCAsmInfo::anchor() { }
+<a name="l00020"></a>00020 
+<a name="l00021"></a><a class="code" href="classllvm_1_1SparcELFMCAsmInfo.html#a5f357236e430f20519566fce2489e010">00021</a> <a class="code" href="classllvm_1_1SparcELFMCAsmInfo.html#a5f357236e430f20519566fce2489e010">SparcELFMCAsmInfo::SparcELFMCAsmInfo</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Target.html">Target</a> &T, <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> TT) {
+<a name="l00022"></a>00022   <a class="code" href="classllvm_1_1MCAsmInfo.html#adfd724f11ba125f30c3bb516be0bb06f">IsLittleEndian</a> = <span class="keyword">false</span>;
+<a name="l00023"></a>00023   <a class="code" href="classllvm_1_1Triple.html">Triple</a> TheTriple(TT);
+<a name="l00024"></a>00024   <span class="keywordflow">if</span> (TheTriple.<a class="code" href="classllvm_1_1Triple.html#a97f56ec2cf93b5b4d1db9befd8d3d535" title="getArch - Get the parsed architecture type of this triple.">getArch</a>() == <a class="code" href="classllvm_1_1Triple.html#a547abd13f7a3c063aa72c8192a868154a34e8fe940082d534b3957f06616c8227">Triple::sparcv9</a>)
+<a name="l00025"></a>00025     <a class="code" href="classllvm_1_1MCAsmInfo.html#a78ea65d8ecc8eba667d3770385ae403a">PointerSize</a> = 8;
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027   <a class="code" href="classllvm_1_1MCAsmInfo.html#a035c98c0423e6dd21ec2ea039f762440">Data16bitsDirective</a> = <span class="stringliteral">"\t.half\t"</span>;
+<a name="l00028"></a>00028   <a class="code" href="classllvm_1_1MCAsmInfo.html#a620b2ebe9e68a34106b7bdcc4220c6b2">Data32bitsDirective</a> = <span class="stringliteral">"\t.word\t"</span>;
+<a name="l00029"></a>00029   <a class="code" href="classllvm_1_1MCAsmInfo.html#a3c136967a2fc9489724bcd8706a16fed">Data64bitsDirective</a> = 0;  <span class="comment">// .xword is only supported by V9.</span>
+<a name="l00030"></a>00030   <a class="code" href="classllvm_1_1MCAsmInfo.html#acf84c6bd03a785a251784cad666d9ee1">ZeroDirective</a> = <span class="stringliteral">"\t.skip\t"</span>;
+<a name="l00031"></a>00031   <a class="code" href="classllvm_1_1MCAsmInfo.html#a0f9dfd5867a9130d05cd9f560a7ba68f">CommentString</a> = <span class="stringliteral">"!"</span>;
+<a name="l00032"></a>00032   <a class="code" href="classllvm_1_1MCAsmInfo.html#ad6b5cda1c5af378696e1b13b351b2aad" title="HasLEB128 - True if target asm supports leb128 directives.">HasLEB128</a> = <span class="keyword">true</span>;
+<a name="l00033"></a>00033   <a class="code" href="classllvm_1_1MCAsmInfo.html#a98f40236cfff7278d4b57633fad2245d">SupportsDebugInformation</a> = <span class="keyword">true</span>;
+<a name="l00034"></a>00034   
+<a name="l00035"></a>00035   <a class="code" href="classllvm_1_1MCAsmInfo.html#a85a783f63be57e7903e54bd293a52479">SunStyleELFSectionSwitchSyntax</a> = <span class="keyword">true</span>;
+<a name="l00036"></a>00036   <a class="code" href="classllvm_1_1MCAsmInfo.html#a9209a7aeb154de066a5f7ed6087892cc">UsesELFSectionDirectiveForBSS</a> = <span class="keyword">true</span>;
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038   <a class="code" href="classllvm_1_1MCAsmInfo.html#a72118878aeadcae71da2d5d179aebb81">WeakRefDirective</a> = <span class="stringliteral">"\t.weak\t"</span>;
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040   <a class="code" href="classllvm_1_1MCAsmInfo.html#abea34ee331e36cc6ee7eb7230432f02e">PrivateGlobalPrefix</a> = <span class="stringliteral">".L"</span>;
+<a name="l00041"></a>00041 }
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043 
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:38:19 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcMCAsmInfo_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcMCAsmInfo_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcMCAsmInfo_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcMCAsmInfo_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+2bff6232b7abb0cce54c6db7b00f576d
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcMCTargetDesc_8cpp__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcMCTargetDesc_8cpp__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcMCTargetDesc_8cpp__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcMCTargetDesc_8cpp__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+871ad15df8776db389e0f7c13b98bc28
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcMachineFunctionInfo_8h__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcMachineFunctionInfo_8h__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcMachineFunctionInfo_8h__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcMachineFunctionInfo_8h__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+f3dde0a3518fc79a243187cb80aea71b
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcRegisterInfo_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcRegisterInfo_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcRegisterInfo_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcRegisterInfo_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,98 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SparcRegisterInfo.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_edce17930487b6f6a46914aab75e7d58.html">Sparc</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Defines</a>  </div>
+  <div class="headertitle">
+<div class="title">SparcRegisterInfo.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="SparcRegisterInfo_8h_source.html">SparcRegisterInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="Sparc_8h_source.html">Sparc.h</a>"</code><br/>
+<code>#include "<a class="el" href="SparcSubtarget_8h_source.html">SparcSubtarget.h</a>"</code><br/>
+<code>#include "<a class="el" href="Type_8h_source.html">llvm/Type.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineInstrBuilder_8h_source.html">llvm/CodeGen/MachineInstrBuilder.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineFunction_8h_source.html">llvm/CodeGen/MachineFunction.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineFrameInfo_8h_source.html">llvm/CodeGen/MachineFrameInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="ErrorHandling_8h_source.html">llvm/Support/ErrorHandling.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetInstrInfo_8h_source.html">llvm/Target/TargetInstrInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="BitVector_8h_source.html">llvm/ADT/BitVector.h</a>"</code><br/>
+<code>#include "<a class="el" href="STLExtras_8h_source.html">llvm/ADT/STLExtras.h</a>"</code><br/>
+<code>#include "SparcGenRegisterInfo.inc"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for SparcRegisterInfo.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="SparcRegisterInfo_8cpp__incl.png" border="0" usemap="#SparcRegisterInfo_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="SparcRegisterInfo_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SparcRegisterInfo_8cpp.html#a13b7359d3501128c4c130fd13756facc">GET_REGINFO_TARGET_DESC</a></td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a13b7359d3501128c4c130fd13756facc"></a><!-- doxytag: member="SparcRegisterInfo.cpp::GET_REGINFO_TARGET_DESC" ref="a13b7359d3501128c4c130fd13756facc" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GET_REGINFO_TARGET_DESC</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SparcRegisterInfo_8cpp_source.html#l00026">26</a> of file <a class="el" href="SparcRegisterInfo_8cpp_source.html">SparcRegisterInfo.cpp</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:46 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcRegisterInfo_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcRegisterInfo_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcRegisterInfo_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcRegisterInfo_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,104 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SparcRegisterInfo.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_edce17930487b6f6a46914aab75e7d58.html">Sparc</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#define-members">Defines</a>  </div>
+  <div class="headertitle">
+<div class="title">SparcRegisterInfo.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="TargetRegisterInfo_8h_source.html">llvm/Target/TargetRegisterInfo.h</a>"</code><br/>
+<code>#include "SparcGenRegisterInfo.inc"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for SparcRegisterInfo.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="SparcRegisterInfo_8h__incl.png" border="0" usemap="#SparcRegisterInfo_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="SparcRegisterInfo_8h__dep__incl.png" border="0" usemap="#SparcRegisterInfo_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="SparcRegisterInfo_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structllvm_1_1SparcRegisterInfo.html">llvm::SparcRegisterInfo</a></td></tr>
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SparcRegisterInfo_8h.html#aedf089544bf9a9a8ce4dd3bff13bcca2">GET_REGINFO_HEADER</a></td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="aedf089544bf9a9a8ce4dd3bff13bcca2"></a><!-- doxytag: member="SparcRegisterInfo.h::GET_REGINFO_HEADER" ref="aedf089544bf9a9a8ce4dd3bff13bcca2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GET_REGINFO_HEADER</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SparcRegisterInfo_8h_source.html#l00019">19</a> of file <a class="el" href="SparcRegisterInfo_8h_source.html">SparcRegisterInfo.h</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:46 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcRegisterInfo_8h__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcRegisterInfo_8h__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcRegisterInfo_8h__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcRegisterInfo_8h__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+a99542f06e673b7870bd181e7003f43f
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcSelectionDAGInfo_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcSelectionDAGInfo_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcSelectionDAGInfo_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcSelectionDAGInfo_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+a88e10e0ddc64cc21b05fc2edc869134
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcSubtarget_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcSubtarget_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcSubtarget_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcSubtarget_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,102 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SparcSubtarget.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_edce17930487b6f6a46914aab75e7d58.html">Sparc</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">SparcSubtarget.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="SparcSubtarget_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- SparcSubtarget.cpp - SPARC Subtarget Information ------------------===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This file implements the SPARC specific subclass of TargetSubtargetInfo.</span>
+<a name="l00011"></a>00011 <span class="comment">//</span>
+<a name="l00012"></a>00012 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00013"></a>00013 
+<a name="l00014"></a>00014 <span class="preprocessor">#include "<a class="code" href="SparcSubtarget_8h.html">SparcSubtarget.h</a>"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="Sparc_8h.html">Sparc.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="TargetRegistry_8h.html">llvm/Support/TargetRegistry.h</a>"</span>
+<a name="l00017"></a>00017 
+<a name="l00018"></a><a class="code" href="SparcSubtarget_8cpp.html#a9edcf2eb5fb8161f71f0b6540ad9cf95">00018</a> <span class="preprocessor">#define GET_SUBTARGETINFO_TARGET_DESC</span>
+<a name="l00019"></a><a class="code" href="SparcSubtarget_8cpp.html#aa7e319f7bba8b140ee2d876cc3f8308b">00019</a> <span class="preprocessor"></span><span class="preprocessor">#define GET_SUBTARGETINFO_CTOR</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#include "SparcGenSubtargetInfo.inc"</span>
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 <span class="keyword">using namespace </span>llvm;
+<a name="l00023"></a>00023 
+<a name="l00024"></a>00024 <span class="keywordtype">void</span> SparcSubtarget::anchor() { }
+<a name="l00025"></a>00025 
+<a name="l00026"></a><a class="code" href="classllvm_1_1SparcSubtarget.html#a91716089cc7ccc99807c61ff51ebbc3f">00026</a> <a class="code" href="classllvm_1_1SparcSubtarget.html#a91716089cc7ccc99807c61ff51ebbc3f">SparcSubtarget::SparcSubtarget</a>(<span class="keyword">const</span> std::string &TT, <span class="keyword">const</span> std::string &CPU,
+<a name="l00027"></a>00027                                <span class="keyword">const</span> std::string &<a class="code" href="namespacellvm_1_1X86II.html#acd283bc8136a594505ec483f4a1cc933a50aa2061845b3ff4e6e2242d762c6a80">FS</a>,  <span class="keywordtype">bool</span> is64Bit) :
+<a name="l00028"></a>00028   <a class="code" href="classSparcGenSubtargetInfo.html">SparcGenSubtargetInfo</a>(TT, CPU, FS),
+<a name="l00029"></a>00029   IsV9(<a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>),
+<a name="l00030"></a>00030   V8DeprecatedInsts(<a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>),
+<a name="l00031"></a>00031   IsVIS(<a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>),
+<a name="l00032"></a>00032   Is64Bit(is64Bit) {
+<a name="l00033"></a>00033   
+<a name="l00034"></a>00034   <span class="comment">// Determine default and user specified characteristics</span>
+<a name="l00035"></a>00035   std::string CPUName = CPU;
+<a name="l00036"></a>00036   <span class="keywordflow">if</span> (CPUName.empty()) {
+<a name="l00037"></a>00037     <span class="keywordflow">if</span> (is64Bit)
+<a name="l00038"></a>00038       CPUName = <span class="stringliteral">"v9"</span>;
+<a name="l00039"></a>00039     <span class="keywordflow">else</span>
+<a name="l00040"></a>00040       CPUName = <span class="stringliteral">"v8"</span>;
+<a name="l00041"></a>00041   }
+<a name="l00042"></a>00042   IsV9 = CPUName == <span class="stringliteral">"v9"</span>;
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044   <span class="comment">// Parse features string.</span>
+<a name="l00045"></a>00045   <a class="code" href="classllvm_1_1SparcSubtarget.html#a1c42095a0b901e7834dbe8add1d85c99">ParseSubtargetFeatures</a>(CPUName, FS);
+<a name="l00046"></a>00046 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:38:19 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcSubtarget_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcSubtarget_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcSubtarget_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcSubtarget_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,32 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="SparcSubtarget.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="FPMover.cpp",height=0.2,width=0.4,color="black",URL="$FPMover_8cpp.html"];
+  Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="SparcFrameLowering.h",height=0.2,width=0.4,color="black",URL="$SparcFrameLowering_8h.html"];
+  Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="SparcTargetMachine.h",height=0.2,width=0.4,color="black",URL="$SparcTargetMachine_8h.html"];
+  Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="SparcAsmPrinter.cpp",height=0.2,width=0.4,color="black",URL="$SparcAsmPrinter_8cpp.html"];
+  Node4 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="SparcISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$SparcISelDAGToDAG_8cpp.html"];
+  Node4 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="SparcISelLowering.cpp",height=0.2,width=0.4,color="black",URL="$SparcISelLowering_8cpp.html"];
+  Node4 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="SparcSelectionDAGInfo.cpp",height=0.2,width=0.4,color="black",URL="$SparcSelectionDAGInfo_8cpp.html"];
+  Node4 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="SparcTargetMachine.cpp",height=0.2,width=0.4,color="black",URL="$SparcTargetMachine_8cpp.html"];
+  Node3 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="SparcFrameLowering.cpp",height=0.2,width=0.4,color="black",URL="$SparcFrameLowering_8cpp.html"];
+  Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="SparcInstrInfo.cpp",height=0.2,width=0.4,color="black",URL="$SparcInstrInfo_8cpp.html"];
+  Node1 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="SparcRegisterInfo.cpp",height=0.2,width=0.4,color="black",URL="$SparcRegisterInfo_8cpp.html"];
+  Node1 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="SparcSubtarget.cpp",height=0.2,width=0.4,color="black",URL="$SparcSubtarget_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcTargetInfo_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcTargetInfo_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcTargetInfo_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcTargetInfo_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,78 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SparcTargetInfo.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_edce17930487b6f6a46914aab75e7d58.html">Sparc</a>      </li>
+      <li class="navelem"><a class="el" href="dir_acadb2f64cc784eb9a6930a5ba53c0d2.html">TargetInfo</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">SparcTargetInfo.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="SparcTargetInfo_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- SparcTargetInfo.cpp - Sparc Target Implementation -----------------===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 
+<a name="l00010"></a>00010 <span class="preprocessor">#include "<a class="code" href="Sparc_8h.html">Sparc.h</a>"</span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include "<a class="code" href="Module_8h.html">llvm/Module.h</a>"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include "<a class="code" href="TargetRegistry_8h.html">llvm/Support/TargetRegistry.h</a>"</span>
+<a name="l00013"></a>00013 <span class="keyword">using namespace </span>llvm;
+<a name="l00014"></a>00014 
+<a name="l00015"></a><a class="code" href="namespacellvm.html#a6cacd263b2a3c7c00428c5d183c26822">00015</a> <a class="code" href="classllvm_1_1Target.html">Target</a> <a class="code" href="namespacellvm.html#a6cacd263b2a3c7c00428c5d183c26822">llvm::TheSparcTarget</a>;
+<a name="l00016"></a><a class="code" href="namespacellvm.html#afb75415735cb485bf02c9c087a58bffd">00016</a> <a class="code" href="classllvm_1_1Target.html">Target</a> <a class="code" href="namespacellvm.html#afb75415735cb485bf02c9c087a58bffd">llvm::TheSparcV9Target</a>;
+<a name="l00017"></a>00017 
+<a name="l00018"></a><a class="code" href="SparcTargetInfo_8cpp.html#aee20887ee3016027cea70150669551fe">00018</a> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> <span class="keywordtype">void</span> <a class="code" href="SparcTargetInfo_8cpp.html#aee20887ee3016027cea70150669551fe">LLVMInitializeSparcTargetInfo</a>() { 
+<a name="l00019"></a>00019   <a class="code" href="structllvm_1_1RegisterTarget.html">RegisterTarget<Triple::sparc></a> <a class="code" href="namespacellvm.html#a6569d00d31a5d74e563e2f39f82271ab">X</a>(<a class="code" href="namespacellvm.html#a6cacd263b2a3c7c00428c5d183c26822">TheSparcTarget</a>, <span class="stringliteral">"sparc"</span>, <span class="stringliteral">"Sparc"</span>);
+<a name="l00020"></a>00020   <a class="code" href="structllvm_1_1RegisterTarget.html">RegisterTarget<Triple::sparcv9></a> <a class="code" href="OcamlGCPrinter_8cpp.html#a1bdbcdc4205781eefd549946d40ff378">Y</a>(<a class="code" href="namespacellvm.html#afb75415735cb485bf02c9c087a58bffd">TheSparcV9Target</a>, <span class="stringliteral">"sparcv9"</span>, <span class="stringliteral">"Sparc V9"</span>);
+<a name="l00021"></a>00021 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:38:19 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SparcTargetMachine_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparcTargetMachine_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparcTargetMachine_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparcTargetMachine_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,96 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SparcTargetMachine.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_edce17930487b6f6a46914aab75e7d58.html">Sparc</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">SparcTargetMachine.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="SparcTargetMachine_8h_source.html">SparcTargetMachine.h</a>"</code><br/>
+<code>#include "<a class="el" href="Sparc_8h_source.html">Sparc.h</a>"</code><br/>
+<code>#include "<a class="el" href="PassManager_8h_source.html">llvm/PassManager.h</a>"</code><br/>
+<code>#include "<a class="el" href="CodeGen_2Passes_8h_source.html">llvm/CodeGen/Passes.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetRegistry_8h_source.html">llvm/Support/TargetRegistry.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for SparcTargetMachine.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="SparcTargetMachine_8cpp__incl.png" border="0" usemap="#SparcTargetMachine_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="SparcTargetMachine_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="SparcTargetMachine_8cpp.html#a4490eb8eb92c3b12491b8247cb4bd71a">LLVMInitializeSparcTarget</a> ()</td></tr>
+</table>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a4490eb8eb92c3b12491b8247cb4bd71a"></a><!-- doxytag: member="SparcTargetMachine.cpp::LLVMInitializeSparcTarget" ref="a4490eb8eb92c3b12491b8247cb4bd71a" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void LLVMInitializeSparcTarget </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="SparcTargetMachine_8cpp_source.html#l00020">20</a> of file <a class="el" href="SparcTargetMachine_8cpp_source.html">SparcTargetMachine.cpp</a>.</p>
+
+<p>References <a class="el" href="SparcTargetInfo_8cpp_source.html#l00015">llvm::TheSparcTarget</a>, <a class="el" href="SparcTargetInfo_8cpp_source.html#l00016">llvm::TheSparcV9Target</a>, <a class="el" href="namespacellvm.html#a6569d00d31a5d74e563e2f39f82271ab">llvm::X</a>, and <a class="el" href="OcamlGCPrinter_8cpp.html#a1bdbcdc4205781eefd549946d40ff378">Y</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:46 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/Sparc_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Sparc_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Sparc_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Sparc_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+b667fe6fdd3294baa6e7a489658b0e8f
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/Sparc_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Sparc_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Sparc_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Sparc_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,164 @@
+<!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="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: Sparc.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <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><a href="dirs.html"><span>Directories</span></a></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>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_edce17930487b6f6a46914aab75e7d58.html">Sparc</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Sparc.h</div>  </div>
+</div>
+<div class="contents">
+<a href="Sparc_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- Sparc.h - Top-level interface for Sparc representation --*- C++ -*-===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This file contains the entry points for global functions defined in the LLVM</span>
+<a name="l00011"></a>00011 <span class="comment">// Sparc back-end.</span>
+<a name="l00012"></a>00012 <span class="comment">//</span>
+<a name="l00013"></a>00013 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00014"></a>00014 
+<a name="l00015"></a>00015 <span class="preprocessor">#ifndef TARGET_SPARC_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define TARGET_SPARC_H</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="SparcMCTargetDesc_8h.html">MCTargetDesc/SparcMCTargetDesc.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="ErrorHandling_8h.html">llvm/Support/ErrorHandling.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="Target_2TargetMachine_8h.html">llvm/Target/TargetMachine.h</a>"</span>
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>llvm {
+<a name="l00023"></a>00023   <span class="keyword">class </span>FunctionPass;
+<a name="l00024"></a>00024   <span class="keyword">class </span>SparcTargetMachine;
+<a name="l00025"></a>00025   <span class="keyword">class </span>formatted_raw_ostream;
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027   FunctionPass *<a class="code" href="namespacellvm.html#aa5307e81182b1d6f30622de0ffb316f4">createSparcISelDag</a>(SparcTargetMachine &TM);
+<a name="l00028"></a>00028   FunctionPass *<a class="code" href="namespacellvm.html#a5df1ae106d5cd9dc4f4f1fa4d6998c09">createSparcDelaySlotFillerPass</a>(TargetMachine &TM);
+<a name="l00029"></a>00029   FunctionPass *<a class="code" href="namespacellvm.html#a5871abda67c75575fee05595fab961f2">createSparcFPMoverPass</a>(TargetMachine &TM);
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031 } <span class="comment">// end namespace llvm;</span>
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033 <span class="keyword">namespace </span>llvm {
+<a name="l00034"></a>00034   <span class="comment">// Enums corresponding to Sparc condition codes, both icc's and fcc's.  These</span>
+<a name="l00035"></a>00035   <span class="comment">// values must be kept in sync with the ones in the .td file.</span>
+<a name="l00036"></a><a class="code" href="namespacellvm_1_1SPCC.html">00036</a>   <span class="keyword">namespace </span>SPCC {
+<a name="l00037"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9">00037</a>     <span class="keyword">enum</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9">CondCodes</a> {
+<a name="l00038"></a>00038       <span class="comment">//ICC_A   =  8   ,  // Always</span>
+<a name="l00039"></a>00039       <span class="comment">//ICC_N   =  0   ,  // Never</span>
+<a name="l00040"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ab9a7855b45288146df6d3ab3e321c43b">00040</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ab9a7855b45288146df6d3ab3e321c43b">ICC_NE</a>  =  9   ,  <span class="comment">// Not Equal</span>
+<a name="l00041"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ac1dc27bfc24df99cd29246ec54419659">00041</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ac1dc27bfc24df99cd29246ec54419659">ICC_E</a>   =  1   ,  <span class="comment">// Equal</span>
+<a name="l00042"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a2e9b359e236c3f89d1cd1646419a0438">00042</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a2e9b359e236c3f89d1cd1646419a0438">ICC_G</a>   = 10   ,  <span class="comment">// Greater</span>
+<a name="l00043"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a639506be5285099011780c4a03c9b371">00043</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a639506be5285099011780c4a03c9b371">ICC_LE</a>  =  2   ,  <span class="comment">// Less or Equal</span>
+<a name="l00044"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a7b7a8837c5c902680ac8aec565079596">00044</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a7b7a8837c5c902680ac8aec565079596">ICC_GE</a>  = 11   ,  <span class="comment">// Greater or Equal</span>
+<a name="l00045"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a3f6ef8aede46014a36966dc084d81087">00045</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a3f6ef8aede46014a36966dc084d81087">ICC_L</a>   =  3   ,  <span class="comment">// Less</span>
+<a name="l00046"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9aad6b4c4abc1731149339bdcac755ee87">00046</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9aad6b4c4abc1731149339bdcac755ee87">ICC_GU</a>  = 12   ,  <span class="comment">// Greater Unsigned</span>
+<a name="l00047"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a58fd730a813b831ee05050e63d30405c">00047</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a58fd730a813b831ee05050e63d30405c">ICC_LEU</a> =  4   ,  <span class="comment">// Less or Equal Unsigned</span>
+<a name="l00048"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9add11869e4071f1b4587c8f1a7f1f6191">00048</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9add11869e4071f1b4587c8f1a7f1f6191">ICC_CC</a>  = 13   ,  <span class="comment">// Carry Clear/Great or Equal Unsigned</span>
+<a name="l00049"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a52da0658a7ccad50715ed99701281c5f">00049</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a52da0658a7ccad50715ed99701281c5f">ICC_CS</a>  =  5   ,  <span class="comment">// Carry Set/Less Unsigned</span>
+<a name="l00050"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a1c26d5c90286fc0f30cb668a7a644ebc">00050</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a1c26d5c90286fc0f30cb668a7a644ebc">ICC_POS</a> = 14   ,  <span class="comment">// Positive</span>
+<a name="l00051"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9afcf61d074d6039adac588209f5d9d6ad">00051</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9afcf61d074d6039adac588209f5d9d6ad">ICC_NEG</a> =  6   ,  <span class="comment">// Negative</span>
+<a name="l00052"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9adc2b09c7d0c6869a1f05262717986737">00052</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9adc2b09c7d0c6869a1f05262717986737">ICC_VC</a>  = 15   ,  <span class="comment">// Overflow Clear</span>
+<a name="l00053"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a5553287ec99a6227069fca2f37a5b34b">00053</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a5553287ec99a6227069fca2f37a5b34b">ICC_VS</a>  =  7   ,  <span class="comment">// Overflow Set</span>
+<a name="l00054"></a>00054       
+<a name="l00055"></a>00055       <span class="comment">//FCC_A   =  8+16,  // Always</span>
+<a name="l00056"></a>00056       <span class="comment">//FCC_N   =  0+16,  // Never</span>
+<a name="l00057"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a6820b0c58a07365f1341ca30d64bd218">00057</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a6820b0c58a07365f1341ca30d64bd218">FCC_U</a>   =  7+16,  <span class="comment">// Unordered</span>
+<a name="l00058"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9aed8356273fdf3a0487c872cb3d085542">00058</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9aed8356273fdf3a0487c872cb3d085542">FCC_G</a>   =  6+16,  <span class="comment">// Greater</span>
+<a name="l00059"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a2106f4522bd06f6daad2a8e8769a6270">00059</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a2106f4522bd06f6daad2a8e8769a6270">FCC_UG</a>  =  5+16,  <span class="comment">// Unordered or Greater</span>
+<a name="l00060"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a965bae47c4fccd3973ecbf040869ff7f">00060</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a965bae47c4fccd3973ecbf040869ff7f">FCC_L</a>   =  4+16,  <span class="comment">// Less</span>
+<a name="l00061"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9afbb30e35da42c9cac83731fe3709387b">00061</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9afbb30e35da42c9cac83731fe3709387b">FCC_UL</a>  =  3+16,  <span class="comment">// Unordered or Less</span>
+<a name="l00062"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a53356323fdd97606927cec5c20cd6215">00062</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a53356323fdd97606927cec5c20cd6215">FCC_LG</a>  =  2+16,  <span class="comment">// Less or Greater</span>
+<a name="l00063"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a488d679dc60c1f44701c9f0af8aa5d2c">00063</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a488d679dc60c1f44701c9f0af8aa5d2c">FCC_NE</a>  =  1+16,  <span class="comment">// Not Equal</span>
+<a name="l00064"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a80f16f53e18c59ae3681b303cda7a308">00064</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a80f16f53e18c59ae3681b303cda7a308">FCC_E</a>   =  9+16,  <span class="comment">// Equal</span>
+<a name="l00065"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9abaea969a35799493146fdd78c36dfa4c">00065</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9abaea969a35799493146fdd78c36dfa4c">FCC_UE</a>  = 10+16,  <span class="comment">// Unordered or Equal</span>
+<a name="l00066"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ac202b4c5d9c55d73489b315c7e393836">00066</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ac202b4c5d9c55d73489b315c7e393836">FCC_GE</a>  = 11+16,  <span class="comment">// Greater or Equal</span>
+<a name="l00067"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ad38b12aa07c4354222b6b9422bbb90d6">00067</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ad38b12aa07c4354222b6b9422bbb90d6">FCC_UGE</a> = 12+16,  <span class="comment">// Unordered or Greater or Equal</span>
+<a name="l00068"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a607f8b24c191bb766a34c2eb1bfb63c4">00068</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a607f8b24c191bb766a34c2eb1bfb63c4">FCC_LE</a>  = 13+16,  <span class="comment">// Less or Equal</span>
+<a name="l00069"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a0823c4f36acc84808ba44f1f92fe58f2">00069</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a0823c4f36acc84808ba44f1f92fe58f2">FCC_ULE</a> = 14+16,  <span class="comment">// Unordered or Less or Equal</span>
+<a name="l00070"></a><a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ab6d11f42acc70a53b6bf5d36feb0f6e8">00070</a>       <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ab6d11f42acc70a53b6bf5d36feb0f6e8">FCC_O</a>   = 15+16   <span class="comment">// Ordered</span>
+<a name="l00071"></a>00071     };
+<a name="l00072"></a>00072   }
+<a name="l00073"></a>00073   
+<a name="l00074"></a><a class="code" href="namespacellvm.html#aa65c80675ddfc0518d01cfba72613c87">00074</a>   <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="namespacellvm.html#aa65c80675ddfc0518d01cfba72613c87">SPARCCondCodeToString</a>(<a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9">SPCC::CondCodes</a> <a class="code" href="namespacellvm_1_1MBlazeCC.html#aba42d64ed60fd2a2e8045b6d7f26958d">CC</a>) {
+<a name="l00075"></a>00075     <span class="keywordflow">switch</span> (CC) {
+<a name="l00076"></a>00076     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ab9a7855b45288146df6d3ab3e321c43b">SPCC::ICC_NE</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"ne"</span>;
+<a name="l00077"></a>00077     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ac1dc27bfc24df99cd29246ec54419659">SPCC::ICC_E</a>:   <span class="keywordflow">return</span> <span class="stringliteral">"e"</span>;
+<a name="l00078"></a>00078     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a2e9b359e236c3f89d1cd1646419a0438">SPCC::ICC_G</a>:   <span class="keywordflow">return</span> <span class="stringliteral">"g"</span>;
+<a name="l00079"></a>00079     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a639506be5285099011780c4a03c9b371">SPCC::ICC_LE</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"le"</span>;
+<a name="l00080"></a>00080     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a7b7a8837c5c902680ac8aec565079596">SPCC::ICC_GE</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"ge"</span>;
+<a name="l00081"></a>00081     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a3f6ef8aede46014a36966dc084d81087">SPCC::ICC_L</a>:   <span class="keywordflow">return</span> <span class="stringliteral">"l"</span>;
+<a name="l00082"></a>00082     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9aad6b4c4abc1731149339bdcac755ee87">SPCC::ICC_GU</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"gu"</span>;
+<a name="l00083"></a>00083     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a58fd730a813b831ee05050e63d30405c">SPCC::ICC_LEU</a>: <span class="keywordflow">return</span> <span class="stringliteral">"leu"</span>;
+<a name="l00084"></a>00084     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9add11869e4071f1b4587c8f1a7f1f6191">SPCC::ICC_CC</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"cc"</span>;
+<a name="l00085"></a>00085     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a52da0658a7ccad50715ed99701281c5f">SPCC::ICC_CS</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"cs"</span>;
+<a name="l00086"></a>00086     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a1c26d5c90286fc0f30cb668a7a644ebc">SPCC::ICC_POS</a>: <span class="keywordflow">return</span> <span class="stringliteral">"pos"</span>;
+<a name="l00087"></a>00087     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9afcf61d074d6039adac588209f5d9d6ad">SPCC::ICC_NEG</a>: <span class="keywordflow">return</span> <span class="stringliteral">"neg"</span>;
+<a name="l00088"></a>00088     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9adc2b09c7d0c6869a1f05262717986737">SPCC::ICC_VC</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"vc"</span>;
+<a name="l00089"></a>00089     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a5553287ec99a6227069fca2f37a5b34b">SPCC::ICC_VS</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"vs"</span>;
+<a name="l00090"></a>00090     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a6820b0c58a07365f1341ca30d64bd218">SPCC::FCC_U</a>:   <span class="keywordflow">return</span> <span class="stringliteral">"u"</span>;
+<a name="l00091"></a>00091     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9aed8356273fdf3a0487c872cb3d085542">SPCC::FCC_G</a>:   <span class="keywordflow">return</span> <span class="stringliteral">"g"</span>;
+<a name="l00092"></a>00092     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a2106f4522bd06f6daad2a8e8769a6270">SPCC::FCC_UG</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"ug"</span>;
+<a name="l00093"></a>00093     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a965bae47c4fccd3973ecbf040869ff7f">SPCC::FCC_L</a>:   <span class="keywordflow">return</span> <span class="stringliteral">"l"</span>;
+<a name="l00094"></a>00094     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9afbb30e35da42c9cac83731fe3709387b">SPCC::FCC_UL</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"ul"</span>;
+<a name="l00095"></a>00095     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a53356323fdd97606927cec5c20cd6215">SPCC::FCC_LG</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"lg"</span>;
+<a name="l00096"></a>00096     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a488d679dc60c1f44701c9f0af8aa5d2c">SPCC::FCC_NE</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"ne"</span>;
+<a name="l00097"></a>00097     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a80f16f53e18c59ae3681b303cda7a308">SPCC::FCC_E</a>:   <span class="keywordflow">return</span> <span class="stringliteral">"e"</span>;
+<a name="l00098"></a>00098     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9abaea969a35799493146fdd78c36dfa4c">SPCC::FCC_UE</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"ue"</span>;
+<a name="l00099"></a>00099     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ac202b4c5d9c55d73489b315c7e393836">SPCC::FCC_GE</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"ge"</span>;
+<a name="l00100"></a>00100     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ad38b12aa07c4354222b6b9422bbb90d6">SPCC::FCC_UGE</a>: <span class="keywordflow">return</span> <span class="stringliteral">"uge"</span>;
+<a name="l00101"></a>00101     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a607f8b24c191bb766a34c2eb1bfb63c4">SPCC::FCC_LE</a>:  <span class="keywordflow">return</span> <span class="stringliteral">"le"</span>;
+<a name="l00102"></a>00102     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9a0823c4f36acc84808ba44f1f92fe58f2">SPCC::FCC_ULE</a>: <span class="keywordflow">return</span> <span class="stringliteral">"ule"</span>;
+<a name="l00103"></a>00103     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPCC.html#ab817ca090b73e64dc6c2a7dd705edda9ab6d11f42acc70a53b6bf5d36feb0f6e8">SPCC::FCC_O</a>:   <span class="keywordflow">return</span> <span class="stringliteral">"o"</span>;
+<a name="l00104"></a>00104     }
+<a name="l00105"></a>00105     <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Invalid cond code"</span>);
+<a name="l00106"></a>00106   }
+<a name="l00107"></a>00107 }  <span class="comment">// end namespace llvm</span>
+<a name="l00108"></a>00108 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:38:17 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/SparseBitVector_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/SparseBitVector_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/SparseBitVector_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/SparseBitVector_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+e8532f9dc88ccd39f9439c1e9b0c39dd
\ No newline at end of file





More information about the llvm-commits mailing list