[llvm-commits] [www-releases] r170845 [31/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/Target_2TargetMachine_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Target_2TargetMachine_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Target_2TargetMachine_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Target_2TargetMachine_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,394 @@
+<!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: TargetMachine.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_39d7140780b7378a71daf6d7e9dc9204.html">Target</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Target/TargetMachine.h</div>  </div>
+</div>
+<div class="contents">
+<a href="Target_2TargetMachine_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/Target/TargetMachine.h - Target Information --------*- 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 the TargetMachine and LLVMTargetMachine classes.</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 LLVM_TARGET_TARGETMACHINE_H</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_TARGET_TARGETMACHINE_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="Pass_8h.html">llvm/Pass.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="CodeGen_8h.html">llvm/Support/CodeGen.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="TargetOptions_8h.html">llvm/Target/TargetOptions.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="TargetTransformInfo_8h.html">llvm/TargetTransformInfo.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="TargetTransformImpl_8h.html">llvm/Target/TargetTransformImpl.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="StringRef_8h.html">llvm/ADT/StringRef.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <cassert></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <string></span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>llvm {
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="keyword">class </span>InstrItineraryData;
+<a name="l00029"></a>00029 <span class="keyword">class </span>JITCodeEmitter;
+<a name="l00030"></a>00030 <span class="keyword">class </span>GlobalValue;
+<a name="l00031"></a>00031 <span class="keyword">class </span>MCAsmInfo;
+<a name="l00032"></a>00032 <span class="keyword">class </span>MCCodeGenInfo;
+<a name="l00033"></a>00033 <span class="keyword">class </span>MCContext;
+<a name="l00034"></a>00034 <span class="keyword">class </span>PassManagerBase;
+<a name="l00035"></a>00035 <span class="keyword">class </span>Target;
+<a name="l00036"></a>00036 <span class="keyword">class </span>DataLayout;
+<a name="l00037"></a>00037 <span class="keyword">class </span>TargetFrameLowering;
+<a name="l00038"></a>00038 <span class="keyword">class </span>TargetInstrInfo;
+<a name="l00039"></a>00039 <span class="keyword">class </span>TargetIntrinsicInfo;
+<a name="l00040"></a>00040 <span class="keyword">class </span>TargetJITInfo;
+<a name="l00041"></a>00041 <span class="keyword">class </span>TargetLowering;
+<a name="l00042"></a>00042 <span class="keyword">class </span>TargetPassConfig;
+<a name="l00043"></a>00043 <span class="keyword">class </span>TargetRegisterInfo;
+<a name="l00044"></a>00044 <span class="keyword">class </span>TargetSelectionDAGInfo;
+<a name="l00045"></a>00045 <span class="keyword">class </span>TargetSubtargetInfo;
+<a name="l00046"></a>00046 <span class="keyword">class </span>formatted_raw_ostream;
+<a name="l00047"></a>00047 <span class="keyword">class </span>raw_ostream;
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049 <span class="comment">//===----------------------------------------------------------------------===//</span><span class="comment"></span>
+<a name="l00050"></a>00050 <span class="comment">///</span>
+<a name="l00051"></a>00051 <span class="comment">/// TargetMachine - Primary interface to the complete machine description for</span>
+<a name="l00052"></a>00052 <span class="comment">/// the target machine.  All target-specific information should be accessible</span>
+<a name="l00053"></a>00053 <span class="comment">/// through this interface.</span>
+<a name="l00054"></a>00054 <span class="comment">///</span>
+<a name="l00055"></a><a class="code" href="classllvm_1_1TargetMachine.html">00055</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classllvm_1_1TargetMachine.html">TargetMachine</a> {
+<a name="l00056"></a>00056   <a class="code" href="classllvm_1_1TargetMachine.html">TargetMachine</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetMachine.html">TargetMachine</a> &) <a class="code" href="Compiler_8h.html#aacca75352b8e153274310c374564eb01">LLVM_DELETED_FUNCTION</a>;
+<a name="l00057"></a>00057   <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetMachine.html">TargetMachine</a> &) <a class="code" href="Compiler_8h.html#aacca75352b8e153274310c374564eb01">LLVM_DELETED_FUNCTION</a>;
+<a name="l00058"></a>00058 <span class="keyword">protected</span>: <span class="comment">// Can only create subclasses.</span>
+<a name="l00059"></a>00059   <a class="code" href="classllvm_1_1TargetMachine.html">TargetMachine</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> <a class="code" href="classllvm_1_1TargetMachine.html#a7780ad2fefc04ca74293dff8aee49b52">TargetTriple</a>,
+<a name="l00060"></a>00060                 <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> CPU, <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1X86II.html#acd283bc8136a594505ec483f4a1cc933a50aa2061845b3ff4e6e2242d762c6a80">FS</a>, <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetOptions.html">TargetOptions</a> &<a class="code" href="classllvm_1_1TargetMachine.html#ab1fb67187fc37e569cc5171cbebba873">Options</a>);
+<a name="l00061"></a>00061 <span class="comment"></span>
+<a name="l00062"></a>00062 <span class="comment">  /// getSubtargetImpl - virtual method implemented by subclasses that returns</span>
+<a name="l00063"></a>00063 <span class="comment">  /// a reference to that target's TargetSubtargetInfo-derived member variable.</span>
+<a name="l00064"></a><a class="code" href="classllvm_1_1TargetMachine.html#aed6a77031dced466e30cca04f5f82f0a">00064</a> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetSubtargetInfo.html">TargetSubtargetInfo</a> *<a class="code" href="classllvm_1_1TargetMachine.html#aed6a77031dced466e30cca04f5f82f0a">getSubtargetImpl</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }
+<a name="l00065"></a>00065 <span class="comment"></span>
+<a name="l00066"></a>00066 <span class="comment">  /// TheTarget - The Target that this machine was created for.</span>
+<a name="l00067"></a><a class="code" href="classllvm_1_1TargetMachine.html#adde45f08eafa48f29b1b6d9f98a38814">00067</a> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classllvm_1_1Target.html">Target</a> &<a class="code" href="classllvm_1_1TargetMachine.html#adde45f08eafa48f29b1b6d9f98a38814" title="TheTarget - The Target that this machine was created for.">TheTarget</a>;
+<a name="l00068"></a>00068 <span class="comment"></span>
+<a name="l00069"></a>00069 <span class="comment">  /// TargetTriple, TargetCPU, TargetFS - Triple string, CPU name, and target</span>
+<a name="l00070"></a>00070 <span class="comment">  /// feature strings the TargetMachine instance is created with.</span>
+<a name="l00071"></a><a class="code" href="classllvm_1_1TargetMachine.html#a7780ad2fefc04ca74293dff8aee49b52">00071</a> <span class="comment"></span>  std::string <a class="code" href="classllvm_1_1TargetMachine.html#a7780ad2fefc04ca74293dff8aee49b52">TargetTriple</a>;
+<a name="l00072"></a><a class="code" href="classllvm_1_1TargetMachine.html#a9ca45577ddb8efe4904398939fae28d1">00072</a>   std::string <a class="code" href="classllvm_1_1TargetMachine.html#a9ca45577ddb8efe4904398939fae28d1">TargetCPU</a>;
+<a name="l00073"></a><a class="code" href="classllvm_1_1TargetMachine.html#a795cc09ce82b6ef057e5400a5cee7d68">00073</a>   std::string <a class="code" href="classllvm_1_1TargetMachine.html#a795cc09ce82b6ef057e5400a5cee7d68">TargetFS</a>;
+<a name="l00074"></a>00074 <span class="comment"></span>
+<a name="l00075"></a>00075 <span class="comment">  /// CodeGenInfo - Low level target information such as relocation model.</span>
+<a name="l00076"></a><a class="code" href="classllvm_1_1TargetMachine.html#a6f2928dcce78b70d5ecb7104b8387ec4">00076</a> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCCodeGenInfo.html">MCCodeGenInfo</a> *<a class="code" href="classllvm_1_1TargetMachine.html#a6f2928dcce78b70d5ecb7104b8387ec4" title="CodeGenInfo - Low level target information such as relocation model.">CodeGenInfo</a>;
+<a name="l00077"></a>00077 <span class="comment"></span>
+<a name="l00078"></a>00078 <span class="comment">  /// AsmInfo - Contains target specific asm information.</span>
+<a name="l00079"></a>00079 <span class="comment">  ///</span>
+<a name="l00080"></a><a class="code" href="classllvm_1_1TargetMachine.html#adc9ef8b01d46c20273ffa24468830d0f">00080</a> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCAsmInfo.html">MCAsmInfo</a> *<a class="code" href="classllvm_1_1TargetMachine.html#adc9ef8b01d46c20273ffa24468830d0f">AsmInfo</a>;
+<a name="l00081"></a>00081 
+<a name="l00082"></a><a class="code" href="classllvm_1_1TargetMachine.html#a9e6b9440bd37e9b6d6dfb037f30f44d5">00082</a>   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1TargetMachine.html#a9e6b9440bd37e9b6d6dfb037f30f44d5">MCRelaxAll</a> : 1;
+<a name="l00083"></a><a class="code" href="classllvm_1_1TargetMachine.html#a92793d51be615c4e468140c8554bda8b">00083</a>   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1TargetMachine.html#a92793d51be615c4e468140c8554bda8b">MCNoExecStack</a> : 1;
+<a name="l00084"></a><a class="code" href="classllvm_1_1TargetMachine.html#abe471e25fde7992932b212470d53eaf4">00084</a>   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1TargetMachine.html#abe471e25fde7992932b212470d53eaf4">MCSaveTempLabels</a> : 1;
+<a name="l00085"></a><a class="code" href="classllvm_1_1TargetMachine.html#a7945a4e98283410fc16b5cc0ed5b1755">00085</a>   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1TargetMachine.html#a7945a4e98283410fc16b5cc0ed5b1755">MCUseLoc</a> : 1;
+<a name="l00086"></a><a class="code" href="classllvm_1_1TargetMachine.html#a2b62931ed914e67b55a0e35452de1172">00086</a>   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1TargetMachine.html#a2b62931ed914e67b55a0e35452de1172">MCUseCFI</a> : 1;
+<a name="l00087"></a><a class="code" href="classllvm_1_1TargetMachine.html#a9adb2d1001417a8ad058501ee096b056">00087</a>   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1TargetMachine.html#a9adb2d1001417a8ad058501ee096b056">MCUseDwarfDirectory</a> : 1;
+<a name="l00088"></a>00088 
+<a name="l00089"></a>00089 <span class="keyword">public</span>:
+<a name="l00090"></a>00090   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1TargetMachine.html#ac5319a5805c0cbcf008ac45415c9b96e">~TargetMachine</a>();
+<a name="l00091"></a>00091 
+<a name="l00092"></a><a class="code" href="classllvm_1_1TargetMachine.html#a73cf44ee4d4ae263d8251a0b0daa06a6">00092</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1Target.html">Target</a> &<a class="code" href="classllvm_1_1TargetMachine.html#a73cf44ee4d4ae263d8251a0b0daa06a6">getTarget</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1TargetMachine.html#adde45f08eafa48f29b1b6d9f98a38814" title="TheTarget - The Target that this machine was created for.">TheTarget</a>; }
+<a name="l00093"></a>00093 
+<a name="l00094"></a><a class="code" href="classllvm_1_1TargetMachine.html#a2358a0c569fba82526d8b8a98143eb08">00094</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="classllvm_1_1TargetMachine.html#a2358a0c569fba82526d8b8a98143eb08">getTargetTriple</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1TargetMachine.html#a7780ad2fefc04ca74293dff8aee49b52">TargetTriple</a>; }
+<a name="l00095"></a><a class="code" href="classllvm_1_1TargetMachine.html#a89e97fa082268d5c77ccf9addb86672f">00095</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="classllvm_1_1TargetMachine.html#a89e97fa082268d5c77ccf9addb86672f">getTargetCPU</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1TargetMachine.html#a9ca45577ddb8efe4904398939fae28d1">TargetCPU</a>; }
+<a name="l00096"></a><a class="code" href="classllvm_1_1TargetMachine.html#a67fca271c86ff87b5007e6f29ddc5feb">00096</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="classllvm_1_1TargetMachine.html#a67fca271c86ff87b5007e6f29ddc5feb">getTargetFeatureString</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1TargetMachine.html#a795cc09ce82b6ef057e5400a5cee7d68">TargetFS</a>; }
+<a name="l00097"></a>00097 
+<a name="l00098"></a><a class="code" href="classllvm_1_1TargetMachine.html#ab1fb67187fc37e569cc5171cbebba873">00098</a>   <a class="code" href="classllvm_1_1TargetOptions.html">TargetOptions</a> <a class="code" href="classllvm_1_1TargetMachine.html#ab1fb67187fc37e569cc5171cbebba873">Options</a>;
+<a name="l00099"></a>00099 
+<a name="l00100"></a>00100   <span class="comment">// Interfaces to the major aspects of target machine information:</span>
+<a name="l00101"></a>00101   <span class="comment">// -- Instruction opcode and operand information</span>
+<a name="l00102"></a>00102   <span class="comment">// -- Pipelines and scheduling information</span>
+<a name="l00103"></a>00103   <span class="comment">// -- Stack frame information</span>
+<a name="l00104"></a>00104   <span class="comment">// -- Selection DAG lowering information</span>
+<a name="l00105"></a>00105   <span class="comment">//</span>
+<a name="l00106"></a><a class="code" href="classllvm_1_1TargetMachine.html#ac13d0f6f2c915757013b101ef6e8afbc">00106</a>   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetInstrInfo.html">TargetInstrInfo</a>         *<a class="code" href="classllvm_1_1TargetMachine.html#ac13d0f6f2c915757013b101ef6e8afbc">getInstrInfo</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }
+<a name="l00107"></a><a class="code" href="classllvm_1_1TargetMachine.html#a02aa9d4cbd6ffcc70dfe1143ec0995ef">00107</a>   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetFrameLowering.html">TargetFrameLowering</a> *<a class="code" href="classllvm_1_1TargetMachine.html#a02aa9d4cbd6ffcc70dfe1143ec0995ef">getFrameLowering</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }
+<a name="l00108"></a><a class="code" href="classllvm_1_1TargetMachine.html#ac962b1af600c2e418625a5fecc5e0f95">00108</a>   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetLowering.html">TargetLowering</a>    *<a class="code" href="classllvm_1_1TargetMachine.html#ac962b1af600c2e418625a5fecc5e0f95">getTargetLowering</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }
+<a name="l00109"></a><a class="code" href="classllvm_1_1TargetMachine.html#a04e820d321f5fc4604c0660f7be1c837">00109</a>   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetSelectionDAGInfo.html">TargetSelectionDAGInfo</a> *<a class="code" href="classllvm_1_1TargetMachine.html#a04e820d321f5fc4604c0660f7be1c837">getSelectionDAGInfo</a>()<span class="keyword"> const</span>{ <span class="keywordflow">return</span> 0; }
+<a name="l00110"></a><a class="code" href="classllvm_1_1TargetMachine.html#a5fe259ae8c1f006ddcbca5978442f268">00110</a>   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a>             *<a class="code" href="classllvm_1_1TargetMachine.html#a5fe259ae8c1f006ddcbca5978442f268">getDataLayout</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }
+<a name="l00111"></a>00111   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1ScalarTargetTransformInfo.html">ScalarTargetTransformInfo</a>*
+<a name="l00112"></a><a class="code" href="classllvm_1_1TargetMachine.html#a1a2b8c4cfb1045a3b18ec89283bc5735">00112</a>   <a class="code" href="classllvm_1_1TargetMachine.html#a1a2b8c4cfb1045a3b18ec89283bc5735">getScalarTargetTransformInfo</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }
+<a name="l00113"></a>00113   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1VectorTargetTransformInfo.html">VectorTargetTransformInfo</a>*
+<a name="l00114"></a><a class="code" href="classllvm_1_1TargetMachine.html#a6baf95f8c87561417d85eceb4762c698">00114</a>   <a class="code" href="classllvm_1_1TargetMachine.html#a6baf95f8c87561417d85eceb4762c698">getVectorTargetTransformInfo</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }
+<a name="l00115"></a>00115 <span class="comment"></span>
+<a name="l00116"></a>00116 <span class="comment">  /// getMCAsmInfo - Return target specific asm information.</span>
+<a name="l00117"></a>00117 <span class="comment">  ///</span>
+<a name="l00118"></a><a class="code" href="classllvm_1_1TargetMachine.html#a0183706ce035a6141db09c0479e0fb6e">00118</a> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCAsmInfo.html">MCAsmInfo</a> *<a class="code" href="classllvm_1_1TargetMachine.html#a0183706ce035a6141db09c0479e0fb6e">getMCAsmInfo</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1TargetMachine.html#adc9ef8b01d46c20273ffa24468830d0f">AsmInfo</a>; }
+<a name="l00119"></a>00119 <span class="comment"></span>
+<a name="l00120"></a>00120 <span class="comment">  /// getSubtarget - This method returns a pointer to the specified type of</span>
+<a name="l00121"></a>00121 <span class="comment">  /// TargetSubtargetInfo.  In debug builds, it verifies that the object being</span>
+<a name="l00122"></a>00122 <span class="comment">  /// returned is of the correct type.</span>
+<a name="l00123"></a><a class="code" href="classllvm_1_1TargetMachine.html#a5af2fed99951774b6a14d30ec6e73792">00123</a> <span class="comment"></span>  <span class="keyword">template</span><<span class="keyword">typename</span> STC> <span class="keyword">const</span> STC &<a class="code" href="classllvm_1_1TargetMachine.html#a5af2fed99951774b6a14d30ec6e73792">getSubtarget</a>()<span class="keyword"> const </span>{
+<a name="l00124"></a>00124     <span class="keywordflow">return</span> *<span class="keyword">static_cast<</span><span class="keyword">const </span>STC*<span class="keyword">></span>(<a class="code" href="classllvm_1_1TargetMachine.html#aed6a77031dced466e30cca04f5f82f0a">getSubtargetImpl</a>());
+<a name="l00125"></a>00125   }
+<a name="l00126"></a>00126 <span class="comment"></span>
+<a name="l00127"></a>00127 <span class="comment">  /// getRegisterInfo - If register information is available, return it.  If</span>
+<a name="l00128"></a>00128 <span class="comment">  /// not, return null.  This is kept separate from RegInfo until RegInfo has</span>
+<a name="l00129"></a>00129 <span class="comment">  /// details of graph coloring register allocation removed from it.</span>
+<a name="l00130"></a>00130 <span class="comment">  ///</span>
+<a name="l00131"></a><a class="code" href="classllvm_1_1TargetMachine.html#a70b47eca6a99c87b81f4c1b1455dc090">00131</a> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a> *<a class="code" href="classllvm_1_1TargetMachine.html#a70b47eca6a99c87b81f4c1b1455dc090">getRegisterInfo</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }
+<a name="l00132"></a>00132 <span class="comment"></span>
+<a name="l00133"></a>00133 <span class="comment">  /// getIntrinsicInfo - If intrinsic information is available, return it.  If</span>
+<a name="l00134"></a>00134 <span class="comment">  /// not, return null.</span>
+<a name="l00135"></a>00135 <span class="comment">  ///</span>
+<a name="l00136"></a><a class="code" href="classllvm_1_1TargetMachine.html#a66733f5687c5c458d3c281d64167597e">00136</a> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetIntrinsicInfo.html">TargetIntrinsicInfo</a> *<a class="code" href="classllvm_1_1TargetMachine.html#a66733f5687c5c458d3c281d64167597e">getIntrinsicInfo</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }
+<a name="l00137"></a>00137 <span class="comment"></span>
+<a name="l00138"></a>00138 <span class="comment">  /// getJITInfo - If this target supports a JIT, return information for it,</span>
+<a name="l00139"></a>00139 <span class="comment">  /// otherwise return null.</span>
+<a name="l00140"></a>00140 <span class="comment">  ///</span>
+<a name="l00141"></a><a class="code" href="classllvm_1_1TargetMachine.html#afa7a5bd7d386113e90f85d42423fc528">00141</a> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1TargetJITInfo.html">TargetJITInfo</a> *<a class="code" href="classllvm_1_1TargetMachine.html#afa7a5bd7d386113e90f85d42423fc528">getJITInfo</a>() { <span class="keywordflow">return</span> 0; }
+<a name="l00142"></a>00142 <span class="comment"></span>
+<a name="l00143"></a>00143 <span class="comment">  /// getInstrItineraryData - Returns instruction itinerary data for the target</span>
+<a name="l00144"></a>00144 <span class="comment">  /// or specific subtarget.</span>
+<a name="l00145"></a>00145 <span class="comment">  ///</span>
+<a name="l00146"></a><a class="code" href="classllvm_1_1TargetMachine.html#a69d6715752707a83ec4cbecff60b5359">00146</a> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1InstrItineraryData.html">InstrItineraryData</a> *<a class="code" href="classllvm_1_1TargetMachine.html#a69d6715752707a83ec4cbecff60b5359">getInstrItineraryData</a>()<span class="keyword"> const </span>{
+<a name="l00147"></a>00147     <span class="keywordflow">return</span> 0;
+<a name="l00148"></a>00148   }
+<a name="l00149"></a>00149 <span class="comment"></span>
+<a name="l00150"></a>00150 <span class="comment">  /// hasMCRelaxAll - Check whether all machine code instructions should be</span>
+<a name="l00151"></a>00151 <span class="comment">  /// relaxed.</span>
+<a name="l00152"></a><a class="code" href="classllvm_1_1TargetMachine.html#a85747799b414afdba705c32bf0aeb297">00152</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#a85747799b414afdba705c32bf0aeb297">hasMCRelaxAll</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1TargetMachine.html#a9e6b9440bd37e9b6d6dfb037f30f44d5">MCRelaxAll</a>; }
+<a name="l00153"></a>00153 <span class="comment"></span>
+<a name="l00154"></a>00154 <span class="comment">  /// setMCRelaxAll - Set whether all machine code instructions should be</span>
+<a name="l00155"></a>00155 <span class="comment">  /// relaxed.</span>
+<a name="l00156"></a><a class="code" href="classllvm_1_1TargetMachine.html#aaa76e9548ba73784c00595b51157efc8">00156</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1TargetMachine.html#aaa76e9548ba73784c00595b51157efc8">setMCRelaxAll</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>) { <a class="code" href="classllvm_1_1TargetMachine.html#a9e6b9440bd37e9b6d6dfb037f30f44d5">MCRelaxAll</a> = Value; }
+<a name="l00157"></a>00157 <span class="comment"></span>
+<a name="l00158"></a>00158 <span class="comment">  /// hasMCSaveTempLabels - Check whether temporary labels will be preserved</span>
+<a name="l00159"></a>00159 <span class="comment">  /// (i.e., not treated as temporary).</span>
+<a name="l00160"></a><a class="code" href="classllvm_1_1TargetMachine.html#ad2f955417702bb4ce79af15f6e11bb25">00160</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#ad2f955417702bb4ce79af15f6e11bb25">hasMCSaveTempLabels</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1TargetMachine.html#abe471e25fde7992932b212470d53eaf4">MCSaveTempLabels</a>; }
+<a name="l00161"></a>00161 <span class="comment"></span>
+<a name="l00162"></a>00162 <span class="comment">  /// setMCSaveTempLabels - Set whether temporary labels will be preserved</span>
+<a name="l00163"></a>00163 <span class="comment">  /// (i.e., not treated as temporary).</span>
+<a name="l00164"></a><a class="code" href="classllvm_1_1TargetMachine.html#a9d7016c39ba933d0b8e0a3084725682b">00164</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1TargetMachine.html#a9d7016c39ba933d0b8e0a3084725682b">setMCSaveTempLabels</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>) { <a class="code" href="classllvm_1_1TargetMachine.html#abe471e25fde7992932b212470d53eaf4">MCSaveTempLabels</a> = Value; }
+<a name="l00165"></a>00165 <span class="comment"></span>
+<a name="l00166"></a>00166 <span class="comment">  /// hasMCNoExecStack - Check whether an executable stack is not needed.</span>
+<a name="l00167"></a><a class="code" href="classllvm_1_1TargetMachine.html#ab88a02d0323d165a3577883506325990">00167</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#ab88a02d0323d165a3577883506325990" title="hasMCNoExecStack - Check whether an executable stack is not needed.">hasMCNoExecStack</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1TargetMachine.html#a92793d51be615c4e468140c8554bda8b">MCNoExecStack</a>; }
+<a name="l00168"></a>00168 <span class="comment"></span>
+<a name="l00169"></a>00169 <span class="comment">  /// setMCNoExecStack - Set whether an executabel stack is not needed.</span>
+<a name="l00170"></a><a class="code" href="classllvm_1_1TargetMachine.html#ab879ba17426538d3893c03e47ae0dbda">00170</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1TargetMachine.html#ab879ba17426538d3893c03e47ae0dbda" title="setMCNoExecStack - Set whether an executabel stack is not needed.">setMCNoExecStack</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>) { <a class="code" href="classllvm_1_1TargetMachine.html#a92793d51be615c4e468140c8554bda8b">MCNoExecStack</a> = Value; }
+<a name="l00171"></a>00171 <span class="comment"></span>
+<a name="l00172"></a>00172 <span class="comment">  /// hasMCUseLoc - Check whether we should use dwarf's .loc directive.</span>
+<a name="l00173"></a><a class="code" href="classllvm_1_1TargetMachine.html#aa9dde08e992d2b4229e8b0b83009047f">00173</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#aa9dde08e992d2b4229e8b0b83009047f" title="hasMCUseLoc - Check whether we should use dwarf's .loc directive.">hasMCUseLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1TargetMachine.html#a7945a4e98283410fc16b5cc0ed5b1755">MCUseLoc</a>; }
+<a name="l00174"></a>00174 <span class="comment"></span>
+<a name="l00175"></a>00175 <span class="comment">  /// setMCUseLoc - Set whether all we should use dwarf's .loc directive.</span>
+<a name="l00176"></a><a class="code" href="classllvm_1_1TargetMachine.html#a17a5fe323ac36fcce58ab52ea7c1849c">00176</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1TargetMachine.html#a17a5fe323ac36fcce58ab52ea7c1849c" title="setMCUseLoc - Set whether all we should use dwarf's .loc directive.">setMCUseLoc</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>) { <a class="code" href="classllvm_1_1TargetMachine.html#a7945a4e98283410fc16b5cc0ed5b1755">MCUseLoc</a> = Value; }
+<a name="l00177"></a>00177 <span class="comment"></span>
+<a name="l00178"></a>00178 <span class="comment">  /// hasMCUseCFI - Check whether we should use dwarf's .cfi_* directives.</span>
+<a name="l00179"></a><a class="code" href="classllvm_1_1TargetMachine.html#a74360e24d0266e3231990a676b4d2718">00179</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#a74360e24d0266e3231990a676b4d2718" title="hasMCUseCFI - Check whether we should use dwarf's .cfi_* directives.">hasMCUseCFI</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1TargetMachine.html#a2b62931ed914e67b55a0e35452de1172">MCUseCFI</a>; }
+<a name="l00180"></a>00180 <span class="comment"></span>
+<a name="l00181"></a>00181 <span class="comment">  /// setMCUseCFI - Set whether all we should use dwarf's .cfi_* directives.</span>
+<a name="l00182"></a><a class="code" href="classllvm_1_1TargetMachine.html#afbadfee4f58923e2457a98e0c97dc597">00182</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1TargetMachine.html#afbadfee4f58923e2457a98e0c97dc597" title="setMCUseCFI - Set whether all we should use dwarf's .cfi_* directives.">setMCUseCFI</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>) { <a class="code" href="classllvm_1_1TargetMachine.html#a2b62931ed914e67b55a0e35452de1172">MCUseCFI</a> = Value; }
+<a name="l00183"></a>00183 <span class="comment"></span>
+<a name="l00184"></a>00184 <span class="comment">  /// hasMCUseDwarfDirectory - Check whether we should use .file directives with</span>
+<a name="l00185"></a>00185 <span class="comment">  /// explicit directories.</span>
+<a name="l00186"></a><a class="code" href="classllvm_1_1TargetMachine.html#a74e1aac9e269124129cf2f95a6bbbbea">00186</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#a74e1aac9e269124129cf2f95a6bbbbea">hasMCUseDwarfDirectory</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1TargetMachine.html#a9adb2d1001417a8ad058501ee096b056">MCUseDwarfDirectory</a>; }
+<a name="l00187"></a>00187 <span class="comment"></span>
+<a name="l00188"></a>00188 <span class="comment">  /// setMCUseDwarfDirectory - Set whether all we should use .file directives</span>
+<a name="l00189"></a>00189 <span class="comment">  /// with explicit directories.</span>
+<a name="l00190"></a><a class="code" href="classllvm_1_1TargetMachine.html#a57bb6b84e522b874d4751cceab1bfe3e">00190</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1TargetMachine.html#a57bb6b84e522b874d4751cceab1bfe3e">setMCUseDwarfDirectory</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>) { <a class="code" href="classllvm_1_1TargetMachine.html#a9adb2d1001417a8ad058501ee096b056">MCUseDwarfDirectory</a> = Value; }
+<a name="l00191"></a>00191 <span class="comment"></span>
+<a name="l00192"></a>00192 <span class="comment">  /// getRelocationModel - Returns the code generation relocation model. The</span>
+<a name="l00193"></a>00193 <span class="comment">  /// choices are static, PIC, and dynamic-no-pic, and target default.</span>
+<a name="l00194"></a>00194 <span class="comment"></span>  <a class="code" href="namespacellvm_1_1Reloc.html#af59f6dc86e80aaf56f1afd155eebf568">Reloc::Model</a> <a class="code" href="classllvm_1_1TargetMachine.html#a87f1815c4b56735aaadbbcdfdf32cf4f">getRelocationModel</a>() <span class="keyword">const</span>;
+<a name="l00195"></a>00195 <span class="comment"></span>
+<a name="l00196"></a>00196 <span class="comment">  /// getCodeModel - Returns the code model. The choices are small, kernel,</span>
+<a name="l00197"></a>00197 <span class="comment">  /// medium, large, and target default.</span>
+<a name="l00198"></a>00198 <span class="comment"></span>  <a class="code" href="namespacellvm_1_1CodeModel.html#afc59396a9e5809fc92938e203d91a8df">CodeModel::Model</a> <a class="code" href="classllvm_1_1TargetMachine.html#aa71c74c48947a705283eda33722cb0a5">getCodeModel</a>() <span class="keyword">const</span>;
+<a name="l00199"></a>00199 <span class="comment"></span>
+<a name="l00200"></a>00200 <span class="comment">  /// getTLSModel - Returns the TLS model which should be used for the given</span>
+<a name="l00201"></a>00201 <span class="comment">  /// global variable.</span>
+<a name="l00202"></a>00202 <span class="comment"></span>  <a class="code" href="namespacellvm_1_1TLSModel.html#a8911c5bfb68fc4ed3ac824f04f150120">TLSModel::Model</a> <a class="code" href="classllvm_1_1TargetMachine.html#a21ff907aa3b0ada12ff6031429d4dec6">getTLSModel</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1GlobalValue.html">GlobalValue</a> *GV) <span class="keyword">const</span>;
+<a name="l00203"></a>00203 <span class="comment"></span>
+<a name="l00204"></a>00204 <span class="comment">  /// getOptLevel - Returns the optimization level: None, Less,</span>
+<a name="l00205"></a>00205 <span class="comment">  /// Default, or Aggressive.</span>
+<a name="l00206"></a>00206 <span class="comment"></span>  <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4">CodeGenOpt::Level</a> <a class="code" href="classllvm_1_1TargetMachine.html#af567540acbc5289da300dcbc3b176c1c">getOptLevel</a>() <span class="keyword">const</span>;
+<a name="l00207"></a>00207 
+<a name="l00208"></a><a class="code" href="classllvm_1_1TargetMachine.html#a39135b2379ed114c1fe9035e497b18b7">00208</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1TargetMachine.html#a39135b2379ed114c1fe9035e497b18b7">setFastISel</a>(<span class="keywordtype">bool</span> Enable) { Options.<a class="code" href="classllvm_1_1TargetOptions.html#ab26d50483184808463759bea1da917f8">EnableFastISel</a> = Enable; }
+<a name="l00209"></a>00209 
+<a name="l00210"></a><a class="code" href="classllvm_1_1TargetMachine.html#a287d7ac40434b9a71b0ae33199ddc421">00210</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#a287d7ac40434b9a71b0ae33199ddc421">shouldPrintMachineCode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Options.<a class="code" href="classllvm_1_1TargetOptions.html#a531191e4249bb17410960a984d058851">PrintMachineCode</a>; }
+<a name="l00211"></a>00211 <span class="comment"></span>
+<a name="l00212"></a>00212 <span class="comment">  /// getAsmVerbosityDefault - Returns the default value of asm verbosity.</span>
+<a name="l00213"></a>00213 <span class="comment">  ///</span>
+<a name="l00214"></a>00214 <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#add168bc627fffabe4df556fe3749a537">getAsmVerbosityDefault</a>();
+<a name="l00215"></a>00215 <span class="comment"></span>
+<a name="l00216"></a>00216 <span class="comment">  /// setAsmVerbosityDefault - Set the default value of asm verbosity. Default</span>
+<a name="l00217"></a>00217 <span class="comment">  /// is false.</span>
+<a name="l00218"></a>00218 <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1TargetMachine.html#a434012889842b560057e0db7ccc08d2a">setAsmVerbosityDefault</a>(<span class="keywordtype">bool</span>);
+<a name="l00219"></a>00219 <span class="comment"></span>
+<a name="l00220"></a>00220 <span class="comment">  /// getDataSections - Return true if data objects should be emitted into their</span>
+<a name="l00221"></a>00221 <span class="comment">  /// own section, corresponds to -fdata-sections.</span>
+<a name="l00222"></a>00222 <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#a5c8ef46d423b2b28f2c22017bf2275f0">getDataSections</a>();
+<a name="l00223"></a>00223 <span class="comment"></span>
+<a name="l00224"></a>00224 <span class="comment">  /// getFunctionSections - Return true if functions should be emitted into</span>
+<a name="l00225"></a>00225 <span class="comment">  /// their own section, corresponding to -ffunction-sections.</span>
+<a name="l00226"></a>00226 <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#a7ed35d71ea24e8db638ee44f3c26c840">getFunctionSections</a>();
+<a name="l00227"></a>00227 <span class="comment"></span>
+<a name="l00228"></a>00228 <span class="comment">  /// setDataSections - Set if the data are emit into separate sections.</span>
+<a name="l00229"></a>00229 <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1TargetMachine.html#aa50f094ab45974f1aaf02840906bb318" title="setDataSections - Set if the data are emit into separate sections.">setDataSections</a>(<span class="keywordtype">bool</span>);
+<a name="l00230"></a>00230 <span class="comment"></span>
+<a name="l00231"></a>00231 <span class="comment">  /// setFunctionSections - Set if the functions are emit into separate</span>
+<a name="l00232"></a>00232 <span class="comment">  /// sections.</span>
+<a name="l00233"></a>00233 <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1TargetMachine.html#a22b7d497f08048c33ffda51dd8b009af">setFunctionSections</a>(<span class="keywordtype">bool</span>);
+<a name="l00234"></a>00234 <span class="comment"></span>
+<a name="l00235"></a>00235 <span class="comment">  /// CodeGenFileType - These enums are meant to be passed into</span>
+<a name="l00236"></a>00236 <span class="comment">  /// addPassesToEmitFile to indicate what type of file to emit, and returned by</span>
+<a name="l00237"></a>00237 <span class="comment">  /// it to indicate what type of file could actually be made.</span>
+<a name="l00238"></a><a class="code" href="classllvm_1_1TargetMachine.html#a07148fff055e4a272c35d0dadd78fa12">00238</a> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="classllvm_1_1TargetMachine.html#a07148fff055e4a272c35d0dadd78fa12">CodeGenFileType</a> {
+<a name="l00239"></a><a class="code" href="classllvm_1_1TargetMachine.html#a07148fff055e4a272c35d0dadd78fa12a181cc6d48bc1463e82a9625771f19f66">00239</a>     <a class="code" href="classllvm_1_1TargetMachine.html#a07148fff055e4a272c35d0dadd78fa12a181cc6d48bc1463e82a9625771f19f66">CGFT_AssemblyFile</a>,
+<a name="l00240"></a><a class="code" href="classllvm_1_1TargetMachine.html#a07148fff055e4a272c35d0dadd78fa12a1c1d916c4951619c9e205dad90548456">00240</a>     <a class="code" href="classllvm_1_1TargetMachine.html#a07148fff055e4a272c35d0dadd78fa12a1c1d916c4951619c9e205dad90548456">CGFT_ObjectFile</a>,
+<a name="l00241"></a><a class="code" href="classllvm_1_1TargetMachine.html#a07148fff055e4a272c35d0dadd78fa12a3f8ce797cc4d1ff1088dcc15eab15017">00241</a>     <a class="code" href="classllvm_1_1TargetMachine.html#a07148fff055e4a272c35d0dadd78fa12a3f8ce797cc4d1ff1088dcc15eab15017">CGFT_Null</a>         <span class="comment">// Do not emit any output.</span>
+<a name="l00242"></a>00242   };
+<a name="l00243"></a>00243 <span class="comment"></span>
+<a name="l00244"></a>00244 <span class="comment">  /// addPassesToEmitFile - Add passes to the specified pass manager to get the</span>
+<a name="l00245"></a>00245 <span class="comment">  /// specified file emitted.  Typically this will involve several steps of code</span>
+<a name="l00246"></a>00246 <span class="comment">  /// generation.  This method should return true if emission of this file type</span>
+<a name="l00247"></a>00247 <span class="comment">  /// is not supported, or false on success.</span>
+<a name="l00248"></a><a class="code" href="classllvm_1_1TargetMachine.html#ab45a2a7f80002e570f1e17c1da66572e">00248</a> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#ab45a2a7f80002e570f1e17c1da66572e">addPassesToEmitFile</a>(<a class="code" href="classllvm_1_1PassManagerBase.html">PassManagerBase</a> &,
+<a name="l00249"></a>00249                                    <a class="code" href="classllvm_1_1formatted__raw__ostream.html">formatted_raw_ostream</a> &,
+<a name="l00250"></a>00250                                    <a class="code" href="classllvm_1_1TargetMachine.html#a07148fff055e4a272c35d0dadd78fa12">CodeGenFileType</a>,
+<a name="l00251"></a>00251                                    <span class="keywordtype">bool</span> <span class="comment">/*DisableVerify*/</span> = <span class="keyword">true</span>,
+<a name="l00252"></a>00252                                    <a class="code" href="namespacellvm.html#af58600f38ddfaf598037309c188dd773">AnalysisID</a> <a class="code" href="CommandFlags_8h.html#a65e262ca828cd0fca5c6b2f0b5576d8c">StartAfter</a> = 0,
+<a name="l00253"></a>00253                                    <a class="code" href="namespacellvm.html#af58600f38ddfaf598037309c188dd773">AnalysisID</a> <a class="code" href="CommandFlags_8h.html#a2cfb36dc3f6bcccf0051527611711ea1">StopAfter</a> = 0) {
+<a name="l00254"></a>00254     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00255"></a>00255   }
+<a name="l00256"></a>00256 <span class="comment"></span>
+<a name="l00257"></a>00257 <span class="comment">  /// addPassesToEmitMachineCode - Add passes to the specified pass manager to</span>
+<a name="l00258"></a>00258 <span class="comment">  /// get machine code emitted.  This uses a JITCodeEmitter object to handle</span>
+<a name="l00259"></a>00259 <span class="comment">  /// actually outputting the machine code and resolving things like the address</span>
+<a name="l00260"></a>00260 <span class="comment">  /// of functions.  This method returns true if machine code emission is</span>
+<a name="l00261"></a>00261 <span class="comment">  /// not supported.</span>
+<a name="l00262"></a>00262 <span class="comment">  ///</span>
+<a name="l00263"></a><a class="code" href="classllvm_1_1TargetMachine.html#af617305dc1ac6e8f9bdf8cc36ddbb213">00263</a> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#af617305dc1ac6e8f9bdf8cc36ddbb213">addPassesToEmitMachineCode</a>(<a class="code" href="classllvm_1_1PassManagerBase.html">PassManagerBase</a> &,
+<a name="l00264"></a>00264                                           <a class="code" href="classllvm_1_1JITCodeEmitter.html">JITCodeEmitter</a> &,
+<a name="l00265"></a>00265                                           <span class="keywordtype">bool</span> <span class="comment">/*DisableVerify*/</span> = <span class="keyword">true</span>) {
+<a name="l00266"></a>00266     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00267"></a>00267   }
+<a name="l00268"></a>00268 <span class="comment"></span>
+<a name="l00269"></a>00269 <span class="comment">  /// addPassesToEmitMC - Add passes to the specified pass manager to get</span>
+<a name="l00270"></a>00270 <span class="comment">  /// machine code emitted with the MCJIT. This method returns true if machine</span>
+<a name="l00271"></a>00271 <span class="comment">  /// code is not supported. It fills the MCContext Ctx pointer which can be</span>
+<a name="l00272"></a>00272 <span class="comment">  /// used to build custom MCStreamer.</span>
+<a name="l00273"></a>00273 <span class="comment">  ///</span>
+<a name="l00274"></a><a class="code" href="classllvm_1_1TargetMachine.html#a3d780c056467479af56e78d2adb6a200">00274</a> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1TargetMachine.html#a3d780c056467479af56e78d2adb6a200">addPassesToEmitMC</a>(<a class="code" href="classllvm_1_1PassManagerBase.html">PassManagerBase</a> &,
+<a name="l00275"></a>00275                                  <a class="code" href="classllvm_1_1MCContext.html">MCContext</a> *&,
+<a name="l00276"></a>00276                                  <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &,
+<a name="l00277"></a>00277                                  <span class="keywordtype">bool</span> <span class="comment">/*DisableVerify*/</span> = <span class="keyword">true</span>) {
+<a name="l00278"></a>00278     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00279"></a>00279   }
+<a name="l00280"></a>00280 };
+<a name="l00281"></a>00281 <span class="comment"></span>
+<a name="l00282"></a>00282 <span class="comment">/// LLVMTargetMachine - This class describes a target machine that is</span>
+<a name="l00283"></a>00283 <span class="comment">/// implemented with the LLVM target-independent code generator.</span>
+<a name="l00284"></a>00284 <span class="comment">///</span>
+<a name="l00285"></a><a class="code" href="classllvm_1_1LLVMTargetMachine.html">00285</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classllvm_1_1LLVMTargetMachine.html">LLVMTargetMachine</a> : <span class="keyword">public</span> <a class="code" href="classllvm_1_1TargetMachine.html">TargetMachine</a> {
+<a name="l00286"></a>00286 <span class="keyword">protected</span>: <span class="comment">// Can only create subclasses.</span>
+<a name="l00287"></a>00287   <a class="code" href="classllvm_1_1LLVMTargetMachine.html#ab599cbc97200f2bb6865a526346758ea">LLVMTargetMachine</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> <a class="code" href="classllvm_1_1TargetMachine.html#a7780ad2fefc04ca74293dff8aee49b52">TargetTriple</a>,
+<a name="l00288"></a>00288                     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> CPU, <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1X86II.html#acd283bc8136a594505ec483f4a1cc933a50aa2061845b3ff4e6e2242d762c6a80">FS</a>, <a class="code" href="classllvm_1_1TargetOptions.html">TargetOptions</a> <a class="code" href="classllvm_1_1TargetMachine.html#ab1fb67187fc37e569cc5171cbebba873">Options</a>,
+<a name="l00289"></a>00289                     <a class="code" href="namespacellvm_1_1Reloc.html#af59f6dc86e80aaf56f1afd155eebf568">Reloc::Model</a> RM, <a class="code" href="namespacellvm_1_1CodeModel.html#afc59396a9e5809fc92938e203d91a8df">CodeModel::Model</a> CM,
+<a name="l00290"></a>00290                     <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4">CodeGenOpt::Level</a> OL);
+<a name="l00291"></a>00291 
+<a name="l00292"></a>00292 <span class="keyword">public</span>:<span class="comment"></span>
+<a name="l00293"></a>00293 <span class="comment">  /// createPassConfig - Create a pass configuration object to be used by</span>
+<a name="l00294"></a>00294 <span class="comment">  /// addPassToEmitX methods for generating a pipeline of CodeGen passes.</span>
+<a name="l00295"></a>00295 <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1TargetPassConfig.html">TargetPassConfig</a> *<a class="code" href="classllvm_1_1LLVMTargetMachine.html#a31d1aa44ad07ee26822f5c5fd33841d5">createPassConfig</a>(<a class="code" href="classllvm_1_1PassManagerBase.html">PassManagerBase</a> &PM);
+<a name="l00296"></a>00296 <span class="comment"></span>
+<a name="l00297"></a>00297 <span class="comment">  /// addPassesToEmitFile - Add passes to the specified pass manager to get the</span>
+<a name="l00298"></a>00298 <span class="comment">  /// specified file emitted.  Typically this will involve several steps of code</span>
+<a name="l00299"></a>00299 <span class="comment">  /// generation.</span>
+<a name="l00300"></a>00300 <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LLVMTargetMachine.html#a356929c1f0d202e4a9d3202aff1dbb05">addPassesToEmitFile</a>(<a class="code" href="classllvm_1_1PassManagerBase.html">PassManagerBase</a> &PM,
+<a name="l00301"></a>00301                                    <a class="code" href="classllvm_1_1formatted__raw__ostream.html">formatted_raw_ostream</a> &Out,
+<a name="l00302"></a>00302                                    <a class="code" href="classllvm_1_1TargetMachine.html#a07148fff055e4a272c35d0dadd78fa12">CodeGenFileType</a> <a class="code" href="CommandFlags_8h.html#ad6cfec5fb73fbe48f069b7af3841a302">FileType</a>,
+<a name="l00303"></a>00303                                    <span class="keywordtype">bool</span> DisableVerify = <span class="keyword">true</span>,
+<a name="l00304"></a>00304                                    <a class="code" href="namespacellvm.html#af58600f38ddfaf598037309c188dd773">AnalysisID</a> <a class="code" href="CommandFlags_8h.html#a65e262ca828cd0fca5c6b2f0b5576d8c">StartAfter</a> = 0,
+<a name="l00305"></a>00305                                    <a class="code" href="namespacellvm.html#af58600f38ddfaf598037309c188dd773">AnalysisID</a> <a class="code" href="CommandFlags_8h.html#a2cfb36dc3f6bcccf0051527611711ea1">StopAfter</a> = 0);
+<a name="l00306"></a>00306 <span class="comment"></span>
+<a name="l00307"></a>00307 <span class="comment">  /// addPassesToEmitMachineCode - Add passes to the specified pass manager to</span>
+<a name="l00308"></a>00308 <span class="comment">  /// get machine code emitted.  This uses a JITCodeEmitter object to handle</span>
+<a name="l00309"></a>00309 <span class="comment">  /// actually outputting the machine code and resolving things like the address</span>
+<a name="l00310"></a>00310 <span class="comment">  /// of functions.  This method returns true if machine code emission is</span>
+<a name="l00311"></a>00311 <span class="comment">  /// not supported.</span>
+<a name="l00312"></a>00312 <span class="comment">  ///</span>
+<a name="l00313"></a>00313 <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LLVMTargetMachine.html#a53bb53d76b8c6913402f63ea2bb86b72">addPassesToEmitMachineCode</a>(<a class="code" href="classllvm_1_1PassManagerBase.html">PassManagerBase</a> &PM,
+<a name="l00314"></a>00314                                           <a class="code" href="classllvm_1_1JITCodeEmitter.html">JITCodeEmitter</a> &MCE,
+<a name="l00315"></a>00315                                           <span class="keywordtype">bool</span> DisableVerify = <span class="keyword">true</span>);
+<a name="l00316"></a>00316 <span class="comment"></span>
+<a name="l00317"></a>00317 <span class="comment">  /// addPassesToEmitMC - Add passes to the specified pass manager to get</span>
+<a name="l00318"></a>00318 <span class="comment">  /// machine code emitted with the MCJIT. This method returns true if machine</span>
+<a name="l00319"></a>00319 <span class="comment">  /// code is not supported. It fills the MCContext Ctx pointer which can be</span>
+<a name="l00320"></a>00320 <span class="comment">  /// used to build custom MCStreamer.</span>
+<a name="l00321"></a>00321 <span class="comment">  ///</span>
+<a name="l00322"></a>00322 <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LLVMTargetMachine.html#a26f51573c54ce39f92b851f787207364">addPassesToEmitMC</a>(<a class="code" href="classllvm_1_1PassManagerBase.html">PassManagerBase</a> &PM,
+<a name="l00323"></a>00323                                  <a class="code" href="classllvm_1_1MCContext.html">MCContext</a> *&Ctx,
+<a name="l00324"></a>00324                                  <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &OS,
+<a name="l00325"></a>00325                                  <span class="keywordtype">bool</span> DisableVerify = <span class="keyword">true</span>);
+<a name="l00326"></a>00326 <span class="comment"></span>
+<a name="l00327"></a>00327 <span class="comment">  /// addCodeEmitter - This pass should be overridden by the target to add a</span>
+<a name="l00328"></a>00328 <span class="comment">  /// code emitter, if supported.  If this is not supported, 'true' should be</span>
+<a name="l00329"></a>00329 <span class="comment">  /// returned.</span>
+<a name="l00330"></a><a class="code" href="classllvm_1_1LLVMTargetMachine.html#a1727e02682b2ed26fe83d9bdb71232ff">00330</a> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LLVMTargetMachine.html#a1727e02682b2ed26fe83d9bdb71232ff">addCodeEmitter</a>(<a class="code" href="classllvm_1_1PassManagerBase.html">PassManagerBase</a> &,
+<a name="l00331"></a>00331                               <a class="code" href="classllvm_1_1JITCodeEmitter.html">JITCodeEmitter</a> &) {
+<a name="l00332"></a>00332     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00333"></a>00333   }
+<a name="l00334"></a>00334 };
+<a name="l00335"></a>00335 
+<a name="l00336"></a>00336 } <span class="comment">// End llvm namespace</span>
+<a name="l00337"></a>00337 
+<a name="l00338"></a>00338 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:38:49 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/Target_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Target_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Target_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Target_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,29 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="Target.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-c/Core.h",height=0.2,width=0.4,color="black",URL="$Core_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/Config/llvm-config.h",height=0.2,width=0.4,color="black",URL="$llvm-config_8h.html"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/Config/Targets.def",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/Config/AsmPrinters.def",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/Config/AsmParsers.def",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="llvm/Config/Disassemblers.def",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/ThreadLocal_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ThreadLocal_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ThreadLocal_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ThreadLocal_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,147 @@
+<!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: ThreadLocal.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_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">ThreadLocal.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="ThreadLocal_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- ThreadLocal.cpp - Thread Local Data ----------------------*- 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 implements the llvm::sys::ThreadLocal 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>00014 <span class="preprocessor">#include "<a class="code" href="config_8h.html">llvm/Config/config.h</a>"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="ThreadLocal_8h.html">llvm/Support/ThreadLocal.h</a>"</span>
+<a name="l00016"></a>00016 
+<a name="l00017"></a>00017 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00018"></a>00018 <span class="comment">//=== WARNING: Implementation here must contain only TRULY operating system</span>
+<a name="l00019"></a>00019 <span class="comment">//===          independent code.</span>
+<a name="l00020"></a>00020 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 <span class="preprocessor">#if !defined(LLVM_ENABLE_THREADS) || LLVM_ENABLE_THREADS == 0</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="comment">// Define all methods as no-ops if threading is explicitly disabled</span>
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>llvm {
+<a name="l00025"></a>00025 <span class="keyword">using namespace </span>sys;
+<a name="l00026"></a><a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a1770282491eb84f2eba7674f5e5aab9d">00026</a> <a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a1770282491eb84f2eba7674f5e5aab9d">ThreadLocalImpl::ThreadLocalImpl</a>() { }
+<a name="l00027"></a><a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#af0d1ec058820a81bcbe22f7ffc6ffb91">00027</a> <a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#af0d1ec058820a81bcbe22f7ffc6ffb91">ThreadLocalImpl::~ThreadLocalImpl</a>() { }
+<a name="l00028"></a><a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a38ffe792af05cdfd52069698fe96ed17">00028</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a38ffe792af05cdfd52069698fe96ed17">ThreadLocalImpl::setInstance</a>(<span class="keyword">const</span> <span class="keywordtype">void</span>* d) {
+<a name="l00029"></a>00029   <span class="keyword">typedef</span> <span class="keywordtype">int</span> SIZE_TOO_BIG[<span class="keyword">sizeof</span>(d) <= <span class="keyword">sizeof</span>(<a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a10b32c0d09c6a33bda18647ce14856d9">data</a>) ? 1 : -1];
+<a name="l00030"></a>00030   <span class="keywordtype">void</span> **pd = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>**<span class="keyword">></span>(&<a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a10b32c0d09c6a33bda18647ce14856d9">data</a>);
+<a name="l00031"></a>00031   *pd = <span class="keyword">const_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(d);
+<a name="l00032"></a>00032 }
+<a name="l00033"></a><a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#ac8b85aee2979d3aeb2d72cc2b64f498e">00033</a> <span class="keyword">const</span> <span class="keywordtype">void</span>* <a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#ac8b85aee2979d3aeb2d72cc2b64f498e">ThreadLocalImpl::getInstance</a>() {
+<a name="l00034"></a>00034   <span class="keywordtype">void</span> **pd = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>**<span class="keyword">></span>(&<a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a10b32c0d09c6a33bda18647ce14856d9">data</a>);
+<a name="l00035"></a>00035   <span class="keywordflow">return</span> *pd;
+<a name="l00036"></a>00036 }
+<a name="l00037"></a><a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#af012c07d94d49b1d518abb5ec6734c4d">00037</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#af012c07d94d49b1d518abb5ec6734c4d">ThreadLocalImpl::removeInstance</a>() {
+<a name="l00038"></a>00038   <a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a38ffe792af05cdfd52069698fe96ed17">setInstance</a>(0);
+<a name="l00039"></a>00039 }
+<a name="l00040"></a>00040 }
+<a name="l00041"></a>00041 <span class="preprocessor">#else</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span>
+<a name="l00043"></a>00043 <span class="preprocessor">#if defined(HAVE_PTHREAD_H) && defined(HAVE_PTHREAD_GETSPECIFIC)</span>
+<a name="l00044"></a>00044 <span class="preprocessor"></span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include <cassert></span>
+<a name="l00046"></a>00046 <span class="preprocessor">#include <pthread.h></span>
+<a name="l00047"></a>00047 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049 <span class="keyword">namespace </span>llvm {
+<a name="l00050"></a>00050 <span class="keyword">using namespace </span>sys;
+<a name="l00051"></a>00051 
+<a name="l00052"></a>00052 <a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a1770282491eb84f2eba7674f5e5aab9d">ThreadLocalImpl::ThreadLocalImpl</a>() : data() {
+<a name="l00053"></a>00053   <span class="keyword">typedef</span> <span class="keywordtype">int</span> SIZE_TOO_BIG[<span class="keyword">sizeof</span>(pthread_key_t) <= <span class="keyword">sizeof</span>(<a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a10b32c0d09c6a33bda18647ce14856d9">data</a>) ? 1 : -1];
+<a name="l00054"></a>00054   pthread_key_t* key = <span class="keyword">reinterpret_cast<</span>pthread_key_t*<span class="keyword">></span>(&<a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a10b32c0d09c6a33bda18647ce14856d9">data</a>);
+<a name="l00055"></a>00055   <span class="keywordtype">int</span> errorcode = pthread_key_create(key, NULL);
+<a name="l00056"></a>00056   assert(errorcode == 0);
+<a name="l00057"></a>00057   (void) errorcode;
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060 <a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#af0d1ec058820a81bcbe22f7ffc6ffb91">ThreadLocalImpl::~ThreadLocalImpl</a>() {
+<a name="l00061"></a>00061   pthread_key_t* key = <span class="keyword">reinterpret_cast<</span>pthread_key_t*<span class="keyword">></span>(&<a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a10b32c0d09c6a33bda18647ce14856d9">data</a>);
+<a name="l00062"></a>00062   <span class="keywordtype">int</span> errorcode = pthread_key_delete(*key);
+<a name="l00063"></a>00063   assert(errorcode == 0);
+<a name="l00064"></a>00064   (void) errorcode;
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067 <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a38ffe792af05cdfd52069698fe96ed17">ThreadLocalImpl::setInstance</a>(<span class="keyword">const</span> <span class="keywordtype">void</span>* d) {
+<a name="l00068"></a>00068   pthread_key_t* key = <span class="keyword">reinterpret_cast<</span>pthread_key_t*<span class="keyword">></span>(&<a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a10b32c0d09c6a33bda18647ce14856d9">data</a>);
+<a name="l00069"></a>00069   <span class="keywordtype">int</span> errorcode = pthread_setspecific(*key, d);
+<a name="l00070"></a>00070   assert(errorcode == 0);
+<a name="l00071"></a>00071   (void) errorcode;
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074 <span class="keyword">const</span> <span class="keywordtype">void</span>* <a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#ac8b85aee2979d3aeb2d72cc2b64f498e">ThreadLocalImpl::getInstance</a>() {
+<a name="l00075"></a>00075   pthread_key_t* key = <span class="keyword">reinterpret_cast<</span>pthread_key_t*<span class="keyword">></span>(&<a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a10b32c0d09c6a33bda18647ce14856d9">data</a>);
+<a name="l00076"></a>00076   <span class="keywordflow">return</span> pthread_getspecific(*key);
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079 <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#af012c07d94d49b1d518abb5ec6734c4d">ThreadLocalImpl::removeInstance</a>() {
+<a name="l00080"></a>00080   <a class="code" href="classllvm_1_1sys_1_1ThreadLocalImpl.html#a38ffe792af05cdfd52069698fe96ed17">setInstance</a>(0);
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083 }
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085 <span class="preprocessor">#elif defined(LLVM_ON_UNIX)</span>
+<a name="l00086"></a>00086 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="Unix_2ThreadLocal_8inc.html">Unix/ThreadLocal.inc</a>"</span>
+<a name="l00087"></a>00087 <span class="preprocessor">#elif defined( LLVM_ON_WIN32)</span>
+<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="Windows_2ThreadLocal_8inc.html">Windows/ThreadLocal.inc</a>"</span>
+<a name="l00089"></a>00089 <span class="preprocessor">#else</span>
+<a name="l00090"></a>00090 <span class="preprocessor"></span><span class="preprocessor">#warning Neither LLVM_ON_UNIX nor LLVM_ON_WIN32 set in Support/ThreadLocal.cpp</span>
+<a name="l00091"></a>00091 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00092"></a>00092 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:38:57 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/ThreadLocal_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ThreadLocal_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ThreadLocal_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ThreadLocal_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,21 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="ThreadLocal.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/Threading.h",height=0.2,width=0.4,color="black",URL="$Threading_8h.html"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="cassert",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/ThreadSanitizer_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ThreadSanitizer_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ThreadSanitizer_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ThreadSanitizer_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,515 @@
+<!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: ThreadSanitizer.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_a27da379c0207135ed34ab2f42b9226e.html">Instrumentation</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">ThreadSanitizer.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="BlackList_8h_source.html">BlackList.h</a>"</code><br/>
+<code>#include "<a class="el" href="Function_8h_source.html">llvm/Function.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="Intrinsics_8h_source.html">llvm/Intrinsics.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="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="Type_8h_source.html">llvm/Type.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallSet_8h_source.html">llvm/ADT/SmallSet.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallString_8h_source.html">llvm/ADT/SmallString.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="StringExtras_8h_source.html">llvm/ADT/StringExtras.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="Debug_8h_source.html">llvm/Support/Debug.h</a>"</code><br/>
+<code>#include "<a class="el" href="MathExtras_8h_source.html">llvm/Support/MathExtras.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="DataLayout_8h_source.html">llvm/DataLayout.h</a>"</code><br/>
+<code>#include "<a class="el" href="Instrumentation_8h_source.html">llvm/Transforms/Instrumentation.h</a>"</code><br/>
+<code>#include "<a class="el" href="BasicBlockUtils_8h_source.html">llvm/Transforms/Utils/BasicBlockUtils.h</a>"</code><br/>
+<code>#include "<a class="el" href="ModuleUtils_8h_source.html">llvm/Transforms/Utils/ModuleUtils.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for ThreadSanitizer.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="ThreadSanitizer_8cpp__incl.png" border="0" usemap="#ThreadSanitizer_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="ThreadSanitizer_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="ThreadSanitizer_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "tsan"</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="ThreadSanitizer_8cpp.html#a0a2dafc8a99b0b69c364d81bea56f1fd">STATISTIC</a> (NumInstrumentedReads,"Number of instrumented reads")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="ThreadSanitizer_8cpp.html#a6a97f3ad7d8aa803ebf807b038fbd25f">STATISTIC</a> (NumInstrumentedWrites,"Number of instrumented writes")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="ThreadSanitizer_8cpp.html#aaebb48a7e32704f440a35490a79ea6d8">STATISTIC</a> (NumOmittedReadsBeforeWrite,"Number of reads ignored due to following writes")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="ThreadSanitizer_8cpp.html#a9359229f847029feb877ac65a27eb226">STATISTIC</a> (NumAccessesWithBadSize,"Number of accesses with bad size")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="ThreadSanitizer_8cpp.html#a71d1f26a7f77f44a1f9afdf9c1908473">STATISTIC</a> (NumInstrumentedVtableWrites,"Number of vtable ptr writes")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="ThreadSanitizer_8cpp.html#aa57f2177a6b707304120567894350ea0">STATISTIC</a> (NumOmittedReadsFromConstantGlobals,"Number of reads from constant <a class="el" href="GlobalsModRef_8cpp.html#a79a824a017314e01a69240621102bc28">globals</a>")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="ThreadSanitizer_8cpp.html#a295732d3577b66cebe6a7fba02c8b33c">STATISTIC</a> (NumOmittedReadsFromVtable,"Number of vtable reads")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="ThreadSanitizer_8cpp.html#ab8b8a7f50eb15e3e8d1112f277535572">INITIALIZE_PASS</a> (ThreadSanitizer,"tsan","ThreadSanitizer: detects data races.", false, <a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>) const <a class="el" href="classchar.html">char</a> *ThreadSanitizer</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1Function.html">Function</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="ThreadSanitizer_8cpp.html#a44f411784b021a19cba8ff4f17b282bf">checkInterfaceFunction</a> (<a class="el" href="classllvm_1_1Constant.html">Constant</a> *FuncOrBitcast)</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="ThreadSanitizer_8cpp.html#a15cf887d2d1af2b11ee47e28142ac131">isVtableAccess</a> (<a class="el" href="classllvm_1_1Instruction.html">Instruction</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="ThreadSanitizer_8cpp.html#accbf04314e7caef9ac81d62928dda8b8">isAtomic</a> (<a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *I)</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="ThreadSanitizer_8cpp.html#afdcf7dc835e87d1c94a3f3db62d526a3">createOrdering</a> (<a class="el" href="classllvm_1_1IRBuilder.html">IRBuilder</a><> *IRB, <a class="el" href="namespacellvm.html#abf74b2f0dbae96f4708d3e407b36df02">AtomicOrdering</a> ord)</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>< std::string > </td><td class="memItemRight" valign="bottom"><a class="el" href="ThreadSanitizer_8cpp.html#a6d68cedf76443737025f612443202bd0">ClBlackListFile</a> ("tsan-blacklist", cl::desc("Blacklist <a class="el" href="PathProfileInfo_8cpp.html#add64b5c8b8c45c8dabeaf9d771cc1534">file</a>"), cl::Hidden)</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="ThreadSanitizer_8cpp.html#ae9a6c12fdf4ec6cd050e9c320ceac9f6">ClInstrumentMemoryAccesses</a> ("tsan-instrument-memory-accesses", 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>("Instrument memory accesses"), cl::Hidden)</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="ThreadSanitizer_8cpp.html#ae40d4d90566731cab0da1ce17eff68cc">ClInstrumentFuncEntryExit</a> ("tsan-instrument-func-entry-exit", 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>("Instrument <a class="el" href="RegionPrinter_8cpp.html#a0f5fa683b66233cfe2fbf09ae8168ffe">function</a> entry and exit"), cl::Hidden)</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="ThreadSanitizer_8cpp.html#a729cb67fb2583fad4e5ff29acbbac3e8">ClInstrumentAtomics</a> ("tsan-instrument-atomics", 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>("Instrument atomics"), cl::Hidden)</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="ThreadSanitizer.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "tsan"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="ThreadSanitizer_8cpp_source.html#l00022">22</a> of file <a class="el" href="ThreadSanitizer_8cpp_source.html">ThreadSanitizer.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a44f411784b021a19cba8ff4f17b282bf"></a><!-- doxytag: member="ThreadSanitizer.cpp::checkInterfaceFunction" ref="a44f411784b021a19cba8ff4f17b282bf" args="(Constant *FuncOrBitcast)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1Function.html">Function</a> * AddressSanitizer::checkInterfaceFunction </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Constant.html">Constant</a> * </td>
+          <td class="paramname"><em>FuncOrBitcast</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="ThreadSanitizer_8cpp_source.html#l00126">126</a> of file <a class="el" href="ThreadSanitizer_8cpp_source.html">ThreadSanitizer.cpp</a>.</p>
+
+<p>References <a class="el" href="AsmWriter_8cpp_source.html#l02151">llvm::Value::dump()</a>, <a class="el" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F()</a>, and <a class="el" href="ErrorHandling_8cpp_source.html#l00052">llvm::report_fatal_error()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afdcf7dc835e87d1c94a3f3db62d526a3"></a><!-- doxytag: member="ThreadSanitizer.cpp::createOrdering" ref="afdcf7dc835e87d1c94a3f3db62d526a3" args="(IRBuilder<> *IRB, AtomicOrdering ord)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a>* createOrdering </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1IRBuilder.html">IRBuilder</a><> * </td>
+          <td class="paramname"><em>IRB</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="namespacellvm.html#abf74b2f0dbae96f4708d3e407b36df02">AtomicOrdering</a> </td>
+          <td class="paramname"><em>ord</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="ThreadSanitizer_8cpp_source.html#l00388">388</a> of file <a class="el" href="ThreadSanitizer_8cpp_source.html">ThreadSanitizer.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l00042">llvm::Acquire</a>, <a class="el" href="Instructions_8h_source.html#l00044">llvm::AcquireRelease</a>, <a class="el" href="IRBuilder_8h_source.html#l00208">llvm::IRBuilderBase::getInt32()</a>, <a class="el" href="Instructions_8h_source.html#l00040">llvm::Monotonic</a>, <a class="el" href="Instructions_8h_source.html#l00038">llvm::NotAtomic</a>, <a class="el" href="Instructions_8h_source.html#l00043">llvm::Release</a>, <a class="el" href="Instructions_8h_source.html#l00045">llvm::SequentiallyConsistent</a>, and <a class="el" href="Instructions_8h_source.html#l00039">llvm::Unordered</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab8b8a7f50eb15e3e8d1112f277535572"></a><!-- doxytag: member="ThreadSanitizer.cpp::INITIALIZE_PASS" ref="ab8b8a7f50eb15e3e8d1112f277535572" args="(ThreadSanitizer,"tsan","ThreadSanitizer: detects data races.", false, false) const char *ThreadSanitizer" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">INITIALIZE_PASS </td>
+          <td>(</td>
+          <td class="paramtype">ThreadSanitizer </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"tsan" </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"ThreadSanitizer: detects data races." </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> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="ThreadSanitizer_8cpp_source.html#l00109">109</a> of file <a class="el" href="ThreadSanitizer_8cpp_source.html">ThreadSanitizer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="accbf04314e7caef9ac81d62928dda8b8"></a><!-- doxytag: member="ThreadSanitizer.cpp::isAtomic" ref="accbf04314e7caef9ac81d62928dda8b8" args="(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> isAtomic </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Instruction.html">Instruction</a> * </td>
+          <td class="paramname"><em>I</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="ThreadSanitizer_8cpp_source.html#l00283">283</a> of file <a class="el" href="ThreadSanitizer_8cpp_source.html">ThreadSanitizer.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l00050">llvm::CrossThread</a>, and <a class="el" href="LoopInfoImpl_8h_source.html#l00430">LI</a>.</p>
+
+<p>Referenced by <a class="el" href="BitcodeWriter_8cpp_source.html#l01065">WriteInstruction()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a15cf887d2d1af2b11ee47e28142ac131"></a><!-- doxytag: member="ThreadSanitizer.cpp::isVtableAccess" ref="a15cf887d2d1af2b11ee47e28142ac131" args="(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> isVtableAccess </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Instruction.html">Instruction</a> * </td>
+          <td class="paramname"><em>I</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="ThreadSanitizer_8cpp_source.html#l00213">213</a> of file <a class="el" href="ThreadSanitizer_8cpp_source.html">ThreadSanitizer.cpp</a>.</p>
+
+<p>References <a class="el" href="Instruction_8h_source.html#l00139">llvm::Instruction::getMetadata()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0a2dafc8a99b0b69c364d81bea56f1fd"></a><!-- doxytag: member="ThreadSanitizer.cpp::STATISTIC" ref="a0a2dafc8a99b0b69c364d81bea56f1fd" args="(NumInstrumentedReads,"Number of instrumented reads")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumInstrumentedReads </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of instrumented reads" </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="a6a97f3ad7d8aa803ebf807b038fbd25f"></a><!-- doxytag: member="ThreadSanitizer.cpp::STATISTIC" ref="a6a97f3ad7d8aa803ebf807b038fbd25f" args="(NumInstrumentedWrites,"Number of instrumented writes")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumInstrumentedWrites </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of instrumented writes" </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="aaebb48a7e32704f440a35490a79ea6d8"></a><!-- doxytag: member="ThreadSanitizer.cpp::STATISTIC" ref="aaebb48a7e32704f440a35490a79ea6d8" args="(NumOmittedReadsBeforeWrite,"Number of reads ignored due to following writes")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumOmittedReadsBeforeWrite </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of reads ignored due to following writes" </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="a9359229f847029feb877ac65a27eb226"></a><!-- doxytag: member="ThreadSanitizer.cpp::STATISTIC" ref="a9359229f847029feb877ac65a27eb226" args="(NumAccessesWithBadSize,"Number of accesses with bad size")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumAccessesWithBadSize </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of accesses with bad size" </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="a71d1f26a7f77f44a1f9afdf9c1908473"></a><!-- doxytag: member="ThreadSanitizer.cpp::STATISTIC" ref="a71d1f26a7f77f44a1f9afdf9c1908473" args="(NumInstrumentedVtableWrites,"Number of vtable ptr writes")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumInstrumentedVtableWrites </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of vtable ptr writes" </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="aa57f2177a6b707304120567894350ea0"></a><!-- doxytag: member="ThreadSanitizer.cpp::STATISTIC" ref="aa57f2177a6b707304120567894350ea0" args="(NumOmittedReadsFromConstantGlobals,"Number of reads from constant globals")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumOmittedReadsFromConstantGlobals </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of reads from constant <a class="el" href="GlobalsModRef_8cpp.html#a79a824a017314e01a69240621102bc28">globals</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="a295732d3577b66cebe6a7fba02c8b33c"></a><!-- doxytag: member="ThreadSanitizer.cpp::STATISTIC" ref="a295732d3577b66cebe6a7fba02c8b33c" args="(NumOmittedReadsFromVtable,"Number of vtable reads")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumOmittedReadsFromVtable </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of vtable reads" </td>
+          <td class="paramname"> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="a6d68cedf76443737025f612443202bd0"></a><!-- doxytag: member="ThreadSanitizer.cpp::ClBlackListFile" ref="a6d68cedf76443737025f612443202bd0" args="("tsan-blacklist", cl::desc("Blacklist file"), cl::Hidden)" -->
+<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><std::string> <a class="el" href="ThreadSanitizer_8cpp.html#a6d68cedf76443737025f612443202bd0">ClBlackListFile</a>("tsan-blacklist", cl::desc("Blacklist <a class="el" href="PathProfileInfo_8cpp.html#add64b5c8b8c45c8dabeaf9d771cc1534">file</a>"), cl::Hidden)<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a729cb67fb2583fad4e5ff29acbbac3e8"></a><!-- doxytag: member="ThreadSanitizer.cpp::ClInstrumentAtomics" ref="a729cb67fb2583fad4e5ff29acbbac3e8" args="("tsan-instrument-atomics", cl::init(true), cl::desc("Instrument atomics"), cl::Hidden)" -->
+<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="ThreadSanitizer_8cpp.html#a729cb67fb2583fad4e5ff29acbbac3e8">ClInstrumentAtomics</a>("tsan-instrument-atomics", 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>("Instrument atomics"), cl::Hidden)<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae40d4d90566731cab0da1ce17eff68cc"></a><!-- doxytag: member="ThreadSanitizer.cpp::ClInstrumentFuncEntryExit" ref="ae40d4d90566731cab0da1ce17eff68cc" args="("tsan-instrument-func-entry-exit", cl::init(true), cl::desc("Instrument function entry and exit"), cl::Hidden)" -->
+<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="ThreadSanitizer_8cpp.html#ae40d4d90566731cab0da1ce17eff68cc">ClInstrumentFuncEntryExit</a>("tsan-instrument-func-entry-exit", 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>("Instrument <a class="el" href="RegionPrinter_8cpp.html#a0f5fa683b66233cfe2fbf09ae8168ffe">function</a> entry and exit"), cl::Hidden)<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae9a6c12fdf4ec6cd050e9c320ceac9f6"></a><!-- doxytag: member="ThreadSanitizer.cpp::ClInstrumentMemoryAccesses" ref="ae9a6c12fdf4ec6cd050e9c320ceac9f6" args="("tsan-instrument-memory-accesses", cl::init(true), cl::desc("Instrument memory accesses"), cl::Hidden)" -->
+<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="ThreadSanitizer_8cpp.html#ae9a6c12fdf4ec6cd050e9c320ceac9f6">ClInstrumentMemoryAccesses</a>("tsan-instrument-memory-accesses", 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>("Instrument memory accesses"), cl::Hidden)<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:53 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/ThreadSanitizer_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ThreadSanitizer_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ThreadSanitizer_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ThreadSanitizer_8cpp__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="ThreadSanitizer.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="BlackList.h",height=0.2,width=0.4,color="black",URL="$BlackList_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/ADT/StringMap.h",height=0.2,width=0.4,color="red",URL="$StringMap_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="red",URL="$StringRef_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="red",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="red",URL="$DataTypes_8h.html"];
+  Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/Function.h",height=0.2,width=0.4,color="black",URL="$Function_8h.html"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/GlobalValue.h",height=0.2,width=0.4,color="red",URL="$GlobalValue_8h.html"];
+  Node9 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node9 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="llvm/BasicBlock.h",height=0.2,width=0.4,color="red",URL="$BasicBlock_8h.html"];
+  Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="red",URL="$Twine_8h.html"];
+  Node13 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/Argument.h",height=0.2,width=0.4,color="black",URL="$Argument_8h.html"];
+  Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/Value.h",height=0.2,width=0.4,color="red",URL="$Value_8h.html"];
+  Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="llvm/Support/Casting.h",height=0.2,width=0.4,color="red",URL="$Casting_8h.html"];
+  Node16 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node14 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/Attributes.h",height=0.2,width=0.4,color="red",URL="$Attributes_8h.html"];
+  Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="red",URL="$MathExtras_8h.html"];
+  Node18 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="black",URL="$ArrayRef_8h.html"];
+  Node20 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="red",URL="$SmallVector_8h.html"];
+  Node21 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="red",URL="$AlignOf_8h.html"];
+  Node22 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node18 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/ADT/ilist_node.h",height=0.2,width=0.4,color="black",URL="$ilist__node_8h.html"];
+  Node14 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/IRBuilder.h",height=0.2,width=0.4,color="black",URL="$IRBuilder_8h.html"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/Instructions.h",height=0.2,width=0.4,color="red",URL="$Instructions_8h.html"];
+  Node26 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/DataLayout.h",height=0.2,width=0.4,color="red",URL="$DataLayout_8h.html"];
+  Node27 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/LLVMContext.h",height=0.2,width=0.4,color="black",URL="$LLVMContext_8h.html"];
+  Node28 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Support/ConstantFolder.h",height=0.2,width=0.4,color="red",URL="$ConstantFolder_8h.html"];
+  Node1 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/Intrinsics.h",height=0.2,width=0.4,color="black",URL="$Intrinsics_8h.html"];
+  Node30 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Intrinsics.gen",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/Metadata.h",height=0.2,width=0.4,color="black",URL="$Metadata_8h.html"];
+  Node32 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/ADT/FoldingSet.h",height=0.2,width=0.4,color="black",URL="$FoldingSet_8h.html"];
+  Node33 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Module.h",height=0.2,width=0.4,color="black",URL="$Module_8h.html"];
+  Node34 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/GlobalVariable.h",height=0.2,width=0.4,color="red",URL="$GlobalVariable_8h.html"];
+  Node35 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/GlobalAlias.h",height=0.2,width=0.4,color="red",URL="$GlobalAlias_8h.html"];
+  Node36 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/ADT/OwningPtr.h",height=0.2,width=0.4,color="red",URL="$OwningPtr_8h.html"];
+  Node37 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/Type.h",height=0.2,width=0.4,color="black",URL="$Type_8h.html"];
+  Node38 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/ADT/SmallSet.h",height=0.2,width=0.4,color="black",URL="$SmallSet_8h.html"];
+  Node39 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="red",URL="$SmallPtrSet_8h.html"];
+  Node40 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="set",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/ADT/SmallString.h",height=0.2,width=0.4,color="black",URL="$SmallString_8h.html"];
+  Node42 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/ADT/Statistic.h",height=0.2,width=0.4,color="red",URL="$Statistic_8h.html"];
+  Node1 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/ADT/StringExtras.h",height=0.2,width=0.4,color="black",URL="$StringExtras_8h.html"];
+  Node44 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/Support/CommandLine.h",height=0.2,width=0.4,color="red",URL="$CommandLine_8h.html"];
+  Node45 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/Support/Debug.h",height=0.2,width=0.4,color="black",URL="$Debug_8h.html"];
+  Node1 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="black",URL="$raw__ostream_8h.html"];
+  Node47 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Transforms/Instrumentation.h",height=0.2,width=0.4,color="black",URL="$Instrumentation_8h.html"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/Transforms/Utils/BasicBlockUtils.h",height=0.2,width=0.4,color="red",URL="$BasicBlockUtils_8h.html"];
+  Node49 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/Transforms/Utils/ModuleUtils.h",height=0.2,width=0.4,color="black",URL="$ModuleUtils_8h.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Threading_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Threading_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Threading_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Threading_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,129 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="Threading.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="Mutex.h",height=0.2,width=0.4,color="black",URL="$Mutex_8h.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="ValueMap.h",height=0.2,width=0.4,color="black",URL="$ValueMap_8h.html"];
+  Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="InlineCost.h",height=0.2,width=0.4,color="red",URL="$InlineCost_8h.html"];
+  Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="ExecutionEngine.h",height=0.2,width=0.4,color="red",URL="$ExecutionEngine_2ExecutionEngine_8h.html"];
+  Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="Interpreter.h",height=0.2,width=0.4,color="black",URL="$include_2llvm_2ExecutionEngine_2Interpreter_8h.html"];
+  Node5 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="JIT.h",height=0.2,width=0.4,color="black",URL="$include_2llvm_2ExecutionEngine_2JIT_8h.html"];
+  Node5 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="MCJIT.h",height=0.2,width=0.4,color="red",URL="$include_2llvm_2ExecutionEngine_2MCJIT_8h.html"];
+  Node5 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="ExecutionEngine.cpp",height=0.2,width=0.4,color="black",URL="$ExecutionEngine_8cpp.html"];
+  Node5 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="ExecutionEngineBindings.cpp",height=0.2,width=0.4,color="black",URL="$ExecutionEngineBindings_8cpp.html"];
+  Node3 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="Cloning.h",height=0.2,width=0.4,color="red",URL="$Cloning_8h.html"];
+  Node3 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="ValueMapper.h",height=0.2,width=0.4,color="red",URL="$ValueMapper_8h.html"];
+  Node12 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="JITEmitter.cpp",height=0.2,width=0.4,color="black",URL="$JITEmitter_8cpp.html"];
+  Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="LinkAllVMCore.h",height=0.2,width=0.4,color="black",URL="$LinkAllVMCore_8h.html"];
+  Node2 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="MutexGuard.h",height=0.2,width=0.4,color="red",URL="$MutexGuard_8h.html"];
+  Node15 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="JIT.cpp",height=0.2,width=0.4,color="black",URL="$JIT_8cpp.html"];
+  Node15 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="OProfileWrapper.cpp",height=0.2,width=0.4,color="black",URL="$OProfileWrapper_8cpp.html"];
+  Node15 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="GDBRegistrar.cpp",height=0.2,width=0.4,color="black",URL="$GDBRegistrar_8cpp.html"];
+  Node2 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="PseudoSourceValue.cpp",height=0.2,width=0.4,color="black",URL="$PseudoSourceValue_8cpp.html"];
+  Node2 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="SelectionDAG.cpp",height=0.2,width=0.4,color="black",URL="$SelectionDAG_8cpp.html"];
+  Node2 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="ExternalFunctions.cpp",height=0.2,width=0.4,color="black",URL="$ExternalFunctions_8cpp.html"];
+  Node2 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="EDDisassembler.h",height=0.2,width=0.4,color="red",URL="$EDDisassembler_8h.html"];
+  Node2 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="CrashRecoveryContext.cpp",height=0.2,width=0.4,color="black",URL="$CrashRecoveryContext_8cpp.html"];
+  Node2 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="DynamicLibrary.cpp",height=0.2,width=0.4,color="black",URL="$DynamicLibrary_8cpp.html"];
+  Node2 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="Mutex.cpp",height=0.2,width=0.4,color="black",URL="$Mutex_8cpp.html"];
+  Node2 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="PluginLoader.cpp",height=0.2,width=0.4,color="black",URL="$PluginLoader_8cpp.html"];
+  Node2 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="Statistic.cpp",height=0.2,width=0.4,color="black",URL="$Statistic_8cpp.html"];
+  Node2 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="Threading.cpp",height=0.2,width=0.4,color="black",URL="$Threading_8cpp.html"];
+  Node2 -> Node29 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="Timer.cpp",height=0.2,width=0.4,color="black",URL="$Timer_8cpp.html"];
+  Node2 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="Attributes.cpp",height=0.2,width=0.4,color="black",URL="$Attributes_8cpp.html"];
+  Node2 -> Node31 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="DataLayout.cpp",height=0.2,width=0.4,color="black",URL="$DataLayout_8cpp.html"];
+  Node2 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="LeakDetector.cpp",height=0.2,width=0.4,color="black",URL="$LeakDetector_8cpp.html"];
+  Node2 -> Node33 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="PassManager.cpp",height=0.2,width=0.4,color="black",URL="$PassManager_8cpp.html"];
+  Node2 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="PassRegistry.cpp",height=0.2,width=0.4,color="black",URL="$PassRegistry_8cpp.html"];
+  Node1 -> Node35 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="ManagedStatic.h",height=0.2,width=0.4,color="black",URL="$ManagedStatic_8h.html"];
+  Node35 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node36 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="CommandLine.cpp",height=0.2,width=0.4,color="black",URL="$CommandLine_8cpp.html"];
+  Node35 -> Node37 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="ManagedStatic.cpp",height=0.2,width=0.4,color="black",URL="$ManagedStatic_8cpp.html"];
+  Node35 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node29 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node38 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="NVPTXUtilities.cpp",height=0.2,width=0.4,color="black",URL="$NVPTXUtilities_8cpp.html"];
+  Node35 -> Node39 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="PassManagerBuilder.cpp",height=0.2,width=0.4,color="black",URL="$PassManagerBuilder_8cpp.html"];
+  Node35 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node40 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="ConstantFold.cpp",height=0.2,width=0.4,color="black",URL="$ConstantFold_8cpp.html"];
+  Node35 -> Node41 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="Constants.cpp",height=0.2,width=0.4,color="black",URL="$Constants_8cpp.html"];
+  Node35 -> Node31 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node42 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="Function.cpp",height=0.2,width=0.4,color="black",URL="$Function_8cpp.html"];
+  Node35 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node43 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="LLVMContext.cpp",height=0.2,width=0.4,color="black",URL="$LLVMContext_8cpp.html"];
+  Node35 -> Node33 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node44 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="Value.cpp",height=0.2,width=0.4,color="black",URL="$Value_8cpp.html"];
+  Node1 -> Node45 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="RWMutex.h",height=0.2,width=0.4,color="black",URL="$RWMutex_8h.html"];
+  Node45 -> Node46 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="RWMutex.cpp",height=0.2,width=0.4,color="black",URL="$RWMutex_8cpp.html"];
+  Node45 -> Node42 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="ThreadLocal.h",height=0.2,width=0.4,color="black",URL="$ThreadLocal_8h.html"];
+  Node47 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node48 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="PrettyStackTrace.cpp",height=0.2,width=0.4,color="black",URL="$PrettyStackTrace_8cpp.html"];
+  Node47 -> Node49 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="ThreadLocal.cpp",height=0.2,width=0.4,color="black",URL="$ThreadLocal_8cpp.html"];
+  Node1 -> Node50 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="ErrorHandling.cpp",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8cpp.html"];
+  Node1 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node42 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Threading_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Threading_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Threading_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Threading_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,115 @@
+<!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: Threading.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_b423301f639fc46b24b2c9f122fcaff7.html">Support</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Threading.h</div>  </div>
+</div>
+<div class="contents">
+<a href="Threading_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/Support/Threading.h - Control multithreading mode --*- 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">// TThis file defines llvm_start_multithreaded() and friends.</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 LLVM_SYSTEM_THREADING_H</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_SYSTEM_THREADING_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span>
+<a name="l00017"></a>00017 <span class="keyword">namespace </span>llvm {<span class="comment"></span>
+<a name="l00018"></a>00018 <span class="comment">  /// llvm_start_multithreaded - Allocate and initialize structures needed to</span>
+<a name="l00019"></a>00019 <span class="comment">  /// make LLVM safe for multithreading.  The return value indicates whether</span>
+<a name="l00020"></a>00020 <span class="comment">  /// multithreaded initialization succeeded.  LLVM will still be operational</span>
+<a name="l00021"></a>00021 <span class="comment">  /// on "failed" return, and will still be safe for hosting threading</span>
+<a name="l00022"></a>00022 <span class="comment">  /// applications in the JIT, but will not be safe for concurrent calls to the</span>
+<a name="l00023"></a>00023 <span class="comment">  /// LLVM APIs.</span>
+<a name="l00024"></a>00024 <span class="comment">  /// THIS MUST EXECUTE IN ISOLATION FROM ALL OTHER LLVM API CALLS.</span>
+<a name="l00025"></a>00025 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#a9aac276a680a0ccf61524a86b24f0a4b">llvm_start_multithreaded</a>();
+<a name="l00026"></a>00026 <span class="comment"></span>
+<a name="l00027"></a>00027 <span class="comment">  /// llvm_stop_multithreaded - Deallocate structures necessary to make LLVM</span>
+<a name="l00028"></a>00028 <span class="comment">  /// safe for multithreading.</span>
+<a name="l00029"></a>00029 <span class="comment">  /// THIS MUST EXECUTE IN ISOLATION FROM ALL OTHER LLVM API CALLS.</span>
+<a name="l00030"></a>00030 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#a8be6e414c6c6f599d3c1f042d600ed02">llvm_stop_multithreaded</a>();
+<a name="l00031"></a>00031 <span class="comment"></span>
+<a name="l00032"></a>00032 <span class="comment">  /// llvm_is_multithreaded - Check whether LLVM is executing in thread-safe</span>
+<a name="l00033"></a>00033 <span class="comment">  /// mode or not.</span>
+<a name="l00034"></a>00034 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#ad9fa28d3ded252b16d095d326c6f6fc0">llvm_is_multithreaded</a>();
+<a name="l00035"></a>00035 <span class="comment"></span>
+<a name="l00036"></a>00036 <span class="comment">  /// acquire_global_lock - Acquire the global lock.  This is a no-op if called</span>
+<a name="l00037"></a>00037 <span class="comment">  /// before llvm_start_multithreaded().</span>
+<a name="l00038"></a>00038 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#a7afa222343ff52916dff01cc39e4dcac">llvm_acquire_global_lock</a>();
+<a name="l00039"></a>00039 <span class="comment"></span>
+<a name="l00040"></a>00040 <span class="comment">  /// release_global_lock - Release the global lock.  This is a no-op if called</span>
+<a name="l00041"></a>00041 <span class="comment">  /// before llvm_start_multithreaded().</span>
+<a name="l00042"></a>00042 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#a7626c1482eabfec37913610440361721">llvm_release_global_lock</a>();
+<a name="l00043"></a>00043 <span class="comment"></span>
+<a name="l00044"></a>00044 <span class="comment">  /// llvm_execute_on_thread - Execute the given \p UserFn on a separate</span>
+<a name="l00045"></a>00045 <span class="comment">  /// thread, passing it the provided \p UserData.</span>
+<a name="l00046"></a>00046 <span class="comment">  ///</span>
+<a name="l00047"></a>00047 <span class="comment">  /// This function does not guarantee that the code will actually be executed</span>
+<a name="l00048"></a>00048 <span class="comment">  /// on a separate thread or honoring the requested stack size, but tries to do</span>
+<a name="l00049"></a>00049 <span class="comment">  /// so where system support is available.</span>
+<a name="l00050"></a>00050 <span class="comment">  ///</span>
+<a name="l00051"></a>00051 <span class="comment">  /// \param UserFn - The callback to execute.</span>
+<a name="l00052"></a>00052 <span class="comment">  /// \param UserData - An argument to pass to the callback function.</span>
+<a name="l00053"></a>00053 <span class="comment">  /// \param RequestedStackSize - If non-zero, a requested size (in bytes) for</span>
+<a name="l00054"></a>00054 <span class="comment">  /// the thread stack.</span>
+<a name="l00055"></a>00055 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#ae9574280f82a0d2972d5f412a97d22e5">llvm_execute_on_thread</a>(<span class="keywordtype">void</span> (*UserFn)(<span class="keywordtype">void</span>*), <span class="keywordtype">void</span> *UserData,
+<a name="l00056"></a>00056                               <span class="keywordtype">unsigned</span> RequestedStackSize = 0);
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 
+<a name="l00059"></a>00059 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:38:57 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/Thumb1InstrInfo_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Thumb1InstrInfo_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Thumb1InstrInfo_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Thumb1InstrInfo_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,70 @@
+<!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: Thumb1InstrInfo.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_579de1806e7c3f5ec4b2837753e33796.html">ARM</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Thumb1InstrInfo.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Thumb1InstrInfo_8h_source.html">Thumb1InstrInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="ARM_8h_source.html">ARM.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="MachineInstrBuilder_8h_source.html">llvm/CodeGen/MachineInstrBuilder.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineRegisterInfo_8h_source.html">llvm/CodeGen/MachineRegisterInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineMemOperand_8h_source.html">llvm/CodeGen/MachineMemOperand.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCInst_8h_source.html">llvm/MC/MCInst.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Thumb1InstrInfo.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="Thumb1InstrInfo_8cpp__incl.png" border="0" usemap="#Thumb1InstrInfo_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="Thumb1InstrInfo_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:54 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/Thumb1InstrInfo_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Thumb1InstrInfo_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Thumb1InstrInfo_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Thumb1InstrInfo_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+a030d70518bb848be2fc05e310e58e3b
\ No newline at end of file

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Thumb1RegisterInfo_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Thumb1RegisterInfo_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Thumb1RegisterInfo_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Thumb1RegisterInfo_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,166 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="Thumb1RegisterInfo.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="Thumb1RegisterInfo.h",height=0.2,width=0.4,color="black",URL="$Thumb1RegisterInfo_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="ARM.h",height=0.2,width=0.4,color="black",URL="$ARM_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="MCTargetDesc/ARMBaseInfo.h",height=0.2,width=0.4,color="black",URL="$ARMBaseInfo_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="ARMMCTargetDesc.h",height=0.2,width=0.4,color="red",URL="$ARMMCTargetDesc_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="red",URL="$DataTypes_8h.html"];
+  Node5 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="ARMGenInstrInfo.inc",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="ARMGenSubtargetInfo.inc",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="red",URL="$ErrorHandling_8h.html"];
+  Node10 -> 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"];
+  Node10 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="llvm/Target/TargetMachine.h",height=0.2,width=0.4,color="red",URL="$Target_2TargetMachine_8h.html"];
+  Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node12 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="ARMBaseRegisterInfo.h",height=0.2,width=0.4,color="red",URL="$ARMBaseRegisterInfo_8h.html"];
+  Node14 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/Target/TargetRegisterInfo.h",height=0.2,width=0.4,color="red",URL="$TargetRegisterInfo_8h.html"];
+  Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="red",URL="$ArrayRef_8h.html"];
+  Node15 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node15 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="ARMBaseInstrInfo.h",height=0.2,width=0.4,color="black",URL="$ARMBaseInstrInfo_8h.html"];
+  Node18 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/CodeGen/MachineInstrBuilder.h",height=0.2,width=0.4,color="black",URL="$MachineInstrBuilder_8h.html"];
+  Node19 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/CodeGen/MachineFunction.h",height=0.2,width=0.4,color="red",URL="$MachineFunction_8h.html"];
+  Node19 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/Target/TargetInstrInfo.h",height=0.2,width=0.4,color="red",URL="$TargetInstrInfo_8h.html"];
+  Node21 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/ADT/SmallSet.h",height=0.2,width=0.4,color="red",URL="$SmallSet_8h.html"];
+  Node21 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node23 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="red",URL="$MathExtras_8h.html"];
+  Node23 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="ARMMachineFunctionInfo.h",height=0.2,width=0.4,color="black",URL="$ARMMachineFunctionInfo_8h.html"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="ARMSubtarget.h",height=0.2,width=0.4,color="black",URL="$ARMSubtarget_8h.html"];
+  Node26 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/Target/TargetSubtargetInfo.h",height=0.2,width=0.4,color="red",URL="$TargetSubtargetInfo_8h.html"];
+  Node26 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/MC/MCInstrItineraries.h",height=0.2,width=0.4,color="red",URL="$MCInstrItineraries_8h.html"];
+  Node26 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/ADT/Triple.h",height=0.2,width=0.4,color="red",URL="$Triple_8h.html"];
+  Node26 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/ADT/BitVector.h",height=0.2,width=0.4,color="red",URL="$BitVector_8h.html"];
+  Node30 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="MCTargetDesc/ARMAddressingModes.h",height=0.2,width=0.4,color="black",URL="$ARMAddressingModes_8h.html"];
+  Node31 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/ADT/APFloat.h",height=0.2,width=0.4,color="black",URL="$APFloat_8h.html"];
+  Node32 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/ADT/APInt.h",height=0.2,width=0.4,color="red",URL="$APInt_8h.html"];
+  Node33 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Constants.h",height=0.2,width=0.4,color="black",URL="$Constants_8h.html"];
+  Node34 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/Constant.h",height=0.2,width=0.4,color="red",URL="$Constant_8h.html"];
+  Node34 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/OperandTraits.h",height=0.2,width=0.4,color="red",URL="$OperandTraits_8h.html"];
+  Node34 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/DerivedTypes.h",height=0.2,width=0.4,color="black",URL="$DerivedTypes_8h.html"];
+  Node37 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/Type.h",height=0.2,width=0.4,color="red",URL="$Type_8h.html"];
+  Node38 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/Function.h",height=0.2,width=0.4,color="red",URL="$Function_8h.html"];
+  Node39 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/GlobalValue.h",height=0.2,width=0.4,color="black",URL="$GlobalValue_8h.html"];
+  Node40 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/BasicBlock.h",height=0.2,width=0.4,color="red",URL="$BasicBlock_8h.html"];
+  Node41 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/Argument.h",height=0.2,width=0.4,color="red",URL="$Argument_8h.html"];
+  Node39 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/LLVMContext.h",height=0.2,width=0.4,color="black",URL="$LLVMContext_8h.html"];
+  Node43 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/CodeGen/MachineConstantPool.h",height=0.2,width=0.4,color="red",URL="$MachineConstantPool_8h.html"];
+  Node44 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/CodeGen/MachineFrameInfo.h",height=0.2,width=0.4,color="red",URL="$MachineFrameInfo_8h.html"];
+  Node45 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/CodeGen/MachineRegisterInfo.h",height=0.2,width=0.4,color="red",URL="$MachineRegisterInfo_8h.html"];
+  Node46 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/CodeGen/RegisterScavenging.h",height=0.2,width=0.4,color="red",URL="$RegisterScavenging_8h.html"];
+  Node47 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Target/TargetFrameLowering.h",height=0.2,width=0.4,color="red",URL="$TargetFrameLowering_8h.html"];
+  Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/Support/CommandLine.h",height=0.2,width=0.4,color="red",URL="$CommandLine_8h.html"];
+  Node49 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="red",URL="$raw__ostream_8h.html"];
+  Node50 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Thumb2InstrInfo_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Thumb2InstrInfo_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Thumb2InstrInfo_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Thumb2InstrInfo_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,628 @@
+<!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: Thumb2InstrInfo.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_579de1806e7c3f5ec4b2837753e33796.html">ARM</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Thumb2InstrInfo.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="Thumb2InstrInfo_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- Thumb2InstrInfo.cpp - Thumb-2 Instruction 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 contains the Thumb-2 implementation of the TargetInstrInfo 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>00014 <span class="preprocessor">#include "<a class="code" href="Thumb2InstrInfo_8h.html">Thumb2InstrInfo.h</a>"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="ARM_8h.html">ARM.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="ARMConstantPoolValue_8h.html">ARMConstantPoolValue.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="ARMMachineFunctionInfo_8h.html">ARMMachineFunctionInfo.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="ARMAddressingModes_8h.html">MCTargetDesc/ARMAddressingModes.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="MachineFrameInfo_8h.html">llvm/CodeGen/MachineFrameInfo.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="MachineInstrBuilder_8h.html">llvm/CodeGen/MachineInstrBuilder.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="MachineMemOperand_8h.html">llvm/CodeGen/MachineMemOperand.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="MCInst_8h.html">llvm/MC/MCInst.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 
+<a name="l00025"></a>00025 <span class="keyword">using namespace </span>llvm;
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00028"></a>00028 <a class="code" href="Thumb2InstrInfo_8cpp.html#a55b657af4a070f688e43365c302f325f">OldT2IfCvt</a>(<span class="stringliteral">"old-thumb2-ifcvt"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00029"></a>00029            <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Use old-style Thumb2 if-conversion heuristics"</span>),
+<a name="l00030"></a>00030            <a class="code" href="namespacellvm_1_1cl.html#a10a041239ae1870cfcc064bfaa79fb65">cl::init</a>(<span class="keyword">false</span>));
+<a name="l00031"></a>00031 
+<a name="l00032"></a><a class="code" href="classllvm_1_1Thumb2InstrInfo.html#aa1902d86650dda33d140efdab7e03188">00032</a> <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#aa1902d86650dda33d140efdab7e03188">Thumb2InstrInfo::Thumb2InstrInfo</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1ARMSubtarget.html">ARMSubtarget</a> &STI)
+<a name="l00033"></a>00033   : <a class="code" href="classllvm_1_1ARMBaseInstrInfo.html">ARMBaseInstrInfo</a>(STI), RI(*this, STI) {
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035 <span class="comment"></span>
+<a name="l00036"></a>00036 <span class="comment">/// getNoopForMachoTarget - Return the noop instruction to use for a noop.</span>
+<a name="l00037"></a><a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a360ecc469788972a1b94939b8e72be6a">00037</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a360ecc469788972a1b94939b8e72be6a" title="getNoopForMachoTarget - Return the noop instruction to use for a noop.">Thumb2InstrInfo::getNoopForMachoTarget</a>(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &NopInst)<span class="keyword"> const </span>{
+<a name="l00038"></a>00038   NopInst.<a class="code" href="classllvm_1_1MCInst.html#ae844d6ff99f067e6672e004ed7613c24">setOpcode</a>(ARM::tNOP);
+<a name="l00039"></a>00039   NopInst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#ad26f3c85c2f3b28caa4e9a7522e0d7bd">MCOperand::CreateImm</a>(<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6a8b2ef77967dee1220cc6ee5aee595e11">ARMCC::AL</a>));
+<a name="l00040"></a>00040   NopInst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(0));
+<a name="l00041"></a>00041 }
+<a name="l00042"></a>00042 
+<a name="l00043"></a><a class="code" href="classllvm_1_1Thumb2InstrInfo.html#aa22c3099150c0bba2f930077e6af8f5d">00043</a> <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#aa22c3099150c0bba2f930077e6af8f5d">Thumb2InstrInfo::getUnindexedOpcode</a>(<span class="keywordtype">unsigned</span> Opc)<span class="keyword"> const </span>{
+<a name="l00044"></a>00044   <span class="comment">// FIXME</span>
+<a name="l00045"></a>00045   <span class="keywordflow">return</span> 0;
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048 <span class="keywordtype">void</span>
+<a name="l00049"></a><a class="code" href="classllvm_1_1Thumb2InstrInfo.html#ac89088c6e2603dd62865bc755981c01b">00049</a> <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#ac89088c6e2603dd62865bc755981c01b">Thumb2InstrInfo::ReplaceTailWithBranchTo</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> Tail,
+<a name="l00050"></a>00050                                          <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *NewDest)<span class="keyword"> const </span>{
+<a name="l00051"></a>00051   <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *MBB = Tail-><a class="code" href="classllvm_1_1MachineBasicBlock.html#af2e482ff2a9253ec6bc2285491496bd6">getParent</a>();
+<a name="l00052"></a>00052   <a class="code" href="classllvm_1_1ARMFunctionInfo.html">ARMFunctionInfo</a> *AFI = MBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#af2e482ff2a9253ec6bc2285491496bd6">getParent</a>()-><a class="code" href="classllvm_1_1MachineFunction.html#ac2dc0fa143c9f2127f0501734577a0a0">getInfo</a><<a class="code" href="classllvm_1_1ARMFunctionInfo.html">ARMFunctionInfo</a>>();
+<a name="l00053"></a>00053   <span class="keywordflow">if</span> (!AFI-><a class="code" href="classllvm_1_1ARMFunctionInfo.html#afa0716122dd8f073d8f29f6d23c617cf">hasITBlocks</a>()) {
+<a name="l00054"></a>00054     <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#ac89088c6e2603dd62865bc755981c01b">TargetInstrInfoImpl::ReplaceTailWithBranchTo</a>(Tail, NewDest);
+<a name="l00055"></a>00055     <span class="keywordflow">return</span>;
+<a name="l00056"></a>00056   }
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058   <span class="comment">// If the first instruction of Tail is predicated, we may have to update</span>
+<a name="l00059"></a>00059   <span class="comment">// the IT instruction.</span>
+<a name="l00060"></a>00060   <span class="keywordtype">unsigned</span> PredReg = 0;
+<a name="l00061"></a>00061   <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6">ARMCC::CondCodes</a> <a class="code" href="namespacellvm_1_1MBlazeCC.html#aba42d64ed60fd2a2e8045b6d7f26958d">CC</a> = <a class="code" href="namespacellvm.html#aee7a1f8a965c68c02b5628e9b261197e">getInstrPredicate</a>(Tail, PredReg);
+<a name="l00062"></a>00062   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> MBBI = Tail;
+<a name="l00063"></a>00063   <span class="keywordflow">if</span> (CC != <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6a8b2ef77967dee1220cc6ee5aee595e11">ARMCC::AL</a>)
+<a name="l00064"></a>00064     <span class="comment">// Expecting at least the t2IT instruction before it.</span>
+<a name="l00065"></a>00065     --MBBI;
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067   <span class="comment">// Actually replace the tail.</span>
+<a name="l00068"></a>00068   <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#ac89088c6e2603dd62865bc755981c01b">TargetInstrInfoImpl::ReplaceTailWithBranchTo</a>(Tail, NewDest);
+<a name="l00069"></a>00069 
+<a name="l00070"></a>00070   <span class="comment">// Fix up IT.</span>
+<a name="l00071"></a>00071   <span class="keywordflow">if</span> (CC != <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6a8b2ef77967dee1220cc6ee5aee595e11">ARMCC::AL</a>) {
+<a name="l00072"></a>00072     <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> E = MBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab2d91e7bec944efcbc39d8e30644f111">begin</a>();
+<a name="l00073"></a>00073     <span class="keywordtype">unsigned</span> Count = 4; <span class="comment">// At most 4 instructions in an IT block.</span>
+<a name="l00074"></a>00074     <span class="keywordflow">while</span> (Count && MBBI != E) {
+<a name="l00075"></a>00075       <span class="keywordflow">if</span> (MBBI->isDebugValue()) {
+<a name="l00076"></a>00076         --MBBI;
+<a name="l00077"></a>00077         <span class="keywordflow">continue</span>;
+<a name="l00078"></a>00078       }
+<a name="l00079"></a>00079       <span class="keywordflow">if</span> (MBBI->getOpcode() == ARM::t2IT) {
+<a name="l00080"></a>00080         <span class="keywordtype">unsigned</span> Mask = MBBI->getOperand(1).getImm();
+<a name="l00081"></a>00081         <span class="keywordflow">if</span> (Count == 4)
+<a name="l00082"></a>00082           MBBI->eraseFromParent();
+<a name="l00083"></a>00083         <span class="keywordflow">else</span> {
+<a name="l00084"></a>00084           <span class="keywordtype">unsigned</span> MaskOn = 1 << Count;
+<a name="l00085"></a>00085           <span class="keywordtype">unsigned</span> MaskOff = ~(MaskOn - 1);
+<a name="l00086"></a>00086           MBBI->getOperand(1).setImm((Mask & MaskOff) | MaskOn);
+<a name="l00087"></a>00087         }
+<a name="l00088"></a>00088         <span class="keywordflow">return</span>;
+<a name="l00089"></a>00089       }
+<a name="l00090"></a>00090       --MBBI;
+<a name="l00091"></a>00091       --Count;
+<a name="l00092"></a>00092     }
+<a name="l00093"></a>00093 
+<a name="l00094"></a>00094     <span class="comment">// Ctrl flow can reach here if branch folding is run before IT block</span>
+<a name="l00095"></a>00095     <span class="comment">// formation pass.</span>
+<a name="l00096"></a>00096   }
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098 
+<a name="l00099"></a>00099 <span class="keywordtype">bool</span>
+<a name="l00100"></a><a class="code" href="classllvm_1_1Thumb2InstrInfo.html#ac523eafb9a8cd6878170f07c48a2f15f">00100</a> <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#ac523eafb9a8cd6878170f07c48a2f15f">Thumb2InstrInfo::isLegalToSplitMBBAt</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> &MBB,
+<a name="l00101"></a>00101                                      <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> MBBI)<span class="keyword"> const </span>{
+<a name="l00102"></a>00102   <span class="keywordflow">while</span> (MBBI->isDebugValue()) {
+<a name="l00103"></a>00103     ++MBBI;
+<a name="l00104"></a>00104     <span class="keywordflow">if</span> (MBBI == MBB.<a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>())
+<a name="l00105"></a>00105       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00106"></a>00106   }
+<a name="l00107"></a>00107 
+<a name="l00108"></a>00108   <span class="keywordtype">unsigned</span> PredReg = 0;
+<a name="l00109"></a>00109   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a614cd1261ff9b62a08e078da82833912">getITInstrPredicate</a>(MBBI, PredReg) == <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6a8b2ef77967dee1220cc6ee5aee595e11">ARMCC::AL</a>;
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111 
+<a name="l00112"></a><a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a2aa3bf1e5c623e301e1a613521bc64b4">00112</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a2aa3bf1e5c623e301e1a613521bc64b4">Thumb2InstrInfo::copyPhysReg</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> &MBB,
+<a name="l00113"></a>00113                                   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>, <a class="code" href="classllvm_1_1DebugLoc.html">DebugLoc</a> DL,
+<a name="l00114"></a>00114                                   <span class="keywordtype">unsigned</span> DestReg, <span class="keywordtype">unsigned</span> SrcReg,
+<a name="l00115"></a>00115                                   <span class="keywordtype">bool</span> KillSrc)<span class="keyword"> const </span>{
+<a name="l00116"></a>00116   <span class="comment">// Handle SPR, DPR, and QPR copies.</span>
+<a name="l00117"></a>00117   <span class="keywordflow">if</span> (!ARM::GPRRegClass.contains(DestReg, SrcReg))
+<a name="l00118"></a>00118     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a2aa3bf1e5c623e301e1a613521bc64b4">ARMBaseInstrInfo::copyPhysReg</a>(MBB, I, DL, DestReg, SrcReg, KillSrc);
+<a name="l00119"></a>00119 
+<a name="l00120"></a>00120   <a class="code" href="namespacellvm.html#abf7336821a22d9da733af010b2f39089">AddDefaultPred</a>(<a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(MBB, I, DL, <span class="keyword">get</span>(ARM::tMOVr), DestReg)
+<a name="l00121"></a>00121     .addReg(SrcReg, <a class="code" href="namespacellvm.html#aac57d4100e9a9d02522fbd724568397d">getKillRegState</a>(KillSrc)));
+<a name="l00122"></a>00122 }
+<a name="l00123"></a>00123 
+<a name="l00124"></a>00124 <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a9888dcaaed853b610b6482c897e2fd8b">Thumb2InstrInfo::</a>
+<a name="l00125"></a><a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a9888dcaaed853b610b6482c897e2fd8b">00125</a> <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a9888dcaaed853b610b6482c897e2fd8b">storeRegToStackSlot</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> &MBB, <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>,
+<a name="l00126"></a>00126                     <span class="keywordtype">unsigned</span> SrcReg, <span class="keywordtype">bool</span> isKill, <span class="keywordtype">int</span> FI,
+<a name="l00127"></a>00127                     <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterClass.html">TargetRegisterClass</a> *RC,
+<a name="l00128"></a>00128                     <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a> *TRI)<span class="keyword"> const </span>{
+<a name="l00129"></a>00129   <span class="keywordflow">if</span> (RC == &ARM::GPRRegClass   || RC == &ARM::tGPRRegClass ||
+<a name="l00130"></a>00130       RC == &ARM::tcGPRRegClass || RC == &ARM::rGPRRegClass ||
+<a name="l00131"></a>00131       RC == &ARM::GPRnopcRegClass) {
+<a name="l00132"></a>00132     <a class="code" href="classllvm_1_1DebugLoc.html">DebugLoc</a> DL;
+<a name="l00133"></a>00133     <span class="keywordflow">if</span> (I != MBB.<a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>()) DL = I->getDebugLoc();
+<a name="l00134"></a>00134 
+<a name="l00135"></a>00135     <a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a> &MF = *MBB.<a class="code" href="classllvm_1_1MachineBasicBlock.html#af2e482ff2a9253ec6bc2285491496bd6">getParent</a>();
+<a name="l00136"></a>00136     <a class="code" href="classllvm_1_1MachineFrameInfo.html" title="Abstract Stack Frame Information.">MachineFrameInfo</a> &MFI = *MF.<a class="code" href="classllvm_1_1MachineFunction.html#a4ad4295a88187ea1ae12ecfcfa18a70f">getFrameInfo</a>();
+<a name="l00137"></a>00137     <a class="code" href="classllvm_1_1MachineMemOperand.html">MachineMemOperand</a> *MMO =
+<a name="l00138"></a>00138       MF.<a class="code" href="classllvm_1_1MachineFunction.html#aac36edc9860bf2e7660f86928836fc63">getMachineMemOperand</a>(<a class="code" href="structllvm_1_1MachinePointerInfo.html#acb492206d94d8f8179f797d4c7966ba9">MachinePointerInfo::getFixedStack</a>(FI),
+<a name="l00139"></a>00139                               <a class="code" href="classllvm_1_1MachineMemOperand.html#a120d548151541463831d22519eb9b82faed357b1367bc90a56fefa4d1b0e17374" title="The memory access writes data.">MachineMemOperand::MOStore</a>,
+<a name="l00140"></a>00140                               MFI.<a class="code" href="classllvm_1_1MachineFrameInfo.html#a43386af65581b8de506f3b57ba6c05b0">getObjectSize</a>(FI),
+<a name="l00141"></a>00141                               MFI.<a class="code" href="classllvm_1_1MachineFrameInfo.html#ae146d6827dae2ff77fc65b7fd319dbb8" title="getObjectAlignment - Return the alignment of the specified stack object.">getObjectAlignment</a>(FI));
+<a name="l00142"></a>00142     <a class="code" href="namespacellvm.html#abf7336821a22d9da733af010b2f39089">AddDefaultPred</a>(<a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(MBB, I, DL, <span class="keyword">get</span>(ARM::t2STRi12))
+<a name="l00143"></a>00143                    .addReg(SrcReg, <a class="code" href="namespacellvm.html#aac57d4100e9a9d02522fbd724568397d">getKillRegState</a>(isKill))
+<a name="l00144"></a>00144                    .addFrameIndex(FI).addImm(0).addMemOperand(MMO));
+<a name="l00145"></a>00145     <span class="keywordflow">return</span>;
+<a name="l00146"></a>00146   }
+<a name="l00147"></a>00147 
+<a name="l00148"></a>00148   <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a9888dcaaed853b610b6482c897e2fd8b">ARMBaseInstrInfo::storeRegToStackSlot</a>(MBB, I, SrcReg, isKill, FI, RC, TRI);
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150 
+<a name="l00151"></a>00151 <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a14b353a9a1740c0e51a0ad9e36285db9">Thumb2InstrInfo::</a>
+<a name="l00152"></a><a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a14b353a9a1740c0e51a0ad9e36285db9">00152</a> <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a14b353a9a1740c0e51a0ad9e36285db9">loadRegFromStackSlot</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> &MBB, <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>,
+<a name="l00153"></a>00153                      <span class="keywordtype">unsigned</span> DestReg, <span class="keywordtype">int</span> FI,
+<a name="l00154"></a>00154                      <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterClass.html">TargetRegisterClass</a> *RC,
+<a name="l00155"></a>00155                      <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a> *TRI)<span class="keyword"> const </span>{
+<a name="l00156"></a>00156   <span class="keywordflow">if</span> (RC == &ARM::GPRRegClass   || RC == &ARM::tGPRRegClass ||
+<a name="l00157"></a>00157       RC == &ARM::tcGPRRegClass || RC == &ARM::rGPRRegClass ||
+<a name="l00158"></a>00158       RC == &ARM::GPRnopcRegClass) {
+<a name="l00159"></a>00159     <a class="code" href="classllvm_1_1DebugLoc.html">DebugLoc</a> DL;
+<a name="l00160"></a>00160     <span class="keywordflow">if</span> (I != MBB.<a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>()) DL = I->getDebugLoc();
+<a name="l00161"></a>00161 
+<a name="l00162"></a>00162     <a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a> &MF = *MBB.<a class="code" href="classllvm_1_1MachineBasicBlock.html#af2e482ff2a9253ec6bc2285491496bd6">getParent</a>();
+<a name="l00163"></a>00163     <a class="code" href="classllvm_1_1MachineFrameInfo.html" title="Abstract Stack Frame Information.">MachineFrameInfo</a> &MFI = *MF.<a class="code" href="classllvm_1_1MachineFunction.html#a4ad4295a88187ea1ae12ecfcfa18a70f">getFrameInfo</a>();
+<a name="l00164"></a>00164     <a class="code" href="classllvm_1_1MachineMemOperand.html">MachineMemOperand</a> *MMO =
+<a name="l00165"></a>00165       MF.<a class="code" href="classllvm_1_1MachineFunction.html#aac36edc9860bf2e7660f86928836fc63">getMachineMemOperand</a>(<a class="code" href="structllvm_1_1MachinePointerInfo.html#acb492206d94d8f8179f797d4c7966ba9">MachinePointerInfo::getFixedStack</a>(FI),
+<a name="l00166"></a>00166                               <a class="code" href="classllvm_1_1MachineMemOperand.html#a120d548151541463831d22519eb9b82fa7d12be6206e5b0026c71bbcd5cb76494" title="The memory access reads data.">MachineMemOperand::MOLoad</a>,
+<a name="l00167"></a>00167                               MFI.<a class="code" href="classllvm_1_1MachineFrameInfo.html#a43386af65581b8de506f3b57ba6c05b0">getObjectSize</a>(FI),
+<a name="l00168"></a>00168                               MFI.<a class="code" href="classllvm_1_1MachineFrameInfo.html#ae146d6827dae2ff77fc65b7fd319dbb8" title="getObjectAlignment - Return the alignment of the specified stack object.">getObjectAlignment</a>(FI));
+<a name="l00169"></a>00169     <a class="code" href="namespacellvm.html#abf7336821a22d9da733af010b2f39089">AddDefaultPred</a>(<a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(MBB, I, DL, <span class="keyword">get</span>(ARM::t2LDRi12), DestReg)
+<a name="l00170"></a>00170                    .addFrameIndex(FI).addImm(0).addMemOperand(MMO));
+<a name="l00171"></a>00171     <span class="keywordflow">return</span>;
+<a name="l00172"></a>00172   }
+<a name="l00173"></a>00173 
+<a name="l00174"></a>00174   <a class="code" href="classllvm_1_1Thumb2InstrInfo.html#a14b353a9a1740c0e51a0ad9e36285db9">ARMBaseInstrInfo::loadRegFromStackSlot</a>(MBB, I, DestReg, FI, RC, TRI);
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176 
+<a name="l00177"></a>00177 <span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#ae59f84da43ddc1b247716625b3b31dfb">llvm::emitT2RegPlusImmediate</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> &MBB,
+<a name="l00178"></a>00178                                <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &MBBI, <a class="code" href="classllvm_1_1DebugLoc.html">DebugLoc</a> dl,
+<a name="l00179"></a>00179                                <span class="keywordtype">unsigned</span> DestReg, <span class="keywordtype">unsigned</span> BaseReg, <span class="keywordtype">int</span> NumBytes,
+<a name="l00180"></a>00180                                <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6">ARMCC::CondCodes</a> Pred, <span class="keywordtype">unsigned</span> PredReg,
+<a name="l00181"></a>00181                                <span class="keyword">const</span> <a class="code" href="classllvm_1_1ARMBaseInstrInfo.html">ARMBaseInstrInfo</a> &TII, <span class="keywordtype">unsigned</span> MIFlags) {
+<a name="l00182"></a>00182   <span class="keywordtype">bool</span> isSub = NumBytes < 0;
+<a name="l00183"></a>00183   <span class="keywordflow">if</span> (isSub) NumBytes = -NumBytes;
+<a name="l00184"></a>00184 
+<a name="l00185"></a>00185   <span class="comment">// If profitable, use a movw or movt to materialize the offset.</span>
+<a name="l00186"></a>00186   <span class="comment">// FIXME: Use the scavenger to grab a scratch register.</span>
+<a name="l00187"></a>00187   <span class="keywordflow">if</span> (DestReg != ARM::SP && DestReg != BaseReg &&
+<a name="l00188"></a>00188       NumBytes >= 4096 &&
+<a name="l00189"></a>00189       <a class="code" href="namespacellvm_1_1ARM__AM.html#a70b6f0b420385853a70713cb288c3292">ARM_AM::getT2SOImmVal</a>(NumBytes) == -1) {
+<a name="l00190"></a>00190     <span class="keywordtype">bool</span> Fits = <span class="keyword">false</span>;
+<a name="l00191"></a>00191     <span class="keywordflow">if</span> (NumBytes < 65536) {
+<a name="l00192"></a>00192       <span class="comment">// Use a movw to materialize the 16-bit constant.</span>
+<a name="l00193"></a>00193       <a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(MBB, MBBI, dl, TII.get(ARM::t2MOVi16), DestReg)
+<a name="l00194"></a>00194         .addImm(NumBytes)
+<a name="l00195"></a>00195         .<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a9f1fae6a5dbb6e378ca85df1fded8515">addImm</a>((<span class="keywordtype">unsigned</span>)Pred).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a5125cce72b214df09ca8f93dcbbf4c3a">addReg</a>(PredReg).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#aabc17a35420fd0015b8cc5e6e51112fc">setMIFlags</a>(MIFlags);
+<a name="l00196"></a>00196       Fits = <span class="keyword">true</span>;
+<a name="l00197"></a>00197     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((NumBytes & 0xffff) == 0) {
+<a name="l00198"></a>00198       <span class="comment">// Use a movt to materialize the 32-bit constant.</span>
+<a name="l00199"></a>00199       <a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(MBB, MBBI, dl, TII.get(ARM::t2MOVTi16), DestReg)
+<a name="l00200"></a>00200         .addReg(DestReg)
+<a name="l00201"></a>00201         .<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a9f1fae6a5dbb6e378ca85df1fded8515">addImm</a>(NumBytes >> 16)
+<a name="l00202"></a>00202         .<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a9f1fae6a5dbb6e378ca85df1fded8515">addImm</a>((<span class="keywordtype">unsigned</span>)Pred).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a5125cce72b214df09ca8f93dcbbf4c3a">addReg</a>(PredReg).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#aabc17a35420fd0015b8cc5e6e51112fc">setMIFlags</a>(MIFlags);
+<a name="l00203"></a>00203       Fits = <span class="keyword">true</span>;
+<a name="l00204"></a>00204     }
+<a name="l00205"></a>00205 
+<a name="l00206"></a>00206     <span class="keywordflow">if</span> (Fits) {
+<a name="l00207"></a>00207       <span class="keywordflow">if</span> (isSub) {
+<a name="l00208"></a>00208         <a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(MBB, MBBI, dl, TII.get(ARM::t2SUBrr), DestReg)
+<a name="l00209"></a>00209           .addReg(BaseReg, <a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa9ddde91ef09476d28a088fe57f8e2921">RegState::Kill</a>)
+<a name="l00210"></a>00210           .<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a5125cce72b214df09ca8f93dcbbf4c3a">addReg</a>(DestReg, <a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa9ddde91ef09476d28a088fe57f8e2921">RegState::Kill</a>)
+<a name="l00211"></a>00211           .<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a9f1fae6a5dbb6e378ca85df1fded8515">addImm</a>((<span class="keywordtype">unsigned</span>)Pred).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a5125cce72b214df09ca8f93dcbbf4c3a">addReg</a>(PredReg).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a5125cce72b214df09ca8f93dcbbf4c3a">addReg</a>(0)
+<a name="l00212"></a>00212           .<a class="code" href="classllvm_1_1MachineInstrBuilder.html#aabc17a35420fd0015b8cc5e6e51112fc">setMIFlags</a>(MIFlags);
+<a name="l00213"></a>00213       } <span class="keywordflow">else</span> {
+<a name="l00214"></a>00214         <a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(MBB, MBBI, dl, TII.get(ARM::t2ADDrr), DestReg)
+<a name="l00215"></a>00215           .addReg(DestReg, <a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa9ddde91ef09476d28a088fe57f8e2921">RegState::Kill</a>)
+<a name="l00216"></a>00216           .<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a5125cce72b214df09ca8f93dcbbf4c3a">addReg</a>(BaseReg, <a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa9ddde91ef09476d28a088fe57f8e2921">RegState::Kill</a>)
+<a name="l00217"></a>00217           .<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a9f1fae6a5dbb6e378ca85df1fded8515">addImm</a>((<span class="keywordtype">unsigned</span>)Pred).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a5125cce72b214df09ca8f93dcbbf4c3a">addReg</a>(PredReg).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a5125cce72b214df09ca8f93dcbbf4c3a">addReg</a>(0)
+<a name="l00218"></a>00218           .<a class="code" href="classllvm_1_1MachineInstrBuilder.html#aabc17a35420fd0015b8cc5e6e51112fc">setMIFlags</a>(MIFlags);
+<a name="l00219"></a>00219       }
+<a name="l00220"></a>00220       <span class="keywordflow">return</span>;
+<a name="l00221"></a>00221     }
+<a name="l00222"></a>00222   }
+<a name="l00223"></a>00223 
+<a name="l00224"></a>00224   <span class="keywordflow">while</span> (NumBytes) {
+<a name="l00225"></a>00225     <span class="keywordtype">unsigned</span> ThisVal = NumBytes;
+<a name="l00226"></a>00226     <span class="keywordtype">unsigned</span> Opc = 0;
+<a name="l00227"></a>00227     <span class="keywordflow">if</span> (DestReg == ARM::SP && BaseReg != ARM::SP) {
+<a name="l00228"></a>00228       <span class="comment">// mov sp, rn. Note t2MOVr cannot be used.</span>
+<a name="l00229"></a>00229       <a class="code" href="namespacellvm.html#abf7336821a22d9da733af010b2f39089">AddDefaultPred</a>(<a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(MBB, MBBI, dl, TII.get(ARM::tMOVr),DestReg)
+<a name="l00230"></a>00230         .addReg(BaseReg).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#aabc17a35420fd0015b8cc5e6e51112fc">setMIFlags</a>(MIFlags));
+<a name="l00231"></a>00231       BaseReg = ARM::SP;
+<a name="l00232"></a>00232       <span class="keywordflow">continue</span>;
+<a name="l00233"></a>00233     }
+<a name="l00234"></a>00234 
+<a name="l00235"></a>00235     <span class="keywordtype">bool</span> HasCCOut = <span class="keyword">true</span>;
+<a name="l00236"></a>00236     <span class="keywordflow">if</span> (BaseReg == ARM::SP) {
+<a name="l00237"></a>00237       <span class="comment">// sub sp, sp, #imm7</span>
+<a name="l00238"></a>00238       <span class="keywordflow">if</span> (DestReg == ARM::SP && (ThisVal < ((1 << 7)-1) * 4)) {
+<a name="l00239"></a>00239         assert((ThisVal & 3) == 0 && <span class="stringliteral">"Stack update is not multiple of 4?"</span>);
+<a name="l00240"></a>00240         Opc = isSub ? ARM::tSUBspi : ARM::tADDspi;
+<a name="l00241"></a>00241         <a class="code" href="namespacellvm.html#abf7336821a22d9da733af010b2f39089">AddDefaultPred</a>(<a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(MBB, MBBI, dl, TII.get(Opc), DestReg)
+<a name="l00242"></a>00242           .addReg(BaseReg).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a9f1fae6a5dbb6e378ca85df1fded8515">addImm</a>(ThisVal/4).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#aabc17a35420fd0015b8cc5e6e51112fc">setMIFlags</a>(MIFlags));
+<a name="l00243"></a>00243         NumBytes = 0;
+<a name="l00244"></a>00244         <span class="keywordflow">continue</span>;
+<a name="l00245"></a>00245       }
+<a name="l00246"></a>00246 
+<a name="l00247"></a>00247       <span class="comment">// sub rd, sp, so_imm</span>
+<a name="l00248"></a>00248       Opc = isSub ? ARM::t2SUBri : ARM::t2ADDri;
+<a name="l00249"></a>00249       <span class="keywordflow">if</span> (<a class="code" href="namespacellvm_1_1ARM__AM.html#a70b6f0b420385853a70713cb288c3292">ARM_AM::getT2SOImmVal</a>(NumBytes) != -1) {
+<a name="l00250"></a>00250         NumBytes = 0;
+<a name="l00251"></a>00251       } <span class="keywordflow">else</span> {
+<a name="l00252"></a>00252         <span class="comment">// FIXME: Move this to ARMAddressingModes.h?</span>
+<a name="l00253"></a>00253         <span class="keywordtype">unsigned</span> RotAmt = <a class="code" href="namespacellvm.html#ad49c0b18ebe7aaea47cb5ff7396ec953">CountLeadingZeros_32</a>(ThisVal);
+<a name="l00254"></a>00254         ThisVal = ThisVal & <a class="code" href="namespacellvm_1_1ARM__AM.html#a6d968947f2037095847dd5721335f6a6">ARM_AM::rotr32</a>(0xff000000U, RotAmt);
+<a name="l00255"></a>00255         NumBytes &= ~ThisVal;
+<a name="l00256"></a>00256         assert(<a class="code" href="namespacellvm_1_1ARM__AM.html#a70b6f0b420385853a70713cb288c3292">ARM_AM::getT2SOImmVal</a>(ThisVal) != -1 &&
+<a name="l00257"></a>00257                <span class="stringliteral">"Bit extraction didn't work?"</span>);
+<a name="l00258"></a>00258       }
+<a name="l00259"></a>00259     } <span class="keywordflow">else</span> {
+<a name="l00260"></a>00260       assert(DestReg != ARM::SP && BaseReg != ARM::SP);
+<a name="l00261"></a>00261       Opc = isSub ? ARM::t2SUBri : ARM::t2ADDri;
+<a name="l00262"></a>00262       <span class="keywordflow">if</span> (<a class="code" href="namespacellvm_1_1ARM__AM.html#a70b6f0b420385853a70713cb288c3292">ARM_AM::getT2SOImmVal</a>(NumBytes) != -1) {
+<a name="l00263"></a>00263         NumBytes = 0;
+<a name="l00264"></a>00264       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ThisVal < 4096) {
+<a name="l00265"></a>00265         Opc = isSub ? ARM::t2SUBri12 : ARM::t2ADDri12;
+<a name="l00266"></a>00266         HasCCOut = <span class="keyword">false</span>;
+<a name="l00267"></a>00267         NumBytes = 0;
+<a name="l00268"></a>00268       } <span class="keywordflow">else</span> {
+<a name="l00269"></a>00269         <span class="comment">// FIXME: Move this to ARMAddressingModes.h?</span>
+<a name="l00270"></a>00270         <span class="keywordtype">unsigned</span> RotAmt = <a class="code" href="namespacellvm.html#ad49c0b18ebe7aaea47cb5ff7396ec953">CountLeadingZeros_32</a>(ThisVal);
+<a name="l00271"></a>00271         ThisVal = ThisVal & <a class="code" href="namespacellvm_1_1ARM__AM.html#a6d968947f2037095847dd5721335f6a6">ARM_AM::rotr32</a>(0xff000000U, RotAmt);
+<a name="l00272"></a>00272         NumBytes &= ~ThisVal;
+<a name="l00273"></a>00273         assert(<a class="code" href="namespacellvm_1_1ARM__AM.html#a70b6f0b420385853a70713cb288c3292">ARM_AM::getT2SOImmVal</a>(ThisVal) != -1 &&
+<a name="l00274"></a>00274                <span class="stringliteral">"Bit extraction didn't work?"</span>);
+<a name="l00275"></a>00275       }
+<a name="l00276"></a>00276     }
+<a name="l00277"></a>00277 
+<a name="l00278"></a>00278     <span class="comment">// Build the new ADD / SUB.</span>
+<a name="l00279"></a>00279     <a class="code" href="classllvm_1_1MachineInstrBuilder.html">MachineInstrBuilder</a> MIB =
+<a name="l00280"></a>00280       <a class="code" href="namespacellvm.html#abf7336821a22d9da733af010b2f39089">AddDefaultPred</a>(<a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(MBB, MBBI, dl, TII.get(Opc), DestReg)
+<a name="l00281"></a>00281                      .addReg(BaseReg, <a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa9ddde91ef09476d28a088fe57f8e2921">RegState::Kill</a>)
+<a name="l00282"></a>00282                      .<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a9f1fae6a5dbb6e378ca85df1fded8515">addImm</a>(ThisVal)).setMIFlags(MIFlags);
+<a name="l00283"></a>00283     <span class="keywordflow">if</span> (HasCCOut)
+<a name="l00284"></a>00284       <a class="code" href="namespacellvm.html#a8b9edb9ece6ca4b10c73ae93a487c600">AddDefaultCC</a>(MIB);
+<a name="l00285"></a>00285 
+<a name="l00286"></a>00286     BaseReg = DestReg;
+<a name="l00287"></a>00287   }
+<a name="l00288"></a>00288 }
+<a name="l00289"></a>00289 
+<a name="l00290"></a>00290 <span class="keyword">static</span> <span class="keywordtype">unsigned</span>
+<a name="l00291"></a><a class="code" href="Thumb2InstrInfo_8cpp.html#a6fb01b809d94239b330bfada484d3521">00291</a> <a class="code" href="Thumb2InstrInfo_8cpp.html#a6fb01b809d94239b330bfada484d3521">negativeOffsetOpcode</a>(<span class="keywordtype">unsigned</span> opcode)
+<a name="l00292"></a>00292 {
+<a name="l00293"></a>00293   <span class="keywordflow">switch</span> (opcode) {
+<a name="l00294"></a>00294   <span class="keywordflow">case</span> ARM::t2LDRi12:   <span class="keywordflow">return</span> ARM::t2LDRi8;
+<a name="l00295"></a>00295   <span class="keywordflow">case</span> ARM::t2LDRHi12:  <span class="keywordflow">return</span> ARM::t2LDRHi8;
+<a name="l00296"></a>00296   <span class="keywordflow">case</span> ARM::t2LDRBi12:  <span class="keywordflow">return</span> ARM::t2LDRBi8;
+<a name="l00297"></a>00297   <span class="keywordflow">case</span> ARM::t2LDRSHi12: <span class="keywordflow">return</span> ARM::t2LDRSHi8;
+<a name="l00298"></a>00298   <span class="keywordflow">case</span> ARM::t2LDRSBi12: <span class="keywordflow">return</span> ARM::t2LDRSBi8;
+<a name="l00299"></a>00299   <span class="keywordflow">case</span> ARM::t2STRi12:   <span class="keywordflow">return</span> ARM::t2STRi8;
+<a name="l00300"></a>00300   <span class="keywordflow">case</span> ARM::t2STRBi12:  <span class="keywordflow">return</span> ARM::t2STRBi8;
+<a name="l00301"></a>00301   <span class="keywordflow">case</span> ARM::t2STRHi12:  <span class="keywordflow">return</span> ARM::t2STRHi8;
+<a name="l00302"></a>00302 
+<a name="l00303"></a>00303   <span class="keywordflow">case</span> ARM::t2LDRi8:
+<a name="l00304"></a>00304   <span class="keywordflow">case</span> ARM::t2LDRHi8:
+<a name="l00305"></a>00305   <span class="keywordflow">case</span> ARM::t2LDRBi8:
+<a name="l00306"></a>00306   <span class="keywordflow">case</span> ARM::t2LDRSHi8:
+<a name="l00307"></a>00307   <span class="keywordflow">case</span> ARM::t2LDRSBi8:
+<a name="l00308"></a>00308   <span class="keywordflow">case</span> ARM::t2STRi8:
+<a name="l00309"></a>00309   <span class="keywordflow">case</span> ARM::t2STRBi8:
+<a name="l00310"></a>00310   <span class="keywordflow">case</span> ARM::t2STRHi8:
+<a name="l00311"></a>00311     <span class="keywordflow">return</span> opcode;
+<a name="l00312"></a>00312 
+<a name="l00313"></a>00313   <span class="keywordflow">default</span>:
+<a name="l00314"></a>00314     <span class="keywordflow">break</span>;
+<a name="l00315"></a>00315   }
+<a name="l00316"></a>00316 
+<a name="l00317"></a>00317   <span class="keywordflow">return</span> 0;
+<a name="l00318"></a>00318 }
+<a name="l00319"></a>00319 
+<a name="l00320"></a>00320 <span class="keyword">static</span> <span class="keywordtype">unsigned</span>
+<a name="l00321"></a><a class="code" href="Thumb2InstrInfo_8cpp.html#a803c53df7d127b52de6d827c5519d98a">00321</a> <a class="code" href="Thumb2InstrInfo_8cpp.html#a803c53df7d127b52de6d827c5519d98a">positiveOffsetOpcode</a>(<span class="keywordtype">unsigned</span> opcode)
+<a name="l00322"></a>00322 {
+<a name="l00323"></a>00323   <span class="keywordflow">switch</span> (opcode) {
+<a name="l00324"></a>00324   <span class="keywordflow">case</span> ARM::t2LDRi8:   <span class="keywordflow">return</span> ARM::t2LDRi12;
+<a name="l00325"></a>00325   <span class="keywordflow">case</span> ARM::t2LDRHi8:  <span class="keywordflow">return</span> ARM::t2LDRHi12;
+<a name="l00326"></a>00326   <span class="keywordflow">case</span> ARM::t2LDRBi8:  <span class="keywordflow">return</span> ARM::t2LDRBi12;
+<a name="l00327"></a>00327   <span class="keywordflow">case</span> ARM::t2LDRSHi8: <span class="keywordflow">return</span> ARM::t2LDRSHi12;
+<a name="l00328"></a>00328   <span class="keywordflow">case</span> ARM::t2LDRSBi8: <span class="keywordflow">return</span> ARM::t2LDRSBi12;
+<a name="l00329"></a>00329   <span class="keywordflow">case</span> ARM::t2STRi8:   <span class="keywordflow">return</span> ARM::t2STRi12;
+<a name="l00330"></a>00330   <span class="keywordflow">case</span> ARM::t2STRBi8:  <span class="keywordflow">return</span> ARM::t2STRBi12;
+<a name="l00331"></a>00331   <span class="keywordflow">case</span> ARM::t2STRHi8:  <span class="keywordflow">return</span> ARM::t2STRHi12;
+<a name="l00332"></a>00332 
+<a name="l00333"></a>00333   <span class="keywordflow">case</span> ARM::t2LDRi12:
+<a name="l00334"></a>00334   <span class="keywordflow">case</span> ARM::t2LDRHi12:
+<a name="l00335"></a>00335   <span class="keywordflow">case</span> ARM::t2LDRBi12:
+<a name="l00336"></a>00336   <span class="keywordflow">case</span> ARM::t2LDRSHi12:
+<a name="l00337"></a>00337   <span class="keywordflow">case</span> ARM::t2LDRSBi12:
+<a name="l00338"></a>00338   <span class="keywordflow">case</span> ARM::t2STRi12:
+<a name="l00339"></a>00339   <span class="keywordflow">case</span> ARM::t2STRBi12:
+<a name="l00340"></a>00340   <span class="keywordflow">case</span> ARM::t2STRHi12:
+<a name="l00341"></a>00341     <span class="keywordflow">return</span> opcode;
+<a name="l00342"></a>00342 
+<a name="l00343"></a>00343   <span class="keywordflow">default</span>:
+<a name="l00344"></a>00344     <span class="keywordflow">break</span>;
+<a name="l00345"></a>00345   }
+<a name="l00346"></a>00346 
+<a name="l00347"></a>00347   <span class="keywordflow">return</span> 0;
+<a name="l00348"></a>00348 }
+<a name="l00349"></a>00349 
+<a name="l00350"></a>00350 <span class="keyword">static</span> <span class="keywordtype">unsigned</span>
+<a name="l00351"></a><a class="code" href="Thumb2InstrInfo_8cpp.html#add6aafb2c170f72f2459f5d92cc415f0">00351</a> <a class="code" href="Thumb2InstrInfo_8cpp.html#add6aafb2c170f72f2459f5d92cc415f0">immediateOffsetOpcode</a>(<span class="keywordtype">unsigned</span> opcode)
+<a name="l00352"></a>00352 {
+<a name="l00353"></a>00353   <span class="keywordflow">switch</span> (opcode) {
+<a name="l00354"></a>00354   <span class="keywordflow">case</span> ARM::t2LDRs:   <span class="keywordflow">return</span> ARM::t2LDRi12;
+<a name="l00355"></a>00355   <span class="keywordflow">case</span> ARM::t2LDRHs:  <span class="keywordflow">return</span> ARM::t2LDRHi12;
+<a name="l00356"></a>00356   <span class="keywordflow">case</span> ARM::t2LDRBs:  <span class="keywordflow">return</span> ARM::t2LDRBi12;
+<a name="l00357"></a>00357   <span class="keywordflow">case</span> ARM::t2LDRSHs: <span class="keywordflow">return</span> ARM::t2LDRSHi12;
+<a name="l00358"></a>00358   <span class="keywordflow">case</span> ARM::t2LDRSBs: <span class="keywordflow">return</span> ARM::t2LDRSBi12;
+<a name="l00359"></a>00359   <span class="keywordflow">case</span> ARM::t2STRs:   <span class="keywordflow">return</span> ARM::t2STRi12;
+<a name="l00360"></a>00360   <span class="keywordflow">case</span> ARM::t2STRBs:  <span class="keywordflow">return</span> ARM::t2STRBi12;
+<a name="l00361"></a>00361   <span class="keywordflow">case</span> ARM::t2STRHs:  <span class="keywordflow">return</span> ARM::t2STRHi12;
+<a name="l00362"></a>00362 
+<a name="l00363"></a>00363   <span class="keywordflow">case</span> ARM::t2LDRi12:
+<a name="l00364"></a>00364   <span class="keywordflow">case</span> ARM::t2LDRHi12:
+<a name="l00365"></a>00365   <span class="keywordflow">case</span> ARM::t2LDRBi12:
+<a name="l00366"></a>00366   <span class="keywordflow">case</span> ARM::t2LDRSHi12:
+<a name="l00367"></a>00367   <span class="keywordflow">case</span> ARM::t2LDRSBi12:
+<a name="l00368"></a>00368   <span class="keywordflow">case</span> ARM::t2STRi12:
+<a name="l00369"></a>00369   <span class="keywordflow">case</span> ARM::t2STRBi12:
+<a name="l00370"></a>00370   <span class="keywordflow">case</span> ARM::t2STRHi12:
+<a name="l00371"></a>00371   <span class="keywordflow">case</span> ARM::t2LDRi8:
+<a name="l00372"></a>00372   <span class="keywordflow">case</span> ARM::t2LDRHi8:
+<a name="l00373"></a>00373   <span class="keywordflow">case</span> ARM::t2LDRBi8:
+<a name="l00374"></a>00374   <span class="keywordflow">case</span> ARM::t2LDRSHi8:
+<a name="l00375"></a>00375   <span class="keywordflow">case</span> ARM::t2LDRSBi8:
+<a name="l00376"></a>00376   <span class="keywordflow">case</span> ARM::t2STRi8:
+<a name="l00377"></a>00377   <span class="keywordflow">case</span> ARM::t2STRBi8:
+<a name="l00378"></a>00378   <span class="keywordflow">case</span> ARM::t2STRHi8:
+<a name="l00379"></a>00379     <span class="keywordflow">return</span> opcode;
+<a name="l00380"></a>00380 
+<a name="l00381"></a>00381   <span class="keywordflow">default</span>:
+<a name="l00382"></a>00382     <span class="keywordflow">break</span>;
+<a name="l00383"></a>00383   }
+<a name="l00384"></a>00384 
+<a name="l00385"></a>00385   <span class="keywordflow">return</span> 0;
+<a name="l00386"></a>00386 }
+<a name="l00387"></a>00387 
+<a name="l00388"></a><a class="code" href="namespacellvm.html#aa7e3ca219769642a9d531a7102a5725a">00388</a> <span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#aa7e3ca219769642a9d531a7102a5725a">llvm::rewriteT2FrameIndex</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> &<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <span class="keywordtype">unsigned</span> FrameRegIdx,
+<a name="l00389"></a>00389                                <span class="keywordtype">unsigned</span> FrameReg, <span class="keywordtype">int</span> &Offset,
+<a name="l00390"></a>00390                                <span class="keyword">const</span> <a class="code" href="classllvm_1_1ARMBaseInstrInfo.html">ARMBaseInstrInfo</a> &TII) {
+<a name="l00391"></a>00391   <span class="keywordtype">unsigned</span> Opcode = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a242314c0ae0147d1a7ef54c9bc312616">getOpcode</a>();
+<a name="l00392"></a>00392   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstrDesc.html">MCInstrDesc</a> &Desc = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a803a7424877fd049679b9aa2f07597b5">getDesc</a>();
+<a name="l00393"></a>00393   <span class="keywordtype">unsigned</span> <a class="code" href="structllvm_1_1AddrMode.html">AddrMode</a> = (Desc.<a class="code" href="classllvm_1_1MCInstrDesc.html#a46e0fcca2366f30d5e35b3d7dcb9c65f">TSFlags</a> & <a class="code" href="namespacellvm_1_1ARMII.html#af4453bdd6e0c946535fe8e8dcc28e784aeda154c828d692cd52ca6cce8765f9ae">ARMII::AddrModeMask</a>);
+<a name="l00394"></a>00394   <span class="keywordtype">bool</span> isSub = <span class="keyword">false</span>;
+<a name="l00395"></a>00395 
+<a name="l00396"></a>00396   <span class="comment">// Memory operands in inline assembly always use AddrModeT2_i12.</span>
+<a name="l00397"></a>00397   <span class="keywordflow">if</span> (Opcode == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ae35d57f3c020672748fcc95607348986">ARM::INLINEASM</a>)
+<a name="l00398"></a>00398     AddrMode = <a class="code" href="namespacellvm_1_1ARMII.html#ace99f086a3cd38c7477a8f038dae7ff4a4f27c00983ba7efdb7177e52c27584b9">ARMII::AddrModeT2_i12</a>; <span class="comment">// FIXME. mode for thumb2?</span>
+<a name="l00399"></a>00399 
+<a name="l00400"></a>00400   <span class="keywordflow">if</span> (Opcode == ARM::t2ADDri || Opcode == ARM::t2ADDri12) {
+<a name="l00401"></a>00401     Offset += MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx+1).<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l00402"></a>00402 
+<a name="l00403"></a>00403     <span class="keywordtype">unsigned</span> PredReg;
+<a name="l00404"></a>00404     <span class="keywordflow">if</span> (Offset == 0 && <a class="code" href="namespacellvm.html#aee7a1f8a965c68c02b5628e9b261197e">getInstrPredicate</a>(&MI, PredReg) == <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6a8b2ef77967dee1220cc6ee5aee595e11">ARMCC::AL</a>) {
+<a name="l00405"></a>00405       <span class="comment">// Turn it into a move.</span>
+<a name="l00406"></a>00406       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a1ecb35298bc4d1fe03997959e1210c87">setDesc</a>(TII.get(ARM::tMOVr));
+<a name="l00407"></a>00407       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx).<a class="code" href="classllvm_1_1MachineOperand.html#a7db02b21d284294b8d9369803fe1c13b">ChangeToRegister</a>(FrameReg, <span class="keyword">false</span>);
+<a name="l00408"></a>00408       <span class="comment">// Remove offset and remaining explicit predicate operands.</span>
+<a name="l00409"></a>00409       <span class="keywordflow">do</span> MI.<a class="code" href="classllvm_1_1MachineInstr.html#a001a88e1d71c2e11ccd57efe75da4af3">RemoveOperand</a>(FrameRegIdx+1);
+<a name="l00410"></a>00410       <span class="keywordflow">while</span> (MI.<a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>() > FrameRegIdx+1);
+<a name="l00411"></a>00411       <a class="code" href="classllvm_1_1MachineInstrBuilder.html">MachineInstrBuilder</a> MIB(&MI);
+<a name="l00412"></a>00412       <a class="code" href="namespacellvm.html#abf7336821a22d9da733af010b2f39089">AddDefaultPred</a>(MIB);
+<a name="l00413"></a>00413       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00414"></a>00414     }
+<a name="l00415"></a>00415 
+<a name="l00416"></a>00416     <span class="keywordtype">bool</span> HasCCOut = Opcode != ARM::t2ADDri12;
+<a name="l00417"></a>00417 
+<a name="l00418"></a>00418     <span class="keywordflow">if</span> (Offset < 0) {
+<a name="l00419"></a>00419       Offset = -Offset;
+<a name="l00420"></a>00420       isSub = <span class="keyword">true</span>;
+<a name="l00421"></a>00421       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a1ecb35298bc4d1fe03997959e1210c87">setDesc</a>(TII.get(ARM::t2SUBri));
+<a name="l00422"></a>00422     } <span class="keywordflow">else</span> {
+<a name="l00423"></a>00423       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a1ecb35298bc4d1fe03997959e1210c87">setDesc</a>(TII.get(ARM::t2ADDri));
+<a name="l00424"></a>00424     }
+<a name="l00425"></a>00425 
+<a name="l00426"></a>00426     <span class="comment">// Common case: small offset, fits into instruction.</span>
+<a name="l00427"></a>00427     <span class="keywordflow">if</span> (<a class="code" href="namespacellvm_1_1ARM__AM.html#a70b6f0b420385853a70713cb288c3292">ARM_AM::getT2SOImmVal</a>(Offset) != -1) {
+<a name="l00428"></a>00428       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx).<a class="code" href="classllvm_1_1MachineOperand.html#a7db02b21d284294b8d9369803fe1c13b">ChangeToRegister</a>(FrameReg, <span class="keyword">false</span>);
+<a name="l00429"></a>00429       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx+1).<a class="code" href="classllvm_1_1MachineOperand.html#aa7e43fc5b201a1cc5b2b0f1f72963dd2">ChangeToImmediate</a>(Offset);
+<a name="l00430"></a>00430       <span class="comment">// Add cc_out operand if the original instruction did not have one.</span>
+<a name="l00431"></a>00431       <span class="keywordflow">if</span> (!HasCCOut)
+<a name="l00432"></a>00432         MI.<a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html#a18124eff2d5106b9bf041f948a1912cc">MachineOperand::CreateReg</a>(0, <span class="keyword">false</span>));
+<a name="l00433"></a>00433       Offset = 0;
+<a name="l00434"></a>00434       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00435"></a>00435     }
+<a name="l00436"></a>00436     <span class="comment">// Another common case: imm12.</span>
+<a name="l00437"></a>00437     <span class="keywordflow">if</span> (Offset < 4096 &&
+<a name="l00438"></a>00438         (!HasCCOut || 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).<a class="code" href="MipsDisassembler_8cpp.html#a30bccd0ebacd9892c243f7bd520e4aa0">getReg</a>() == 0)) {
+<a name="l00439"></a>00439       <span class="keywordtype">unsigned</span> NewOpc = isSub ? ARM::t2SUBri12 : ARM::t2ADDri12;
+<a name="l00440"></a>00440       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a1ecb35298bc4d1fe03997959e1210c87">setDesc</a>(TII.get(NewOpc));
+<a name="l00441"></a>00441       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx).<a class="code" href="classllvm_1_1MachineOperand.html#a7db02b21d284294b8d9369803fe1c13b">ChangeToRegister</a>(FrameReg, <span class="keyword">false</span>);
+<a name="l00442"></a>00442       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx+1).<a class="code" href="classllvm_1_1MachineOperand.html#aa7e43fc5b201a1cc5b2b0f1f72963dd2">ChangeToImmediate</a>(Offset);
+<a name="l00443"></a>00443       <span class="comment">// Remove the cc_out operand.</span>
+<a name="l00444"></a>00444       <span class="keywordflow">if</span> (HasCCOut)
+<a name="l00445"></a>00445         MI.<a class="code" href="classllvm_1_1MachineInstr.html#a001a88e1d71c2e11ccd57efe75da4af3">RemoveOperand</a>(MI.<a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>()-1);
+<a name="l00446"></a>00446       Offset = 0;
+<a name="l00447"></a>00447       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00448"></a>00448     }
+<a name="l00449"></a>00449 
+<a name="l00450"></a>00450     <span class="comment">// Otherwise, extract 8 adjacent bits from the immediate into this</span>
+<a name="l00451"></a>00451     <span class="comment">// t2ADDri/t2SUBri.</span>
+<a name="l00452"></a>00452     <span class="keywordtype">unsigned</span> RotAmt = <a class="code" href="namespacellvm.html#ad49c0b18ebe7aaea47cb5ff7396ec953">CountLeadingZeros_32</a>(Offset);
+<a name="l00453"></a>00453     <span class="keywordtype">unsigned</span> ThisImmVal = Offset & <a class="code" href="namespacellvm_1_1ARM__AM.html#a6d968947f2037095847dd5721335f6a6">ARM_AM::rotr32</a>(0xff000000U, RotAmt);
+<a name="l00454"></a>00454 
+<a name="l00455"></a>00455     <span class="comment">// We will handle these bits from offset, clear them.</span>
+<a name="l00456"></a>00456     Offset &= ~ThisImmVal;
+<a name="l00457"></a>00457 
+<a name="l00458"></a>00458     assert(<a class="code" href="namespacellvm_1_1ARM__AM.html#a70b6f0b420385853a70713cb288c3292">ARM_AM::getT2SOImmVal</a>(ThisImmVal) != -1 &&
+<a name="l00459"></a>00459            <span class="stringliteral">"Bit extraction didn't work?"</span>);
+<a name="l00460"></a>00460     MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx+1).<a class="code" href="classllvm_1_1MachineOperand.html#aa7e43fc5b201a1cc5b2b0f1f72963dd2">ChangeToImmediate</a>(ThisImmVal);
+<a name="l00461"></a>00461     <span class="comment">// Add cc_out operand if the original instruction did not have one.</span>
+<a name="l00462"></a>00462     <span class="keywordflow">if</span> (!HasCCOut)
+<a name="l00463"></a>00463       MI.<a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html#a18124eff2d5106b9bf041f948a1912cc">MachineOperand::CreateReg</a>(0, <span class="keyword">false</span>));
+<a name="l00464"></a>00464 
+<a name="l00465"></a>00465   } <span class="keywordflow">else</span> {
+<a name="l00466"></a>00466 
+<a name="l00467"></a>00467     <span class="comment">// AddrMode4 and AddrMode6 cannot handle any offset.</span>
+<a name="l00468"></a>00468     <span class="keywordflow">if</span> (AddrMode == <a class="code" href="namespacellvm_1_1ARMII.html#ace99f086a3cd38c7477a8f038dae7ff4a9dbb177d004cae6c3474b6aadc8ae07e">ARMII::AddrMode4</a> || AddrMode == <a class="code" href="namespacellvm_1_1ARMII.html#ace99f086a3cd38c7477a8f038dae7ff4a8388bb748b26edbdb8bb5d5ab6f16853">ARMII::AddrMode6</a>)
+<a name="l00469"></a>00469       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00470"></a>00470 
+<a name="l00471"></a>00471     <span class="comment">// AddrModeT2_so cannot handle any offset. If there is no offset</span>
+<a name="l00472"></a>00472     <span class="comment">// register then we change to an immediate version.</span>
+<a name="l00473"></a>00473     <span class="keywordtype">unsigned</span> NewOpc = Opcode;
+<a name="l00474"></a>00474     <span class="keywordflow">if</span> (AddrMode == <a class="code" href="namespacellvm_1_1ARMII.html#ace99f086a3cd38c7477a8f038dae7ff4af53086c6fc70088a1be00db2e4e3c928">ARMII::AddrModeT2_so</a>) {
+<a name="l00475"></a>00475       <span class="keywordtype">unsigned</span> OffsetReg = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx+1).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l00476"></a>00476       <span class="keywordflow">if</span> (OffsetReg != 0) {
+<a name="l00477"></a>00477         MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx).<a class="code" href="classllvm_1_1MachineOperand.html#a7db02b21d284294b8d9369803fe1c13b">ChangeToRegister</a>(FrameReg, <span class="keyword">false</span>);
+<a name="l00478"></a>00478         <span class="keywordflow">return</span> Offset == 0;
+<a name="l00479"></a>00479       }
+<a name="l00480"></a>00480 
+<a name="l00481"></a>00481       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a001a88e1d71c2e11ccd57efe75da4af3">RemoveOperand</a>(FrameRegIdx+1);
+<a name="l00482"></a>00482       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx+1).<a class="code" href="classllvm_1_1MachineOperand.html#aa7e43fc5b201a1cc5b2b0f1f72963dd2">ChangeToImmediate</a>(0);
+<a name="l00483"></a>00483       NewOpc = <a class="code" href="Thumb2InstrInfo_8cpp.html#add6aafb2c170f72f2459f5d92cc415f0">immediateOffsetOpcode</a>(Opcode);
+<a name="l00484"></a>00484       AddrMode = <a class="code" href="namespacellvm_1_1ARMII.html#ace99f086a3cd38c7477a8f038dae7ff4a4f27c00983ba7efdb7177e52c27584b9">ARMII::AddrModeT2_i12</a>;
+<a name="l00485"></a>00485     }
+<a name="l00486"></a>00486 
+<a name="l00487"></a>00487     <span class="keywordtype">unsigned</span> NumBits = 0;
+<a name="l00488"></a>00488     <span class="keywordtype">unsigned</span> Scale = 1;
+<a name="l00489"></a>00489     <span class="keywordflow">if</span> (AddrMode == <a class="code" href="namespacellvm_1_1ARMII.html#ace99f086a3cd38c7477a8f038dae7ff4a976ddbecac99af6819d058790e33e137">ARMII::AddrModeT2_i8</a> || AddrMode == <a class="code" href="namespacellvm_1_1ARMII.html#ace99f086a3cd38c7477a8f038dae7ff4a4f27c00983ba7efdb7177e52c27584b9">ARMII::AddrModeT2_i12</a>) {
+<a name="l00490"></a>00490       <span class="comment">// i8 supports only negative, and i12 supports only positive, so</span>
+<a name="l00491"></a>00491       <span class="comment">// based on Offset sign convert Opcode to the appropriate</span>
+<a name="l00492"></a>00492       <span class="comment">// instruction</span>
+<a name="l00493"></a>00493       Offset += MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx+1).<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l00494"></a>00494       <span class="keywordflow">if</span> (Offset < 0) {
+<a name="l00495"></a>00495         NewOpc = <a class="code" href="Thumb2InstrInfo_8cpp.html#a6fb01b809d94239b330bfada484d3521">negativeOffsetOpcode</a>(Opcode);
+<a name="l00496"></a>00496         NumBits = 8;
+<a name="l00497"></a>00497         isSub = <span class="keyword">true</span>;
+<a name="l00498"></a>00498         Offset = -Offset;
+<a name="l00499"></a>00499       } <span class="keywordflow">else</span> {
+<a name="l00500"></a>00500         NewOpc = <a class="code" href="Thumb2InstrInfo_8cpp.html#a803c53df7d127b52de6d827c5519d98a">positiveOffsetOpcode</a>(Opcode);
+<a name="l00501"></a>00501         NumBits = 12;
+<a name="l00502"></a>00502       }
+<a name="l00503"></a>00503     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (AddrMode == <a class="code" href="namespacellvm_1_1ARMII.html#ace99f086a3cd38c7477a8f038dae7ff4a0209ae669364c237e24dbc0c4df6036e">ARMII::AddrMode5</a>) {
+<a name="l00504"></a>00504       <span class="comment">// VFP address mode.</span>
+<a name="l00505"></a>00505       <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &OffOp = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx+1);
+<a name="l00506"></a>00506       <span class="keywordtype">int</span> InstrOffs = <a class="code" href="namespacellvm_1_1ARM__AM.html#a4a7164e76d0d8d5ec38ed60bddd77589">ARM_AM::getAM5Offset</a>(OffOp.<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>());
+<a name="l00507"></a>00507       <span class="keywordflow">if</span> (<a class="code" href="namespacellvm_1_1ARM__AM.html#afdacdb74974f380adc2ba5381cce6026">ARM_AM::getAM5Op</a>(OffOp.<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>()) == <a class="code" href="namespacellvm_1_1ARM__AM.html#a5d0557608eaebed12bc00812724ba2cda41a13f3ce88ed84e63003e32b18c1235">ARM_AM::sub</a>)
+<a name="l00508"></a>00508         InstrOffs *= -1;
+<a name="l00509"></a>00509       NumBits = 8;
+<a name="l00510"></a>00510       Scale = 4;
+<a name="l00511"></a>00511       Offset += InstrOffs * 4;
+<a name="l00512"></a>00512       assert((Offset & (Scale-1)) == 0 && <span class="stringliteral">"Can't encode this offset!"</span>);
+<a name="l00513"></a>00513       <span class="keywordflow">if</span> (Offset < 0) {
+<a name="l00514"></a>00514         Offset = -Offset;
+<a name="l00515"></a>00515         isSub = <span class="keyword">true</span>;
+<a name="l00516"></a>00516       }
+<a name="l00517"></a>00517     } <span class="keywordflow">else</span> {
+<a name="l00518"></a>00518       <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Unsupported addressing mode!"</span>);
+<a name="l00519"></a>00519     }
+<a name="l00520"></a>00520 
+<a name="l00521"></a>00521     <span class="keywordflow">if</span> (NewOpc != Opcode)
+<a name="l00522"></a>00522       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a1ecb35298bc4d1fe03997959e1210c87">setDesc</a>(TII.get(NewOpc));
+<a name="l00523"></a>00523 
+<a name="l00524"></a>00524     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &ImmOp = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx+1);
+<a name="l00525"></a>00525 
+<a name="l00526"></a>00526     <span class="comment">// Attempt to fold address computation</span>
+<a name="l00527"></a>00527     <span class="comment">// Common case: small offset, fits into instruction.</span>
+<a name="l00528"></a>00528     <span class="keywordtype">int</span> ImmedOffset = Offset / Scale;
+<a name="l00529"></a>00529     <span class="keywordtype">unsigned</span> Mask = (1 << NumBits) - 1;
+<a name="l00530"></a>00530     <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>)Offset <= Mask * Scale) {
+<a name="l00531"></a>00531       <span class="comment">// Replace the FrameIndex with fp/sp</span>
+<a name="l00532"></a>00532       MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(FrameRegIdx).<a class="code" href="classllvm_1_1MachineOperand.html#a7db02b21d284294b8d9369803fe1c13b">ChangeToRegister</a>(FrameReg, <span class="keyword">false</span>);
+<a name="l00533"></a>00533       <span class="keywordflow">if</span> (isSub) {
+<a name="l00534"></a>00534         <span class="keywordflow">if</span> (AddrMode == <a class="code" href="namespacellvm_1_1ARMII.html#ace99f086a3cd38c7477a8f038dae7ff4a0209ae669364c237e24dbc0c4df6036e">ARMII::AddrMode5</a>)
+<a name="l00535"></a>00535           <span class="comment">// FIXME: Not consistent.</span>
+<a name="l00536"></a>00536           ImmedOffset |= 1 << NumBits;
+<a name="l00537"></a>00537         <span class="keywordflow">else</span>
+<a name="l00538"></a>00538           ImmedOffset = -ImmedOffset;
+<a name="l00539"></a>00539       }
+<a name="l00540"></a>00540       ImmOp.<a class="code" href="classllvm_1_1MachineOperand.html#aa7e43fc5b201a1cc5b2b0f1f72963dd2">ChangeToImmediate</a>(ImmedOffset);
+<a name="l00541"></a>00541       Offset = 0;
+<a name="l00542"></a>00542       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00543"></a>00543     }
+<a name="l00544"></a>00544 
+<a name="l00545"></a>00545     <span class="comment">// Otherwise, offset doesn't fit. Pull in what we can to simplify</span>
+<a name="l00546"></a>00546     ImmedOffset = ImmedOffset & Mask;
+<a name="l00547"></a>00547     <span class="keywordflow">if</span> (isSub) {
+<a name="l00548"></a>00548       <span class="keywordflow">if</span> (AddrMode == <a class="code" href="namespacellvm_1_1ARMII.html#ace99f086a3cd38c7477a8f038dae7ff4a0209ae669364c237e24dbc0c4df6036e">ARMII::AddrMode5</a>)
+<a name="l00549"></a>00549         <span class="comment">// FIXME: Not consistent.</span>
+<a name="l00550"></a>00550         ImmedOffset |= 1 << NumBits;
+<a name="l00551"></a>00551       <span class="keywordflow">else</span> {
+<a name="l00552"></a>00552         ImmedOffset = -ImmedOffset;
+<a name="l00553"></a>00553         <span class="keywordflow">if</span> (ImmedOffset == 0)
+<a name="l00554"></a>00554           <span class="comment">// Change the opcode back if the encoded offset is zero.</span>
+<a name="l00555"></a>00555           MI.<a class="code" href="classllvm_1_1MachineInstr.html#a1ecb35298bc4d1fe03997959e1210c87">setDesc</a>(TII.get(<a class="code" href="Thumb2InstrInfo_8cpp.html#a803c53df7d127b52de6d827c5519d98a">positiveOffsetOpcode</a>(NewOpc)));
+<a name="l00556"></a>00556       }
+<a name="l00557"></a>00557     }
+<a name="l00558"></a>00558     ImmOp.<a class="code" href="classllvm_1_1MachineOperand.html#aa7e43fc5b201a1cc5b2b0f1f72963dd2">ChangeToImmediate</a>(ImmedOffset);
+<a name="l00559"></a>00559     Offset &= ~(Mask*Scale);
+<a name="l00560"></a>00560   }
+<a name="l00561"></a>00561 
+<a name="l00562"></a>00562   Offset = (isSub) ? -Offset : Offset;
+<a name="l00563"></a>00563   <span class="keywordflow">return</span> Offset == 0;
+<a name="l00564"></a>00564 }
+<a name="l00565"></a>00565 
+<a name="l00566"></a>00566 <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6">ARMCC::CondCodes</a>
+<a name="l00567"></a><a class="code" href="namespacellvm.html#a614cd1261ff9b62a08e078da82833912">00567</a> <a class="code" href="namespacellvm.html#a614cd1261ff9b62a08e078da82833912">llvm::getITInstrPredicate</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <span class="keywordtype">unsigned</span> &PredReg) {
+<a name="l00568"></a>00568   <span class="keywordtype">unsigned</span> Opc = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a242314c0ae0147d1a7ef54c9bc312616">getOpcode</a>();
+<a name="l00569"></a>00569   <span class="keywordflow">if</span> (Opc == ARM::tBcc || Opc == ARM::t2Bcc)
+<a name="l00570"></a>00570     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6a8b2ef77967dee1220cc6ee5aee595e11">ARMCC::AL</a>;
+<a name="l00571"></a>00571   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#aee7a1f8a965c68c02b5628e9b261197e">getInstrPredicate</a>(MI, PredReg);
+<a name="l00572"></a>00572 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:38:58 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/Thumb2InstrInfo_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Thumb2InstrInfo_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Thumb2InstrInfo_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Thumb2InstrInfo_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+07cc3775623aedb093a14ec040d9a329
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/Thumb2RegisterInfo_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Thumb2RegisterInfo_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Thumb2RegisterInfo_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Thumb2RegisterInfo_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,161 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="Thumb2RegisterInfo.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="Thumb2RegisterInfo.h",height=0.2,width=0.4,color="black",URL="$Thumb2RegisterInfo_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="ARM.h",height=0.2,width=0.4,color="black",URL="$ARM_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="MCTargetDesc/ARMBaseInfo.h",height=0.2,width=0.4,color="black",URL="$ARMBaseInfo_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="ARMMCTargetDesc.h",height=0.2,width=0.4,color="black",URL="$ARMMCTargetDesc_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="red",URL="$DataTypes_8h.html"];
+  Node5 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="ARMGenRegisterInfo.inc",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="ARMGenInstrInfo.inc",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="ARMGenSubtargetInfo.inc",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="red",URL="$ErrorHandling_8h.html"];
+  Node11 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node11 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="llvm/Target/TargetMachine.h",height=0.2,width=0.4,color="red",URL="$Target_2TargetMachine_8h.html"];
+  Node13 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node13 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="ARMBaseRegisterInfo.h",height=0.2,width=0.4,color="black",URL="$ARMBaseRegisterInfo_8h.html"];
+  Node15 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="llvm/Target/TargetRegisterInfo.h",height=0.2,width=0.4,color="red",URL="$TargetRegisterInfo_8h.html"];
+  Node16 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/MC/MCRegisterInfo.h",height=0.2,width=0.4,color="black",URL="$MCRegisterInfo_8h.html"];
+  Node17 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node18 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node17 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/CodeGen/MachineBasicBlock.h",height=0.2,width=0.4,color="red",URL="$MachineBasicBlock_8h.html"];
+  Node20 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="red",URL="$ArrayRef_8h.html"];
+  Node21 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node16 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node16 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="ARMBaseInstrInfo.h",height=0.2,width=0.4,color="black",URL="$ARMBaseInstrInfo_8h.html"];
+  Node24 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/CodeGen/MachineInstrBuilder.h",height=0.2,width=0.4,color="black",URL="$MachineInstrBuilder_8h.html"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/CodeGen/MachineFunction.h",height=0.2,width=0.4,color="black",URL="$MachineFunction_8h.html"];
+  Node26 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/ADT/ilist.h",height=0.2,width=0.4,color="red",URL="$ilist_8h.html"];
+  Node27 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Support/DebugLoc.h",height=0.2,width=0.4,color="black",URL="$DebugLoc_8h.html"];
+  Node26 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Support/Allocator.h",height=0.2,width=0.4,color="red",URL="$Allocator_8h.html"];
+  Node29 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/Support/Recycler.h",height=0.2,width=0.4,color="red",URL="$Recycler_8h.html"];
+  Node30 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Target/TargetInstrInfo.h",height=0.2,width=0.4,color="red",URL="$TargetInstrInfo_8h.html"];
+  Node31 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/ADT/SmallSet.h",height=0.2,width=0.4,color="red",URL="$SmallSet_8h.html"];
+  Node31 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="ARMSubtarget.h",height=0.2,width=0.4,color="black",URL="$ARMSubtarget_8h.html"];
+  Node33 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Target/TargetSubtargetInfo.h",height=0.2,width=0.4,color="red",URL="$TargetSubtargetInfo_8h.html"];
+  Node33 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/MC/MCInstrItineraries.h",height=0.2,width=0.4,color="red",URL="$MCInstrItineraries_8h.html"];
+  Node33 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/ADT/Triple.h",height=0.2,width=0.4,color="red",URL="$Triple_8h.html"];
+  Node33 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/Constants.h",height=0.2,width=0.4,color="black",URL="$Constants_8h.html"];
+  Node37 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/Constant.h",height=0.2,width=0.4,color="red",URL="$Constant_8h.html"];
+  Node37 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/OperandTraits.h",height=0.2,width=0.4,color="red",URL="$OperandTraits_8h.html"];
+  Node37 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/ADT/APInt.h",height=0.2,width=0.4,color="red",URL="$APInt_8h.html"];
+  Node40 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/ADT/APFloat.h",height=0.2,width=0.4,color="black",URL="$APFloat_8h.html"];
+  Node41 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/DerivedTypes.h",height=0.2,width=0.4,color="black",URL="$DerivedTypes_8h.html"];
+  Node42 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/Type.h",height=0.2,width=0.4,color="red",URL="$Type_8h.html"];
+  Node43 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/Function.h",height=0.2,width=0.4,color="black",URL="$Function_8h.html"];
+  Node44 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/GlobalValue.h",height=0.2,width=0.4,color="black",URL="$GlobalValue_8h.html"];
+  Node45 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/BasicBlock.h",height=0.2,width=0.4,color="red",URL="$BasicBlock_8h.html"];
+  Node46 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Argument.h",height=0.2,width=0.4,color="red",URL="$Argument_8h.html"];
+  Node47 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Attributes.h",height=0.2,width=0.4,color="red",URL="$Attributes_8h.html"];
+  Node48 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/CodeGen/MachineConstantPool.h",height=0.2,width=0.4,color="black",URL="$MachineConstantPool_8h.html"];
+  Node49 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/ADT/DenseSet.h",height=0.2,width=0.4,color="black",URL="$DenseSet_8h.html"];
+  Node50 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Thumb2RegisterInfo_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Thumb2RegisterInfo_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Thumb2RegisterInfo_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Thumb2RegisterInfo_8h__dep__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="Thumb2RegisterInfo.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="Thumb2InstrInfo.h",height=0.2,width=0.4,color="black",URL="$Thumb2InstrInfo_8h.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="ARMTargetMachine.h",height=0.2,width=0.4,color="black",URL="$ARMTargetMachine_8h.html"];
+  Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="ARMAsmPrinter.h",height=0.2,width=0.4,color="black",URL="$ARMAsmPrinter_8h.html"];
+  Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="ARMAsmPrinter.cpp",height=0.2,width=0.4,color="black",URL="$ARMAsmPrinter_8cpp.html"];
+  Node4 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="ARMMCInstLower.cpp",height=0.2,width=0.4,color="black",URL="$ARMMCInstLower_8cpp.html"];
+  Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="ARMCodeEmitter.cpp",height=0.2,width=0.4,color="black",URL="$ARMCodeEmitter_8cpp.html"];
+  Node3 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="ARMFastISel.cpp",height=0.2,width=0.4,color="black",URL="$ARMFastISel_8cpp.html"];
+  Node3 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="ARMInstrInfo.cpp",height=0.2,width=0.4,color="black",URL="$ARMInstrInfo_8cpp.html"];
+  Node3 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="ARMISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$ARMISelDAGToDAG_8cpp.html"];
+  Node3 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="ARMISelLowering.cpp",height=0.2,width=0.4,color="black",URL="$ARMISelLowering_8cpp.html"];
+  Node3 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="ARMSelectionDAGInfo.cpp",height=0.2,width=0.4,color="black",URL="$ARMSelectionDAGInfo_8cpp.html"];
+  Node3 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="ARMTargetMachine.cpp",height=0.2,width=0.4,color="black",URL="$ARMTargetMachine_8cpp.html"];
+  Node2 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="ARMConstantIslandPass.cpp",height=0.2,width=0.4,color="black",URL="$ARMConstantIslandPass_8cpp.html"];
+  Node2 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="Thumb2InstrInfo.cpp",height=0.2,width=0.4,color="black",URL="$Thumb2InstrInfo_8cpp.html"];
+  Node2 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="Thumb2ITBlockPass.cpp",height=0.2,width=0.4,color="black",URL="$Thumb2ITBlockPass_8cpp.html"];
+  Node2 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="Thumb2SizeReduction.cpp",height=0.2,width=0.4,color="black",URL="$Thumb2SizeReduction_8cpp.html"];
+  Node1 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="Thumb2RegisterInfo.cpp",height=0.2,width=0.4,color="black",URL="$Thumb2RegisterInfo_8cpp.html"];
+}

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Thumb2SizeReduction_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Thumb2SizeReduction_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Thumb2SizeReduction_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Thumb2SizeReduction_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,161 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="Thumb2SizeReduction.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="ARM.h",height=0.2,width=0.4,color="black",URL="$ARM_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="MCTargetDesc/ARMBaseInfo.h",height=0.2,width=0.4,color="black",URL="$ARMBaseInfo_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="ARMMCTargetDesc.h",height=0.2,width=0.4,color="black",URL="$ARMMCTargetDesc_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="red",URL="$DataTypes_8h.html"];
+  Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="ARMGenRegisterInfo.inc",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="ARMGenInstrInfo.inc",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="ARMGenSubtargetInfo.inc",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="red",URL="$ErrorHandling_8h.html"];
+  Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="red",URL="$StringRef_8h.html"];
+  Node11 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="red",URL="$type__traits_8h.html"];
+  Node12 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node11 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/Target/TargetMachine.h",height=0.2,width=0.4,color="red",URL="$Target_2TargetMachine_8h.html"];
+  Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/Pass.h",height=0.2,width=0.4,color="red",URL="$Pass_8h.html"];
+  Node15 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="ARMBaseRegisterInfo.h",height=0.2,width=0.4,color="black",URL="$ARMBaseRegisterInfo_8h.html"];
+  Node16 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/Target/TargetRegisterInfo.h",height=0.2,width=0.4,color="red",URL="$TargetRegisterInfo_8h.html"];
+  Node17 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="red",URL="$ArrayRef_8h.html"];
+  Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node17 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="ARMBaseInstrInfo.h",height=0.2,width=0.4,color="black",URL="$ARMBaseInstrInfo_8h.html"];
+  Node20 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/CodeGen/MachineInstrBuilder.h",height=0.2,width=0.4,color="black",URL="$MachineInstrBuilder_8h.html"];
+  Node21 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/CodeGen/MachineFunction.h",height=0.2,width=0.4,color="red",URL="$MachineFunction_8h.html"];
+  Node22 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/ADT/ilist.h",height=0.2,width=0.4,color="red",URL="$ilist_8h.html"];
+  Node23 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/Support/DebugLoc.h",height=0.2,width=0.4,color="black",URL="$DebugLoc_8h.html"];
+  Node21 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/Target/TargetInstrInfo.h",height=0.2,width=0.4,color="red",URL="$TargetInstrInfo_8h.html"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/ADT/SmallSet.h",height=0.2,width=0.4,color="red",URL="$SmallSet_8h.html"];
+  Node25 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node27 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="red",URL="$MathExtras_8h.html"];
+  Node27 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/ADT/DenseMapInfo.h",height=0.2,width=0.4,color="red",URL="$DenseMapInfo_8h.html"];
+  Node29 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="ARMSubtarget.h",height=0.2,width=0.4,color="black",URL="$ARMSubtarget_8h.html"];
+  Node30 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Target/TargetSubtargetInfo.h",height=0.2,width=0.4,color="red",URL="$TargetSubtargetInfo_8h.html"];
+  Node30 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/MC/MCInstrItineraries.h",height=0.2,width=0.4,color="red",URL="$MCInstrItineraries_8h.html"];
+  Node30 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/ADT/Triple.h",height=0.2,width=0.4,color="red",URL="$Triple_8h.html"];
+  Node30 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="Thumb2InstrInfo.h",height=0.2,width=0.4,color="black",URL="$Thumb2InstrInfo_8h.html"];
+  Node34 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="Thumb2RegisterInfo.h",height=0.2,width=0.4,color="black",URL="$Thumb2RegisterInfo_8h.html"];
+  Node35 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="MCTargetDesc/ARMAddressingModes.h",height=0.2,width=0.4,color="black",URL="$ARMAddressingModes_8h.html"];
+  Node36 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/ADT/APFloat.h",height=0.2,width=0.4,color="black",URL="$APFloat_8h.html"];
+  Node37 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/ADT/APInt.h",height=0.2,width=0.4,color="red",URL="$APInt_8h.html"];
+  Node38 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/CodeGen/MachineInstr.h",height=0.2,width=0.4,color="black",URL="$MachineInstr_8h.html"];
+  Node39 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/CodeGen/MachineOperand.h",height=0.2,width=0.4,color="black",URL="$MachineOperand_8h.html"];
+  Node40 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/MC/MCInstrDesc.h",height=0.2,width=0.4,color="black",URL="$MCInstrDesc_8h.html"];
+  Node41 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/Target/TargetOpcodes.h",height=0.2,width=0.4,color="black",URL="$TargetOpcodes_8h.html"];
+  Node39 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/ADT/ilist_node.h",height=0.2,width=0.4,color="black",URL="$ilist__node_8h.html"];
+  Node39 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/ADT/STLExtras.h",height=0.2,width=0.4,color="red",URL="$STLExtras_8h.html"];
+  Node39 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/InlineAsm.h",height=0.2,width=0.4,color="red",URL="$InlineAsm_8h.html"];
+  Node45 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/CodeGen/MachineFunctionPass.h",height=0.2,width=0.4,color="black",URL="$MachineFunctionPass_8h.html"];
+  Node46 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Support/CommandLine.h",height=0.2,width=0.4,color="red",URL="$CommandLine_8h.html"];
+  Node47 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Support/Debug.h",height=0.2,width=0.4,color="black",URL="$Debug_8h.html"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="red",URL="$raw__ostream_8h.html"];
+  Node49 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/ADT/Statistic.h",height=0.2,width=0.4,color="red",URL="$Statistic_8h.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/TimeValue_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/TimeValue_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/TimeValue_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/TimeValue_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,23 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="TimeValue.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/Support/TimeValue.h",height=0.2,width=0.4,color="black",URL="$TimeValue_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/Config/config.h",height=0.2,width=0.4,color="black",URL="$config_8h.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/TimeValue_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/TimeValue_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/TimeValue_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/TimeValue_8h__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="TimeValue.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/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="string",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Timer_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Timer_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Timer_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Timer_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,147 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="Timer.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/Support/Timer.h",height=0.2,width=0.4,color="black",URL="$Timer_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/ADT/StringRef.h",height=0.2,width=0.4,color="black",URL="$StringRef_8h.html"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node10 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="limits",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/Support/CommandLine.h",height=0.2,width=0.4,color="black",URL="$CommandLine_8h.html"];
+  Node19 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="black",URL="$SmallVector_8h.html"];
+  Node20 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_8h.html"];
+  Node21 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node20 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node20 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="memory",height=0.2,width=0.4,color="grey75"];
+  Node19 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="black",URL="$Twine_8h.html"];
+  Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8h.html"];
+  Node26 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node19 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="cstdarg",height=0.2,width=0.4,color="grey75"];
+  Node19 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Support/Debug.h",height=0.2,width=0.4,color="black",URL="$Debug_8h.html"];
+  Node1 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/Support/ManagedStatic.h",height=0.2,width=0.4,color="black",URL="$ManagedStatic_8h.html"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Support/Atomic.h",height=0.2,width=0.4,color="black",URL="$Atomic_8h.html"];
+  Node31 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/Support/Threading.h",height=0.2,width=0.4,color="black",URL="$Threading_8h.html"];
+  Node30 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/Support/Valgrind.h",height=0.2,width=0.4,color="black",URL="$Valgrind_8h.html"];
+  Node33 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Config/llvm-config.h",height=0.2,width=0.4,color="black",URL="$llvm-config_8h.html"];
+  Node33 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="stddef.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="black",URL="$raw__ostream_8h.html"];
+  Node36 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/Support/Format.h",height=0.2,width=0.4,color="black",URL="$Format_8h.html"];
+  Node37 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="cstdio",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/Support/Mutex.h",height=0.2,width=0.4,color="black",URL="$Mutex_8h.html"];
+  Node39 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/Support/Process.h",height=0.2,width=0.4,color="black",URL="$Process_8h.html"];
+  Node40 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/Support/TimeValue.h",height=0.2,width=0.4,color="black",URL="$TimeValue_8h.html"];
+  Node41 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/ADT/OwningPtr.h",height=0.2,width=0.4,color="black",URL="$OwningPtr_8h.html"];
+  Node42 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/ADT/StringMap.h",height=0.2,width=0.4,color="black",URL="$StringMap_8h.html"];
+  Node43 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/Support/Allocator.h",height=0.2,width=0.4,color="black",URL="$Allocator_8h.html"];
+  Node44 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="black",URL="$MathExtras_8h.html"];
+  Node45 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/Support/SwapByteOrder.h",height=0.2,width=0.4,color="black",URL="$SwapByteOrder_8h.html"];
+  Node46 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/ToolOutputFile_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ToolOutputFile_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ToolOutputFile_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ToolOutputFile_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,64 @@
+<!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: ToolOutputFile.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_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">ToolOutputFile.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="ToolOutputFile_8h_source.html">llvm/Support/ToolOutputFile.h</a>"</code><br/>
+<code>#include "<a class="el" href="Signals_8h_source.html">llvm/Support/Signals.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for ToolOutputFile.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="ToolOutputFile_8cpp__incl.png" border="0" usemap="#ToolOutputFile_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="ToolOutputFile_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:54 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/ToolOutputFile_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ToolOutputFile_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ToolOutputFile_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ToolOutputFile_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,118 @@
+<!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: ToolOutputFile.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_b423301f639fc46b24b2c9f122fcaff7.html">Support</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">ToolOutputFile.h</div>  </div>
+</div>
+<div class="contents">
+<a href="ToolOutputFile_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- ToolOutputFile.h - Output files for compiler-like tools -----------===//</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 the tool_output_file 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>00014 <span class="preprocessor">#ifndef LLVM_SUPPORT_TOOL_OUTPUT_FILE_H</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_SUPPORT_TOOL_OUTPUT_FILE_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00018"></a>00018 
+<a name="l00019"></a>00019 <span class="keyword">namespace </span>llvm {
+<a name="l00020"></a>00020 <span class="comment"></span>
+<a name="l00021"></a>00021 <span class="comment">/// tool_output_file - This class contains a raw_fd_ostream and adds a</span>
+<a name="l00022"></a>00022 <span class="comment">/// few extra features commonly needed for compiler-like tool output files:</span>
+<a name="l00023"></a>00023 <span class="comment">///   - The file is automatically deleted if the process is killed.</span>
+<a name="l00024"></a>00024 <span class="comment">///   - The file is automatically deleted when the tool_output_file</span>
+<a name="l00025"></a>00025 <span class="comment">///     object is destroyed unless the client calls keep().</span>
+<a name="l00026"></a><a class="code" href="classllvm_1_1tool__output__file.html">00026</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classllvm_1_1tool__output__file.html">tool_output_file</a> {<span class="comment"></span>
+<a name="l00027"></a>00027 <span class="comment">  /// Installer - This class is declared before the raw_fd_ostream so that</span>
+<a name="l00028"></a>00028 <span class="comment">  /// it is constructed before the raw_fd_ostream is constructed and</span>
+<a name="l00029"></a>00029 <span class="comment">  /// destructed after the raw_fd_ostream is destructed. It installs</span>
+<a name="l00030"></a>00030 <span class="comment">  /// cleanups in its constructor and uninstalls them in its destructor.</span>
+<a name="l00031"></a>00031 <span class="comment"></span>  <span class="keyword">class </span>CleanupInstaller {<span class="comment"></span>
+<a name="l00032"></a>00032 <span class="comment">    /// Filename - The name of the file.</span>
+<a name="l00033"></a>00033 <span class="comment"></span>    std::string Filename;
+<a name="l00034"></a>00034   <span class="keyword">public</span>:<span class="comment"></span>
+<a name="l00035"></a>00035 <span class="comment">    /// Keep - The flag which indicates whether we should not delete the file.</span>
+<a name="l00036"></a>00036 <span class="comment"></span>    <span class="keywordtype">bool</span> Keep;
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038     <span class="keyword">explicit</span> CleanupInstaller(<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="namespacellvm_1_1sys_1_1path.html#a9cce53905fbbc275717b2c2539a89ac1" title="Get filename.">filename</a>);
+<a name="l00039"></a>00039     ~CleanupInstaller();
+<a name="l00040"></a>00040   } Installer;
+<a name="l00041"></a>00041 <span class="comment"></span>
+<a name="l00042"></a>00042 <span class="comment">  /// OS - The contained stream. This is intentionally declared after</span>
+<a name="l00043"></a>00043 <span class="comment">  /// Installer.</span>
+<a name="l00044"></a>00044 <span class="comment"></span>  <a class="code" href="classllvm_1_1raw__fd__ostream.html">raw_fd_ostream</a> OS;
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046 <span class="keyword">public</span>:<span class="comment"></span>
+<a name="l00047"></a>00047 <span class="comment">  /// tool_output_file - This constructor's arguments are passed to</span>
+<a name="l00048"></a>00048 <span class="comment">  /// to raw_fd_ostream's constructor.</span>
+<a name="l00049"></a>00049 <span class="comment"></span>  <a class="code" href="classllvm_1_1tool__output__file.html#a55e555780f1fec4c2feecf029a449d02">tool_output_file</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="namespacellvm_1_1sys_1_1path.html#a9cce53905fbbc275717b2c2539a89ac1" title="Get filename.">filename</a>, std::string &ErrorInfo,
+<a name="l00050"></a>00050                    <span class="keywordtype">unsigned</span> Flags = 0);
+<a name="l00051"></a>00051 <span class="comment"></span>
+<a name="l00052"></a>00052 <span class="comment">  /// os - Return the contained raw_fd_ostream.</span>
+<a name="l00053"></a><a class="code" href="classllvm_1_1tool__output__file.html#acd78ce5c0f459d4c2af05bee02b1b5e5">00053</a> <span class="comment"></span>  <a class="code" href="classllvm_1_1raw__fd__ostream.html">raw_fd_ostream</a> &<a class="code" href="classllvm_1_1tool__output__file.html#acd78ce5c0f459d4c2af05bee02b1b5e5" title="os - Return the contained raw_fd_ostream.">os</a>() { <span class="keywordflow">return</span> OS; }
+<a name="l00054"></a>00054 <span class="comment"></span>
+<a name="l00055"></a>00055 <span class="comment">  /// keep - Indicate that the tool's job wrt this output file has been</span>
+<a name="l00056"></a>00056 <span class="comment">  /// successful and the file should not be deleted.</span>
+<a name="l00057"></a><a class="code" href="classllvm_1_1tool__output__file.html#a8764a18f8c3d6a4ccde28445d17f4c1f">00057</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1tool__output__file.html#a8764a18f8c3d6a4ccde28445d17f4c1f">keep</a>() { Installer.Keep = <span class="keyword">true</span>; }
+<a name="l00058"></a>00058 };
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060 } <span class="comment">// end llvm namespace</span>
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:38:59 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/Trace_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Trace_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Trace_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Trace_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,67 @@
+<!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: Trace.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_59dd179f705c75b7b821c61754f4942c.html">Analysis</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Trace.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Trace_8h_source.html">llvm/Analysis/Trace.h</a>"</code><br/>
+<code>#include "<a class="el" href="Function_8h_source.html">llvm/Function.h</a>"</code><br/>
+<code>#include "<a class="el" href="Writer_8h_source.html">llvm/Assembly/Writer.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="raw__ostream_8h_source.html">llvm/Support/raw_ostream.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Trace.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="Trace_8cpp__incl.png" border="0" usemap="#Trace_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="Trace_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:54 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/Trace_8cpp__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Trace_8cpp__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Trace_8cpp__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Trace_8cpp__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+103baa215f0e2a7824b3a29eea62694b
\ No newline at end of file

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Transforms_2IPO_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Transforms_2IPO_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Transforms_2IPO_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Transforms_2IPO_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,112 @@
+<!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: IPO.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_5c61f109262ee79315cb0ac1a5e1be6f.html">Transforms</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">Transforms/IPO.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include <vector></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Transforms/IPO.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="Transforms_2IPO_8h__incl.png" border="0" usemap="#IPO_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="Transforms_2IPO_8h__dep__incl.png" border="0" usemap="#IPO_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="Transforms_2IPO_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 colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ModulePass * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a7bfdf6f6f7167662e401029632e96831">llvm::createStripSymbolsPass</a> (<a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> OnlyDebugInfo=<a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ModulePass * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a1db00985e41caeb8beb337b4d2f12656">llvm::createStripNonDebugSymbolsPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ModulePass * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a281ce9c72a90a182d8e684f530a7d050">llvm::createStripDebugDeclarePass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ModulePass * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a55467237450c1d3a41d05123d1eccc03">llvm::createStripDeadDebugInfoPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ModulePass * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a44bd3e9371c96ec5113cdfa21a566bd5">llvm::createConstantMergePass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1ModulePass.html">ModulePass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#ab3bf4dcd8619f4349d7bc20ad1c0fccc">llvm::createGlobalOptimizerPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ModulePass * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a75c38878bd94c67a9e30143bfa03a105">llvm::createGlobalDCEPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1ModulePass.html">ModulePass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a687dbc992bee09979e5a3ad6d64228fc">llvm::createGVExtractionPass</a> (std::vector< <a class="el" href="classllvm_1_1GlobalValue.html">GlobalValue</a> * > &GVs, <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> deleteFn=<a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1Pass.html">Pass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a7a9820a919f39641bb331ebe3baed939">llvm::createFunctionInliningPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1Pass.html">Pass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a2735cbf25e7deea5f21ce2875cf40beb">llvm::createFunctionInliningPass</a> (int <a class="el" href="LoopUnswitch_8cpp.html#a815e638c738b221b797674c5c63524bb">Threshold</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1Pass.html">Pass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a852935189b67dcabffa0dd98173bc256">llvm::createAlwaysInlinerPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1Pass.html">Pass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a7df5f9197cc2d8930d0897e8c5040b04">llvm::createAlwaysInlinerPass</a> (<a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> InsertLifetime)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1Pass.html">Pass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a1e212b54f16e966e8e4358c5ef8fe1cc">llvm::createPruneEHPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1ModulePass.html">ModulePass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a50658ed3bf242e043274c135cd027a95">llvm::createInternalizePass</a> (const std::vector< const <a class="el" href="classchar.html">char</a> * > &exportList)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1ModulePass.html">ModulePass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a35c28f169f39e24916bbadc99b05ed5c">llvm::createInternalizePass</a> ()</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">createInternalizePass - Same as above, but with an empty exportList.  <a href="#a35c28f169f39e24916bbadc99b05ed5c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ModulePass * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#aa2dd61067e690ea927b852fa7e0b4317">llvm::createDeadArgEliminationPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1ModulePass.html">ModulePass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#ae6cc56f0b4b54792d6733188c7c49e92">llvm::createDeadArgHackingPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1Pass.html">Pass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a7207382fdf2cf1c66ec3aadbeb392b45">llvm::createArgumentPromotionPass</a> (<a class="el" href="classunsigned.html">unsigned</a> maxElements=3)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ModulePass * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a538e077fdf7499fc5557abc76d12a822">llvm::createIPConstantPropagationPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1ModulePass.html">ModulePass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#aa6f489c7aa230a684df34c4c026887a2">llvm::createIPSCCPPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Pass * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a45daa1faaa514ebb714262a6bd7f90da">llvm::createLoopExtractorPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1Pass.html">Pass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a7e59712594721d4fcfea4ffe36e942d4">llvm::createSingleLoopExtractorPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ModulePass * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#aa00a3be162786535754940bf0adfc647">llvm::createBlockExtractorPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1ModulePass.html">ModulePass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a652e69f2b0ca2a3eb040edc3bf66ea43">llvm::createStripDeadPrototypesPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1Pass.html">Pass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a9aa5140290971faf01dea58161793bbe">llvm::createFunctionAttrsPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1ModulePass.html">ModulePass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a5e8e6bd878ca3ec35f876325f0bc6d42">llvm::createMergeFunctionsPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ModulePass * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a0d882b2c0374f0ee9207c8629cd6d51b">llvm::createPartialInliningPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ModulePass * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a9aa723343efaef54e39a52e86b52edb6">llvm::createMetaRenamerPass</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1ModulePass.html">ModulePass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#aaa0546121ccb6a6f3638d0d692dbb5f8">llvm::createBarrierNoopPass</a> ()</td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:30 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/Transforms_2IPO_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Transforms_2IPO_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Transforms_2IPO_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Transforms_2IPO_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,2 @@
+<map id="G" name="G">
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Transforms_2Vectorize_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Transforms_2Vectorize_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Transforms_2Vectorize_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Transforms_2Vectorize_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,84 @@
+<!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: Vectorize.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_5c61f109262ee79315cb0ac1a5e1be6f.html">Transforms</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Transforms/Vectorize.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<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="Transforms_2Vectorize_8h__dep__incl.png" border="0" usemap="#Vectorize_8hdep" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="Transforms_2Vectorize_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_1VectorizeConfig.html">llvm::VectorizeConfig</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Vectorize configuration.  <a href="structllvm_1_1VectorizeConfig.html#details">More...</a><br/></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="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1BasicBlockPass.html">BasicBlockPass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a61e35126f177fb87b78b17b15d088c40">llvm::createBBVectorizePass</a> (const <a class="el" href="structllvm_1_1VectorizeConfig.html">VectorizeConfig</a> &C=<a class="el" href="structllvm_1_1VectorizeConfig.html">VectorizeConfig</a>())</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1Pass.html">Pass</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#afbbb84b4e3862dbf87ff3b6966dab634">llvm::createLoopVectorizePass</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.html#a5b567fc277e421c0fcf410d126afc1c9">llvm::vectorizeBasicBlock</a> (<a class="el" href="classllvm_1_1Pass.html">Pass</a> *P, <a class="el" href="classllvm_1_1BasicBlock.html">BasicBlock</a> &BB, const <a class="el" href="structllvm_1_1VectorizeConfig.html">VectorizeConfig</a> &C=<a class="el" href="structllvm_1_1VectorizeConfig.html">VectorizeConfig</a>())</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Vectorize the <a class="el" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>.  <a href="#a5b567fc277e421c0fcf410d126afc1c9"></a><br/></td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:57 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/Transforms_2Vectorize_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Transforms_2Vectorize_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Transforms_2Vectorize_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Transforms_2Vectorize_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="Vectorize.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="LinkAllPasses.h",height=0.2,width=0.4,color="black",URL="$LinkAllPasses_8h.html"];
+  Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="PassManagerBuilder.cpp",height=0.2,width=0.4,color="black",URL="$PassManagerBuilder_8cpp.html"];
+  Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="BBVectorize.cpp",height=0.2,width=0.4,color="black",URL="$BBVectorize_8cpp.html"];
+  Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="Vectorize.cpp",height=0.2,width=0.4,color="black",URL="$Vectorize_8cpp.html"];
+}

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Twine_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Twine_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Twine_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Twine_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: Twine.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_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Twine.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Twine_8h_source.html">llvm/ADT/Twine.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallString_8h_source.html">llvm/ADT/SmallString.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="raw__ostream_8h_source.html">llvm/Support/raw_ostream.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Twine.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="Twine_8cpp__incl.png" border="0" usemap="#Twine_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="Twine_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: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/Twine_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Twine_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Twine_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Twine_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,89 @@
+<!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: Twine.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">Twine.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="StringRef_8h_source.html">llvm/ADT/StringRef.h</a>"</code><br/>
+<code>#include "<a class="el" href="DataTypes_8h_source.html">llvm/Support/DataTypes.h</a>"</code><br/>
+<code>#include "<a class="el" href="ErrorHandling_8h_source.html">llvm/Support/ErrorHandling.h</a>"</code><br/>
+<code>#include <cassert></code><br/>
+<code>#include <string></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Twine.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="Twine_8h__incl.png" border="0" usemap="#Twine_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="Twine_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_1Twine.html">llvm::Twine</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">union  </td><td class="memItemRight" valign="bottom"><b>llvm::Twine::Child</b></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="func-members"></a>
+Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Twine Inline Implementations</div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Twine </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a4443c9d3decc13b50e28950634dfeb9c">llvm::operator+</a> (const Twine &LHS, const Twine &RHS)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Twine </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#afd815053cb6c63eeeaf4f8e9d8022424">llvm::operator+</a> (const <a class="el" href="classchar.html">char</a> *LHS, const StringRef &RHS)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Twine </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a1834d179c8175c71e444052bc98462a3">llvm::operator+</a> (const StringRef &LHS, const <a class="el" href="classchar.html">char</a> *RHS)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">raw_ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#aef429a82df50c0ccc8e7c216e28b01dd">llvm::operator<<</a> (raw_ostream &OS, const Twine &RHS)</td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39: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/TwoAddressInstructionPass_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/TwoAddressInstructionPass_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/TwoAddressInstructionPass_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/TwoAddressInstructionPass_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,1690 @@
+<!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: TwoAddressInstructionPass.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>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">TwoAddressInstructionPass.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="TwoAddressInstructionPass_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- TwoAddressInstructionPass.cpp - Two-Address instruction pass ------===//</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 TwoAddress instruction pass which is used</span>
+<a name="l00011"></a>00011 <span class="comment">// by most register allocators. Two-Address instructions are rewritten</span>
+<a name="l00012"></a>00012 <span class="comment">// from:</span>
+<a name="l00013"></a>00013 <span class="comment">//</span>
+<a name="l00014"></a>00014 <span class="comment">//     A = B op C</span>
+<a name="l00015"></a>00015 <span class="comment">//</span>
+<a name="l00016"></a>00016 <span class="comment">// to:</span>
+<a name="l00017"></a>00017 <span class="comment">//</span>
+<a name="l00018"></a>00018 <span class="comment">//     A = B</span>
+<a name="l00019"></a>00019 <span class="comment">//     A op= C</span>
+<a name="l00020"></a>00020 <span class="comment">//</span>
+<a name="l00021"></a>00021 <span class="comment">// Note that if a register allocator chooses to use this pass, that it</span>
+<a name="l00022"></a>00022 <span class="comment">// has to be capable of handling the non-SSA nature of these rewritten</span>
+<a name="l00023"></a>00023 <span class="comment">// virtual registers.</span>
+<a name="l00024"></a>00024 <span class="comment">//</span>
+<a name="l00025"></a>00025 <span class="comment">// It is also worth noting that the duplicate operand of the two</span>
+<a name="l00026"></a>00026 <span class="comment">// address instruction is removed.</span>
+<a name="l00027"></a>00027 <span class="comment">//</span>
+<a name="l00028"></a>00028 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00029"></a>00029 
+<a name="l00030"></a><a class="code" href="TwoAddressInstructionPass_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">00030</a> <span class="preprocessor">#define DEBUG_TYPE "twoaddrinstr"</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="CodeGen_2Passes_8h.html">llvm/CodeGen/Passes.h</a>"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="Function_8h.html">llvm/Function.h</a>"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="LiveIntervalAnalysis_8h.html">llvm/CodeGen/LiveIntervalAnalysis.h</a>"</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="LiveVariables_8h.html">llvm/CodeGen/LiveVariables.h</a>"</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="MachineFunctionPass_8h.html">llvm/CodeGen/MachineFunctionPass.h</a>"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="MachineInstr_8h.html">llvm/CodeGen/MachineInstr.h</a>"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="MachineInstrBuilder_8h.html">llvm/CodeGen/MachineInstrBuilder.h</a>"</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="MachineRegisterInfo_8h.html">llvm/CodeGen/MachineRegisterInfo.h</a>"</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="AliasAnalysis_8h.html">llvm/Analysis/AliasAnalysis.h</a>"</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include "<a class="code" href="MCInstrItineraries_8h.html">llvm/MC/MCInstrItineraries.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="TargetInstrInfo_8h.html">llvm/Target/TargetInstrInfo.h</a>"</span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="Target_2TargetMachine_8h.html">llvm/Target/TargetMachine.h</a>"</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="TargetOptions_8h.html">llvm/Target/TargetOptions.h</a>"</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="Debug_8h.html">llvm/Support/Debug.h</a>"</span>
+<a name="l00046"></a>00046 <span class="preprocessor">#include "<a class="code" href="ErrorHandling_8h.html">llvm/Support/ErrorHandling.h</a>"</span>
+<a name="l00047"></a>00047 <span class="preprocessor">#include "<a class="code" href="BitVector_8h.html">llvm/ADT/BitVector.h</a>"</span>
+<a name="l00048"></a>00048 <span class="preprocessor">#include "<a class="code" href="DenseMap_8h.html">llvm/ADT/DenseMap.h</a>"</span>
+<a name="l00049"></a>00049 <span class="preprocessor">#include "<a class="code" href="SmallSet_8h.html">llvm/ADT/SmallSet.h</a>"</span>
+<a name="l00050"></a>00050 <span class="preprocessor">#include "<a class="code" href="Statistic_8h.html">llvm/ADT/Statistic.h</a>"</span>
+<a name="l00051"></a>00051 <span class="preprocessor">#include "<a class="code" href="STLExtras_8h.html">llvm/ADT/STLExtras.h</a>"</span>
+<a name="l00052"></a>00052 <span class="keyword">using namespace </span>llvm;
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumTwoAddressInstrs, <span class="stringliteral">"Number of two-address instructions"</span>);
+<a name="l00055"></a>00055 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumCommuted        , <span class="stringliteral">"Number of instructions commuted to coalesce"</span>);
+<a name="l00056"></a>00056 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumAggrCommuted    , <span class="stringliteral">"Number of instructions aggressively commuted"</span>);
+<a name="l00057"></a>00057 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumConvertedTo3Addr, <span class="stringliteral">"Number of instructions promoted to 3-address"</span>);
+<a name="l00058"></a>00058 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(Num3AddrSunk,        <span class="stringliteral">"Number of 3-address instructions sunk"</span>);
+<a name="l00059"></a>00059 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumReSchedUps,       <span class="stringliteral">"Number of instructions re-scheduled up"</span>);
+<a name="l00060"></a>00060 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumReSchedDowns,     <span class="stringliteral">"Number of instructions re-scheduled down"</span>);
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062 <span class="keyword">namespace </span>{
+<a name="l00063"></a>00063 <span class="keyword">class </span>TwoAddressInstructionPass : <span class="keyword">public</span> <a class="code" href="classllvm_1_1MachineFunctionPass.html">MachineFunctionPass</a> {
+<a name="l00064"></a>00064   <a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a> *MF;
+<a name="l00065"></a>00065   <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetInstrInfo.html">TargetInstrInfo</a> *TII;
+<a name="l00066"></a>00066   <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a> *TRI;
+<a name="l00067"></a>00067   <span class="keyword">const</span> <a class="code" href="classllvm_1_1InstrItineraryData.html">InstrItineraryData</a> *InstrItins;
+<a name="l00068"></a>00068   <a class="code" href="classllvm_1_1MachineRegisterInfo.html">MachineRegisterInfo</a> *MRI;
+<a name="l00069"></a>00069   <a class="code" href="classllvm_1_1LiveVariables.html">LiveVariables</a> *LV;
+<a name="l00070"></a>00070   <a class="code" href="classllvm_1_1SlotIndexes.html">SlotIndexes</a> *Indexes;
+<a name="l00071"></a>00071   <a class="code" href="classllvm_1_1LiveIntervals.html">LiveIntervals</a> *LIS;
+<a name="l00072"></a>00072   <a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a> *AA;
+<a name="l00073"></a>00073   <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4">CodeGenOpt::Level</a> OptLevel;
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075   <span class="comment">// The current basic block being processed.</span>
+<a name="l00076"></a>00076   <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *MBB;
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078   <span class="comment">// DistanceMap - Keep track the distance of a MI from the start of the</span>
+<a name="l00079"></a>00079   <span class="comment">// current basic block.</span>
+<a name="l00080"></a>00080   <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<MachineInstr*, unsigned></a> DistanceMap;
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082   <span class="comment">// Set of already processed instructions in the current block.</span>
+<a name="l00083"></a>00083   <a class="code" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet<MachineInstr*, 8></a> Processed;
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085   <span class="comment">// SrcRegMap - A map from virtual registers to physical registers which are</span>
+<a name="l00086"></a>00086   <span class="comment">// likely targets to be coalesced to due to copies from physical registers to</span>
+<a name="l00087"></a>00087   <span class="comment">// virtual registers. e.g. v1024 = move r0.</span>
+<a name="l00088"></a>00088   <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<unsigned, unsigned></a> SrcRegMap;
+<a name="l00089"></a>00089 
+<a name="l00090"></a>00090   <span class="comment">// DstRegMap - A map from virtual registers to physical registers which are</span>
+<a name="l00091"></a>00091   <span class="comment">// likely targets to be coalesced to due to copies to physical registers from</span>
+<a name="l00092"></a>00092   <span class="comment">// virtual registers. e.g. r1 = move v1024.</span>
+<a name="l00093"></a>00093   <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<unsigned, unsigned></a> DstRegMap;
+<a name="l00094"></a>00094 <span class="comment"></span>
+<a name="l00095"></a>00095 <span class="comment">  /// RegSequences - Keep track the list of REG_SEQUENCE instructions seen</span>
+<a name="l00096"></a>00096 <span class="comment">  /// during the initial walk of the machine function.</span>
+<a name="l00097"></a>00097 <span class="comment"></span>  <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<MachineInstr*, 16></a> RegSequences;
+<a name="l00098"></a>00098 
+<a name="l00099"></a>00099   <span class="keywordtype">bool</span> sink3AddrInstruction(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>,
+<a name="l00100"></a>00100                             <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> OldPos);
+<a name="l00101"></a>00101 
+<a name="l00102"></a>00102   <span class="keywordtype">bool</span> noUseAfterLastDef(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>, <span class="keywordtype">unsigned</span> Dist, <span class="keywordtype">unsigned</span> &LastDef);
+<a name="l00103"></a>00103 
+<a name="l00104"></a>00104   <span class="keywordtype">bool</span> isProfitableToCommute(<span class="keywordtype">unsigned</span> regA, <span class="keywordtype">unsigned</span> regB, <span class="keywordtype">unsigned</span> regC,
+<a name="l00105"></a>00105                              <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <span class="keywordtype">unsigned</span> Dist);
+<a name="l00106"></a>00106 
+<a name="l00107"></a>00107   <span class="keywordtype">bool</span> commuteInstruction(<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &mi,
+<a name="l00108"></a>00108                           <span class="keywordtype">unsigned</span> RegB, <span class="keywordtype">unsigned</span> RegC, <span class="keywordtype">unsigned</span> Dist);
+<a name="l00109"></a>00109 
+<a name="l00110"></a>00110   <span class="keywordtype">bool</span> isProfitableToConv3Addr(<span class="keywordtype">unsigned</span> RegA, <span class="keywordtype">unsigned</span> RegB);
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112   <span class="keywordtype">bool</span> convertInstTo3Addr(<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &mi,
+<a name="l00113"></a>00113                           <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &nmi,
+<a name="l00114"></a>00114                           <span class="keywordtype">unsigned</span> RegA, <span class="keywordtype">unsigned</span> RegB, <span class="keywordtype">unsigned</span> Dist);
+<a name="l00115"></a>00115 
+<a name="l00116"></a>00116   <span class="keywordtype">bool</span> isDefTooClose(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>, <span class="keywordtype">unsigned</span> Dist, <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>);
+<a name="l00117"></a>00117 
+<a name="l00118"></a>00118   <span class="keywordtype">bool</span> rescheduleMIBelowKill(<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &mi,
+<a name="l00119"></a>00119                              <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &nmi,
+<a name="l00120"></a>00120                              <span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>);
+<a name="l00121"></a>00121   <span class="keywordtype">bool</span> rescheduleKillAboveMI(<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &mi,
+<a name="l00122"></a>00122                              <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &nmi,
+<a name="l00123"></a>00123                              <span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>);
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125   <span class="keywordtype">bool</span> tryInstructionTransform(<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &mi,
+<a name="l00126"></a>00126                                <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &nmi,
+<a name="l00127"></a>00127                                <span class="keywordtype">unsigned</span> SrcIdx, <span class="keywordtype">unsigned</span> DstIdx,
+<a name="l00128"></a>00128                                <span class="keywordtype">unsigned</span> Dist);
+<a name="l00129"></a>00129 
+<a name="l00130"></a>00130   <span class="keywordtype">void</span> scanUses(<span class="keywordtype">unsigned</span> DstReg);
+<a name="l00131"></a>00131 
+<a name="l00132"></a>00132   <span class="keywordtype">void</span> processCopy(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>);
+<a name="l00133"></a>00133 
+<a name="l00134"></a>00134   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<std::pair<unsigned, unsigned></a>, 4> TiedPairList;
+<a name="l00135"></a>00135   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallDenseMap.html">SmallDenseMap<unsigned, TiedPairList></a> TiedOperandMap;
+<a name="l00136"></a>00136   <span class="keywordtype">bool</span> collectTiedOperands(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, TiedOperandMap&);
+<a name="l00137"></a>00137   <span class="keywordtype">void</span> processTiedPairs(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, TiedPairList&, <span class="keywordtype">unsigned</span> &Dist);
+<a name="l00138"></a>00138 <span class="comment"></span>
+<a name="l00139"></a>00139 <span class="comment">  /// eliminateRegSequences - Eliminate REG_SEQUENCE instructions as part of</span>
+<a name="l00140"></a>00140 <span class="comment">  /// the de-ssa process. This replaces sources of REG_SEQUENCE as sub-register</span>
+<a name="l00141"></a>00141 <span class="comment">  /// references of the register defined by REG_SEQUENCE.</span>
+<a name="l00142"></a>00142 <span class="comment"></span>  <span class="keywordtype">bool</span> eliminateRegSequences();
+<a name="l00143"></a>00143 
+<a name="l00144"></a>00144 <span class="keyword">public</span>:
+<a name="l00145"></a>00145   <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>; <span class="comment">// Pass identification, replacement for typeid</span>
+<a name="l00146"></a>00146   TwoAddressInstructionPass() : <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>) {
+<a name="l00147"></a>00147     <a class="code" href="namespacellvm.html#a70671a37747699d83fa660b2e9b18c0a">initializeTwoAddressInstructionPassPass</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00148"></a>00148   }
+<a name="l00149"></a>00149 
+<a name="l00150"></a>00150   <span class="keyword">virtual</span> <span class="keywordtype">void</span> getAnalysisUsage(<a class="code" href="classllvm_1_1AnalysisUsage.html">AnalysisUsage</a> &AU)<span class="keyword"> const </span>{
+<a name="l00151"></a>00151     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#af11a6ebf7ab3c388234cb6d5378439a3">setPreservesCFG</a>();
+<a name="l00152"></a>00152     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>>();
+<a name="l00153"></a>00153     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a884f90190bca4bd354f2d5c91c264028">addPreserved</a><<a class="code" href="classllvm_1_1LiveVariables.html">LiveVariables</a>>();
+<a name="l00154"></a>00154     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a884f90190bca4bd354f2d5c91c264028">addPreserved</a><<a class="code" href="classllvm_1_1SlotIndexes.html">SlotIndexes</a>>();
+<a name="l00155"></a>00155     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a884f90190bca4bd354f2d5c91c264028">addPreserved</a><<a class="code" href="classllvm_1_1LiveIntervals.html">LiveIntervals</a>>();
+<a name="l00156"></a>00156     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a40970e5d42646fb2d9aa5f7a2c879516">addPreservedID</a>(<a class="code" href="namespacellvm.html#a60b90e9a630631cf67aaef4679ffbf62" title="MachineLoopInfo - This pass is a loop analysis pass.">MachineLoopInfoID</a>);
+<a name="l00157"></a>00157     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a40970e5d42646fb2d9aa5f7a2c879516">addPreservedID</a>(<a class="code" href="namespacellvm.html#a5a36a0d02a1629e4c1c8c6c587d01e5b" title="MachineDominators - This pass is a machine dominators analysis pass.">MachineDominatorsID</a>);
+<a name="l00158"></a>00158     <a class="code" href="classllvm_1_1MachineFunctionPass.html#aa1eece37d175f86a6f4808c0c167f13b">MachineFunctionPass::getAnalysisUsage</a>(AU);
+<a name="l00159"></a>00159   }
+<a name="l00160"></a>00160 <span class="comment"></span>
+<a name="l00161"></a>00161 <span class="comment">  /// runOnMachineFunction - Pass entry point.</span>
+<a name="l00162"></a>00162 <span class="comment"></span>  <span class="keywordtype">bool</span> runOnMachineFunction(<a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a>&);
+<a name="l00163"></a>00163 };
+<a name="l00164"></a>00164 } <span class="comment">// end anonymous namespace</span>
+<a name="l00165"></a>00165 
+<a name="l00166"></a>00166 <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">TwoAddressInstructionPass::ID</a> = 0;
+<a name="l00167"></a>00167 <a class="code" href="PassSupport_8h.html#aaa970fc931c1c63037a8182e028d04b1">INITIALIZE_PASS_BEGIN</a>(TwoAddressInstructionPass, <span class="stringliteral">"twoaddressinstruction"</span>,
+<a name="l00168"></a>00168                 <span class="stringliteral">"Two-Address instruction pass"</span>, <span class="keyword">false</span>, <span class="keyword">false</span>)
+<a name="l00169"></a>00169 <a class="code" href="PassSupport_8h.html#af0564bcdde2dd4400c670ca278c6035f">INITIALIZE_AG_DEPENDENCY</a>(<a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>)
+<a name="l00170"></a><a class="code" href="TwoAddressInstructionPass_8cpp.html#a81f2062f34d6c31cd01a3768010906e2">00170</a> <a class="code" href="PassSupport_8h.html#a74ce8276b89067e806f67c45a6d92575">INITIALIZE_PASS_END</a>(TwoAddressInstructionPass, "<a class="code" href="TwoAddressInstructionPass_8cpp.html#a81f2062f34d6c31cd01a3768010906e2">twoaddressinstruction</a>",
+<a name="l00171"></a>00171                 "Two-Address instruction <a class="code" href="TwoAddressInstructionPass_8cpp.html#a34b5cf133e2453a532a504197fec9171">pass</a>", <a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>, false)
+<a name="l00172"></a>00172 
+<a name="l00173"></a><a class="code" href="namespacellvm.html#aee3c81bb34214274866412f112af4b2c">00173</a> <span class="keywordtype">char</span> &llvm::<a class="code" href="namespacellvm.html#aee3c81bb34214274866412f112af4b2c">TwoAddressInstructionPassID</a> = TwoAddressInstructionPass::<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>;
+<a name="l00174"></a>00174 <span class="comment"></span>
+<a name="l00175"></a>00175 <span class="comment">/// sink3AddrInstruction - A two-address instruction has been converted to a</span>
+<a name="l00176"></a>00176 <span class="comment">/// three-address instruction to avoid clobbering a register. Try to sink it</span>
+<a name="l00177"></a>00177 <span class="comment">/// past the instruction that would kill the above mentioned register to reduce</span>
+<a name="l00178"></a>00178 <span class="comment">/// register pressure.</span>
+<a name="l00179"></a>00179 <span class="comment"></span><span class="keywordtype">bool</span> TwoAddressInstructionPass::
+<a name="l00180"></a>00180 sink3AddrInstruction(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <span class="keywordtype">unsigned</span> SavedReg,
+<a name="l00181"></a>00181                      <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a>::<a class="code" href="classstd_1_1iterator.html">iterator</a> OldPos) {
+<a name="l00182"></a>00182   <span class="comment">// FIXME: Shouldn't we be trying to do this before we three-addressify the</span>
+<a name="l00183"></a>00183   <span class="comment">// instruction?  After this transformation is done, we no longer need</span>
+<a name="l00184"></a>00184   <span class="comment">// the instruction to be in three-address form.</span>
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186   <span class="comment">// Check if it's safe to move this instruction.</span>
+<a name="l00187"></a>00187   <span class="keywordtype">bool</span> SeenStore = <span class="keyword">true</span>; <span class="comment">// Be conservative.</span>
+<a name="l00188"></a>00188   <span class="keywordflow">if</span> (!MI->isSafeToMove(TII, AA, SeenStore))
+<a name="l00189"></a>00189     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00190"></a>00190 
+<a name="l00191"></a>00191   <span class="keywordtype">unsigned</span> DefReg = 0;
+<a name="l00192"></a>00192   <a class="code" href="classllvm_1_1SmallSet.html">SmallSet<unsigned, 4></a> UseRegs;
+<a name="l00193"></a>00193 
+<a name="l00194"></a>00194   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = MI->getNumOperands(); i != e; ++i) {
+<a name="l00195"></a>00195     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = MI->getOperand(i);
+<a name="l00196"></a>00196     <span class="keywordflow">if</span> (!MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>())
+<a name="l00197"></a>00197       <span class="keywordflow">continue</span>;
+<a name="l00198"></a>00198     <span class="keywordtype">unsigned</span> MOReg = MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l00199"></a>00199     <span class="keywordflow">if</span> (!MOReg)
+<a name="l00200"></a>00200       <span class="keywordflow">continue</span>;
+<a name="l00201"></a>00201     <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>() && MOReg != SavedReg)
+<a name="l00202"></a>00202       UseRegs.<a class="code" href="classllvm_1_1SmallSet.html#a8d8348060ccdeeba13fb8bc651dfbf82" title="insert - Insert an element into the set if it isn't already there.">insert</a>(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>());
+<a name="l00203"></a>00203     <span class="keywordflow">if</span> (!MO.<a class="code" href="classllvm_1_1MachineOperand.html#a8de7d5cf38939044471c6ee60a01a3df">isDef</a>())
+<a name="l00204"></a>00204       <span class="keywordflow">continue</span>;
+<a name="l00205"></a>00205     <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a40a5d6e03f5bfd15839355a7c39ab3a0">isImplicit</a>())
+<a name="l00206"></a>00206       <span class="comment">// Don't try to move it if it implicitly defines a register.</span>
+<a name="l00207"></a>00207       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00208"></a>00208     <span class="keywordflow">if</span> (DefReg)
+<a name="l00209"></a>00209       <span class="comment">// For now, don't move any instructions that define multiple registers.</span>
+<a name="l00210"></a>00210       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00211"></a>00211     DefReg = MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l00212"></a>00212   }
+<a name="l00213"></a>00213 
+<a name="l00214"></a>00214   <span class="comment">// Find the instruction that kills SavedReg.</span>
+<a name="l00215"></a>00215   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *KillMI = NULL;
+<a name="l00216"></a>00216   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineRegisterInfo_1_1defusechain__iterator.html">MachineRegisterInfo::use_nodbg_iterator</a>
+<a name="l00217"></a>00217          UI = MRI->use_nodbg_begin(SavedReg),
+<a name="l00218"></a>00218          UE = MRI->use_nodbg_end(); UI != UE; ++UI) {
+<a name="l00219"></a>00219     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &UseMO = UI.getOperand();
+<a name="l00220"></a>00220     <span class="keywordflow">if</span> (!UseMO.<a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>())
+<a name="l00221"></a>00221       <span class="keywordflow">continue</span>;
+<a name="l00222"></a>00222     KillMI = UseMO.<a class="code" href="classllvm_1_1MachineOperand.html#acad8fe90886f92eabced0c2f9bd0e6f5">getParent</a>();
+<a name="l00223"></a>00223     <span class="keywordflow">break</span>;
+<a name="l00224"></a>00224   }
+<a name="l00225"></a>00225 
+<a name="l00226"></a>00226   <span class="comment">// If we find the instruction that kills SavedReg, and it is in an</span>
+<a name="l00227"></a>00227   <span class="comment">// appropriate location, we can try to sink the current instruction</span>
+<a name="l00228"></a>00228   <span class="comment">// past it.</span>
+<a name="l00229"></a>00229   <span class="keywordflow">if</span> (!KillMI || KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>() != MBB || KillMI == MI ||
+<a name="l00230"></a>00230       KillMI == OldPos || KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#aea36f6665e4992da1874625d5f00e1c1">isTerminator</a>())
+<a name="l00231"></a>00231     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00232"></a>00232 
+<a name="l00233"></a>00233   <span class="comment">// If any of the definitions are used by another instruction between the</span>
+<a name="l00234"></a>00234   <span class="comment">// position and the kill use, then it's not safe to sink it.</span>
+<a name="l00235"></a>00235   <span class="comment">//</span>
+<a name="l00236"></a>00236   <span class="comment">// FIXME: This can be sped up if there is an easy way to query whether an</span>
+<a name="l00237"></a>00237   <span class="comment">// instruction is before or after another instruction. Then we can use</span>
+<a name="l00238"></a>00238   <span class="comment">// MachineRegisterInfo def / use instead.</span>
+<a name="l00239"></a>00239   <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> *KillMO = NULL;
+<a name="l00240"></a>00240   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> KillPos = KillMI;
+<a name="l00241"></a>00241   ++KillPos;
+<a name="l00242"></a>00242 
+<a name="l00243"></a>00243   <span class="keywordtype">unsigned</span> NumVisited = 0;
+<a name="l00244"></a>00244   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = <a class="code" href="namespacellvm.html#aa1704159f75e6eacd595962ea6d93ffe">llvm::next</a>(OldPos); <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != KillPos; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00245"></a>00245     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *OtherMI = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00246"></a>00246     <span class="comment">// DBG_VALUE cannot be counted against the limit.</span>
+<a name="l00247"></a>00247     <span class="keywordflow">if</span> (OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#a1e1d26226c627cf3dcf3c191b85e7d7d">isDebugValue</a>())
+<a name="l00248"></a>00248       <span class="keywordflow">continue</span>;
+<a name="l00249"></a>00249     <span class="keywordflow">if</span> (NumVisited > 30)  <span class="comment">// FIXME: Arbitrary limit to reduce compile time cost.</span>
+<a name="l00250"></a>00250       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00251"></a>00251     ++NumVisited;
+<a name="l00252"></a>00252     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>(); i != e; ++i) {
+<a name="l00253"></a>00253       <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i);
+<a name="l00254"></a>00254       <span class="keywordflow">if</span> (!MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>())
+<a name="l00255"></a>00255         <span class="keywordflow">continue</span>;
+<a name="l00256"></a>00256       <span class="keywordtype">unsigned</span> MOReg = MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l00257"></a>00257       <span class="keywordflow">if</span> (!MOReg)
+<a name="l00258"></a>00258         <span class="keywordflow">continue</span>;
+<a name="l00259"></a>00259       <span class="keywordflow">if</span> (DefReg == MOReg)
+<a name="l00260"></a>00260         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00261"></a>00261 
+<a name="l00262"></a>00262       <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>()) {
+<a name="l00263"></a>00263         <span class="keywordflow">if</span> (OtherMI == KillMI && MOReg == SavedReg)
+<a name="l00264"></a>00264           <span class="comment">// Save the operand that kills the register. We want to unset the kill</span>
+<a name="l00265"></a>00265           <span class="comment">// marker if we can sink MI past it.</span>
+<a name="l00266"></a>00266           KillMO = &MO;
+<a name="l00267"></a>00267         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (UseRegs.<a class="code" href="classllvm_1_1SmallSet.html#ab28aa342862f6d16361be514fd98c22e" title="count - Return true if the element is in the set.">count</a>(MOReg))
+<a name="l00268"></a>00268           <span class="comment">// One of the uses is killed before the destination.</span>
+<a name="l00269"></a>00269           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00270"></a>00270       }
+<a name="l00271"></a>00271     }
+<a name="l00272"></a>00272   }
+<a name="l00273"></a>00273   assert(KillMO && <span class="stringliteral">"Didn't find kill"</span>);
+<a name="l00274"></a>00274 
+<a name="l00275"></a>00275   <span class="comment">// Update kill and LV information.</span>
+<a name="l00276"></a>00276   KillMO-><a class="code" href="classllvm_1_1MachineOperand.html#a8a82683fccdef8a5ef772ef03277aee7">setIsKill</a>(<span class="keyword">false</span>);
+<a name="l00277"></a>00277   KillMO = MI->findRegisterUseOperand(SavedReg, <span class="keyword">false</span>, TRI);
+<a name="l00278"></a>00278   KillMO-><a class="code" href="classllvm_1_1MachineOperand.html#a8a82683fccdef8a5ef772ef03277aee7">setIsKill</a>(<span class="keyword">true</span>);
+<a name="l00279"></a>00279 
+<a name="l00280"></a>00280   <span class="keywordflow">if</span> (LV)
+<a name="l00281"></a>00281     LV->replaceKillInstruction(SavedReg, KillMI, MI);
+<a name="l00282"></a>00282 
+<a name="l00283"></a>00283   <span class="comment">// Move instruction to its destination.</span>
+<a name="l00284"></a>00284   MBB->remove(MI);
+<a name="l00285"></a>00285   MBB->insert(KillPos, MI);
+<a name="l00286"></a>00286 
+<a name="l00287"></a>00287   <span class="keywordflow">if</span> (LIS)
+<a name="l00288"></a>00288     LIS->handleMove(MI);
+<a name="l00289"></a>00289 
+<a name="l00290"></a>00290   ++Num3AddrSunk;
+<a name="l00291"></a>00291   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00292"></a>00292 }
+<a name="l00293"></a>00293 <span class="comment"></span>
+<a name="l00294"></a>00294 <span class="comment">/// noUseAfterLastDef - Return true if there are no intervening uses between the</span>
+<a name="l00295"></a>00295 <span class="comment">/// last instruction in the MBB that defines the specified register and the</span>
+<a name="l00296"></a>00296 <span class="comment">/// two-address instruction which is being processed. It also returns the last</span>
+<a name="l00297"></a>00297 <span class="comment">/// def location by reference</span>
+<a name="l00298"></a>00298 <span class="comment"></span><span class="keywordtype">bool</span> TwoAddressInstructionPass::noUseAfterLastDef(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>, <span class="keywordtype">unsigned</span> Dist,
+<a name="l00299"></a>00299                                                   <span class="keywordtype">unsigned</span> &LastDef) {
+<a name="l00300"></a>00300   LastDef = 0;
+<a name="l00301"></a>00301   <span class="keywordtype">unsigned</span> LastUse = Dist;
+<a name="l00302"></a>00302   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineRegisterInfo_1_1defusechain__iterator.html">MachineRegisterInfo::reg_iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = MRI->reg_begin(Reg),
+<a name="l00303"></a>00303          E = MRI->reg_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="l00304"></a>00304     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>.getOperand();
+<a name="l00305"></a>00305     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a> = MO.<a class="code" href="classllvm_1_1MachineOperand.html#acad8fe90886f92eabced0c2f9bd0e6f5">getParent</a>();
+<a name="l00306"></a>00306     <span class="keywordflow">if</span> (MI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>() != MBB || MI-><a class="code" href="classllvm_1_1MachineInstr.html#a1e1d26226c627cf3dcf3c191b85e7d7d">isDebugValue</a>())
+<a name="l00307"></a>00307       <span class="keywordflow">continue</span>;
+<a name="l00308"></a>00308     <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<MachineInstr*, unsigned>::iterator</a> DI = DistanceMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a21cf94357e53cd1069aba475266fdb63">find</a>(MI);
+<a name="l00309"></a>00309     <span class="keywordflow">if</span> (DI == DistanceMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a321e37d79af8b4287f8a1dcf9aff9c01">end</a>())
+<a name="l00310"></a>00310       <span class="keywordflow">continue</span>;
+<a name="l00311"></a>00311     <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>() && DI->second < LastUse)
+<a name="l00312"></a>00312       LastUse = DI->second;
+<a name="l00313"></a>00313     <a class="code" href="LLParser_8cpp.html#ab86ae2177a3bc7ef5154e74e482cf6bc">if</a> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a8de7d5cf38939044471c6ee60a01a3df">isDef</a>() && DI->second > LastDef)
+<a name="l00314"></a>00314       LastDef = DI->second;
+<a name="l00315"></a>00315   }
+<a name="l00316"></a>00316 
+<a name="l00317"></a>00317   <span class="keywordflow">return</span> !(LastUse > LastDef && LastUse < Dist);
+<a name="l00318"></a>00318 }
+<a name="l00319"></a>00319 <span class="comment"></span>
+<a name="l00320"></a>00320 <span class="comment">/// isCopyToReg - Return true if the specified MI is a copy instruction or</span>
+<a name="l00321"></a>00321 <span class="comment">/// a extract_subreg instruction. It also returns the source and destination</span>
+<a name="l00322"></a>00322 <span class="comment">/// registers and whether they are physical registers by reference.</span>
+<a name="l00323"></a><a class="code" href="TwoAddressInstructionPass_8cpp.html#a3e682d8e3bb0b8f09249a2b3aaf6e53d">00323</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="TwoAddressInstructionPass_8cpp.html#a3e682d8e3bb0b8f09249a2b3aaf6e53d">isCopyToReg</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> &MI, <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetInstrInfo.html">TargetInstrInfo</a> *TII,
+<a name="l00324"></a>00324                         <span class="keywordtype">unsigned</span> &SrcReg, <span class="keywordtype">unsigned</span> &DstReg,
+<a name="l00325"></a>00325                         <span class="keywordtype">bool</span> &IsSrcPhys, <span class="keywordtype">bool</span> &IsDstPhys) {
+<a name="l00326"></a>00326   SrcReg = 0;
+<a name="l00327"></a>00327   DstReg = 0;
+<a name="l00328"></a>00328   <span class="keywordflow">if</span> (MI.<a class="code" href="classllvm_1_1MachineInstr.html#ae0ac5973cd95f76e3365e67aaad69de6">isCopy</a>()) {
+<a name="l00329"></a>00329     DstReg = 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="l00330"></a>00330     SrcReg = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(1).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l00331"></a>00331   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (MI.<a class="code" href="classllvm_1_1MachineInstr.html#a4a81bce0636d52246dbf2170201cd4f2">isInsertSubreg</a>() || MI.<a class="code" href="classllvm_1_1MachineInstr.html#a764d76a5036b1b5debe2b529baf9b47d">isSubregToReg</a>()) {
+<a name="l00332"></a>00332     DstReg = 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="l00333"></a>00333     SrcReg = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(2).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l00334"></a>00334   } <span class="keywordflow">else</span>
+<a name="l00335"></a>00335     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00336"></a>00336 
+<a name="l00337"></a>00337   IsSrcPhys = <a class="code" href="classllvm_1_1TargetRegisterInfo.html#a055858b14215864ed367a8db6c19d6f6">TargetRegisterInfo::isPhysicalRegister</a>(SrcReg);
+<a name="l00338"></a>00338   IsDstPhys = <a class="code" href="classllvm_1_1TargetRegisterInfo.html#a055858b14215864ed367a8db6c19d6f6">TargetRegisterInfo::isPhysicalRegister</a>(DstReg);
+<a name="l00339"></a>00339   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00340"></a>00340 }
+<a name="l00341"></a>00341 <span class="comment"></span>
+<a name="l00342"></a>00342 <span class="comment">/// isKilled - Test if the given register value, which is used by the given</span>
+<a name="l00343"></a>00343 <span class="comment">/// instruction, is killed by the given instruction. This looks through</span>
+<a name="l00344"></a>00344 <span class="comment">/// coalescable copies to see if the original value is potentially not killed.</span>
+<a name="l00345"></a>00345 <span class="comment">///</span>
+<a name="l00346"></a>00346 <span class="comment">/// For example, in this code:</span>
+<a name="l00347"></a>00347 <span class="comment">///</span>
+<a name="l00348"></a>00348 <span class="comment">///   %reg1034 = copy %reg1024</span>
+<a name="l00349"></a>00349 <span class="comment">///   %reg1035 = copy %reg1025<kill></span>
+<a name="l00350"></a>00350 <span class="comment">///   %reg1036 = add %reg1034<kill>, %reg1035<kill></span>
+<a name="l00351"></a>00351 <span class="comment">///</span>
+<a name="l00352"></a>00352 <span class="comment">/// %reg1034 is not considered to be killed, since it is copied from a</span>
+<a name="l00353"></a>00353 <span class="comment">/// register which is not killed. Treating it as not killed lets the</span>
+<a name="l00354"></a>00354 <span class="comment">/// normal heuristics commute the (two-address) add, which lets</span>
+<a name="l00355"></a>00355 <span class="comment">/// coalescing eliminate the extra copy.</span>
+<a name="l00356"></a>00356 <span class="comment">///</span>
+<a name="l00357"></a><a class="code" href="TwoAddressInstructionPass_8cpp.html#aa3bc7e91dad8755abcf2329ff40de0a3">00357</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="TwoAddressInstructionPass_8cpp.html#aa3bc7e91dad8755abcf2329ff40de0a3">isKilled</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> &MI, <span class="keywordtype">unsigned</span> Reg,
+<a name="l00358"></a>00358                      <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineRegisterInfo.html">MachineRegisterInfo</a> *MRI,
+<a name="l00359"></a>00359                      <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetInstrInfo.html">TargetInstrInfo</a> *TII) {
+<a name="l00360"></a>00360   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *DefMI = &<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>;
+<a name="l00361"></a>00361   <span class="keywordflow">for</span> (;;) {
+<a name="l00362"></a>00362     <span class="keywordflow">if</span> (!DefMI-><a class="code" href="classllvm_1_1MachineInstr.html#aff83f9aeef903ed06c5098f5172624ed">killsRegister</a>(Reg))
+<a name="l00363"></a>00363       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00364"></a>00364     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1TargetRegisterInfo.html#a055858b14215864ed367a8db6c19d6f6">TargetRegisterInfo::isPhysicalRegister</a>(Reg))
+<a name="l00365"></a>00365       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00366"></a>00366     <a class="code" href="classllvm_1_1MachineRegisterInfo_1_1defusechain__iterator.html">MachineRegisterInfo::def_iterator</a> Begin = MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#a66efe5c5561969cd4506c421daaf9bf3">def_begin</a>(Reg);
+<a name="l00367"></a>00367     <span class="comment">// If there are multiple defs, we can't do a simple analysis, so just</span>
+<a name="l00368"></a>00368     <span class="comment">// go with what the kill flag says.</span>
+<a name="l00369"></a>00369     <span class="keywordflow">if</span> (<a class="code" href="namespacellvm.html#aa1704159f75e6eacd595962ea6d93ffe">llvm::next</a>(Begin) != MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#aa21b132afc12ed3cead7a879506f277a">def_end</a>())
+<a name="l00370"></a>00370       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00371"></a>00371     DefMI = &*Begin;
+<a name="l00372"></a>00372     <span class="keywordtype">bool</span> IsSrcPhys, IsDstPhys;
+<a name="l00373"></a>00373     <span class="keywordtype">unsigned</span> SrcReg,  DstReg;
+<a name="l00374"></a>00374     <span class="comment">// If the def is something other than a copy, then it isn't going to</span>
+<a name="l00375"></a>00375     <span class="comment">// be coalesced, so follow the kill flag.</span>
+<a name="l00376"></a>00376     <span class="keywordflow">if</span> (!<a class="code" href="TwoAddressInstructionPass_8cpp.html#a3e682d8e3bb0b8f09249a2b3aaf6e53d">isCopyToReg</a>(*DefMI, TII, SrcReg, DstReg, IsSrcPhys, IsDstPhys))
+<a name="l00377"></a>00377       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00378"></a>00378     Reg = SrcReg;
+<a name="l00379"></a>00379   }
+<a name="l00380"></a>00380 }
+<a name="l00381"></a>00381 <span class="comment"></span>
+<a name="l00382"></a>00382 <span class="comment">/// isTwoAddrUse - Return true if the specified MI uses the specified register</span>
+<a name="l00383"></a>00383 <span class="comment">/// as a two-address use. If so, return the destination register by reference.</span>
+<a name="l00384"></a><a class="code" href="TwoAddressInstructionPass_8cpp.html#a2d435e5deb4db8580536ae97ea46ccc5">00384</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="TwoAddressInstructionPass_8cpp.html#a2d435e5deb4db8580536ae97ea46ccc5">isTwoAddrUse</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> &MI, <span class="keywordtype">unsigned</span> Reg, <span class="keywordtype">unsigned</span> &DstReg) {
+<a name="l00385"></a>00385   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstrDesc.html">MCInstrDesc</a> &MCID = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a803a7424877fd049679b9aa2f07597b5">getDesc</a>();
+<a name="l00386"></a>00386   <span class="keywordtype">unsigned</span> NumOps = MI.<a class="code" href="classllvm_1_1MachineInstr.html#acd9af7d3f8a155c4356edccbc0522c8e">isInlineAsm</a>()
+<a name="l00387"></a>00387     ? MI.<a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>() : MCID.<a class="code" href="classllvm_1_1MCInstrDesc.html#a55194ec3a1e49d04eab64e993e614246">getNumOperands</a>();
+<a name="l00388"></a>00388   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != NumOps; ++i) {
+<a name="l00389"></a>00389     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i);
+<a name="l00390"></a>00390     <span class="keywordflow">if</span> (!MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() || !MO.<a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>() || MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>() != <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>)
+<a name="l00391"></a>00391       <span class="keywordflow">continue</span>;
+<a name="l00392"></a>00392     <span class="keywordtype">unsigned</span> ti;
+<a name="l00393"></a>00393     <span class="keywordflow">if</span> (MI.<a class="code" href="classllvm_1_1MachineInstr.html#a24f355a6becd20125a8f556c22c2c0af">isRegTiedToDefOperand</a>(i, &ti)) {
+<a name="l00394"></a>00394       DstReg = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(ti).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l00395"></a>00395       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00396"></a>00396     }
+<a name="l00397"></a>00397   }
+<a name="l00398"></a>00398   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00399"></a>00399 }
+<a name="l00400"></a>00400 <span class="comment"></span>
+<a name="l00401"></a>00401 <span class="comment">/// findOnlyInterestingUse - Given a register, if has a single in-basic block</span>
+<a name="l00402"></a>00402 <span class="comment">/// use, return the use instruction if it's a copy or a two-address use.</span>
+<a name="l00403"></a>00403 <span class="comment"></span><span class="keyword">static</span>
+<a name="l00404"></a><a class="code" href="TwoAddressInstructionPass_8cpp.html#ab17cccf525ca08832cd4e80cb2eb6c22">00404</a> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="TwoAddressInstructionPass_8cpp.html#ab17cccf525ca08832cd4e80cb2eb6c22">findOnlyInterestingUse</a>(<span class="keywordtype">unsigned</span> Reg, <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *MBB,
+<a name="l00405"></a>00405                                      <a class="code" href="classllvm_1_1MachineRegisterInfo.html">MachineRegisterInfo</a> *MRI,
+<a name="l00406"></a>00406                                      <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetInstrInfo.html">TargetInstrInfo</a> *TII,
+<a name="l00407"></a>00407                                      <span class="keywordtype">bool</span> &IsCopy,
+<a name="l00408"></a>00408                                      <span class="keywordtype">unsigned</span> &DstReg, <span class="keywordtype">bool</span> &IsDstPhys) {
+<a name="l00409"></a>00409   <span class="keywordflow">if</span> (!MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#a8be4959abd44b6fbd158dba0d7c315bc">hasOneNonDBGUse</a>(Reg))
+<a name="l00410"></a>00410     <span class="comment">// None or more than one use.</span>
+<a name="l00411"></a>00411     <span class="keywordflow">return</span> 0;
+<a name="l00412"></a>00412   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> &UseMI = *MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#aad684f050965249161650dcdf5a58fa4">use_nodbg_begin</a>(Reg);
+<a name="l00413"></a>00413   <span class="keywordflow">if</span> (UseMI.<a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>() != MBB)
+<a name="l00414"></a>00414     <span class="keywordflow">return</span> 0;
+<a name="l00415"></a>00415   <span class="keywordtype">unsigned</span> SrcReg;
+<a name="l00416"></a>00416   <span class="keywordtype">bool</span> IsSrcPhys;
+<a name="l00417"></a>00417   <span class="keywordflow">if</span> (<a class="code" href="TwoAddressInstructionPass_8cpp.html#a3e682d8e3bb0b8f09249a2b3aaf6e53d">isCopyToReg</a>(UseMI, TII, SrcReg, DstReg, IsSrcPhys, IsDstPhys)) {
+<a name="l00418"></a>00418     IsCopy = <span class="keyword">true</span>;
+<a name="l00419"></a>00419     <span class="keywordflow">return</span> &UseMI;
+<a name="l00420"></a>00420   }
+<a name="l00421"></a>00421   IsDstPhys = <span class="keyword">false</span>;
+<a name="l00422"></a>00422   <span class="keywordflow">if</span> (<a class="code" href="TwoAddressInstructionPass_8cpp.html#a2d435e5deb4db8580536ae97ea46ccc5">isTwoAddrUse</a>(UseMI, Reg, DstReg)) {
+<a name="l00423"></a>00423     IsDstPhys = <a class="code" href="classllvm_1_1TargetRegisterInfo.html#a055858b14215864ed367a8db6c19d6f6">TargetRegisterInfo::isPhysicalRegister</a>(DstReg);
+<a name="l00424"></a>00424     <span class="keywordflow">return</span> &UseMI;
+<a name="l00425"></a>00425   }
+<a name="l00426"></a>00426   <span class="keywordflow">return</span> 0;
+<a name="l00427"></a>00427 }
+<a name="l00428"></a>00428 <span class="comment"></span>
+<a name="l00429"></a>00429 <span class="comment">/// getMappedReg - Return the physical register the specified virtual register</span>
+<a name="l00430"></a>00430 <span class="comment">/// might be mapped to.</span>
+<a name="l00431"></a>00431 <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">unsigned</span>
+<a name="l00432"></a><a class="code" href="TwoAddressInstructionPass_8cpp.html#a06f72cd7258fd7610e33be107c1e7778">00432</a> <a class="code" href="TwoAddressInstructionPass_8cpp.html#a06f72cd7258fd7610e33be107c1e7778">getMappedReg</a>(<span class="keywordtype">unsigned</span> Reg, <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<unsigned, unsigned></a> &RegMap) {
+<a name="l00433"></a>00433   <span class="keywordflow">while</span> (<a class="code" href="classllvm_1_1TargetRegisterInfo.html#ae62c5ea35b71f9020caa94340bc78f37">TargetRegisterInfo::isVirtualRegister</a>(Reg))  {
+<a name="l00434"></a>00434     <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<unsigned, unsigned>::iterator</a> SI = RegMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a21cf94357e53cd1069aba475266fdb63">find</a>(Reg);
+<a name="l00435"></a>00435     <span class="keywordflow">if</span> (SI == RegMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a321e37d79af8b4287f8a1dcf9aff9c01">end</a>())
+<a name="l00436"></a>00436       <span class="keywordflow">return</span> 0;
+<a name="l00437"></a>00437     Reg = SI->second;
+<a name="l00438"></a>00438   }
+<a name="l00439"></a>00439   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1TargetRegisterInfo.html#a055858b14215864ed367a8db6c19d6f6">TargetRegisterInfo::isPhysicalRegister</a>(Reg))
+<a name="l00440"></a>00440     <span class="keywordflow">return</span> Reg;
+<a name="l00441"></a>00441   <span class="keywordflow">return</span> 0;
+<a name="l00442"></a>00442 }
+<a name="l00443"></a>00443 <span class="comment"></span>
+<a name="l00444"></a>00444 <span class="comment">/// regsAreCompatible - Return true if the two registers are equal or aliased.</span>
+<a name="l00445"></a>00445 <span class="comment">///</span>
+<a name="l00446"></a>00446 <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l00447"></a><a class="code" href="TwoAddressInstructionPass_8cpp.html#a00cb9049e9e4f62db32f079217271205">00447</a> <a class="code" href="TwoAddressInstructionPass_8cpp.html#a00cb9049e9e4f62db32f079217271205">regsAreCompatible</a>(<span class="keywordtype">unsigned</span> RegA, <span class="keywordtype">unsigned</span> RegB, <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a> *TRI) {
+<a name="l00448"></a>00448   <span class="keywordflow">if</span> (RegA == RegB)
+<a name="l00449"></a>00449     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00450"></a>00450   <span class="keywordflow">if</span> (!RegA || !RegB)
+<a name="l00451"></a>00451     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00452"></a>00452   <span class="keywordflow">return</span> TRI-><a class="code" href="classllvm_1_1TargetRegisterInfo.html#a4fac7ec2f43b802397b65018bda0040e">regsOverlap</a>(RegA, RegB);
+<a name="l00453"></a>00453 }
+<a name="l00454"></a>00454 
+<a name="l00455"></a>00455 <span class="comment"></span>
+<a name="l00456"></a>00456 <span class="comment">/// isProfitableToCommute - Return true if it's potentially profitable to commute</span>
+<a name="l00457"></a>00457 <span class="comment">/// the two-address instruction that's being processed.</span>
+<a name="l00458"></a>00458 <span class="comment"></span><span class="keywordtype">bool</span>
+<a name="l00459"></a>00459 TwoAddressInstructionPass::
+<a name="l00460"></a>00460 isProfitableToCommute(<span class="keywordtype">unsigned</span> regA, <span class="keywordtype">unsigned</span> regB, <span class="keywordtype">unsigned</span> regC,
+<a name="l00461"></a>00461                       <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <span class="keywordtype">unsigned</span> Dist) {
+<a name="l00462"></a>00462   <span class="keywordflow">if</span> (OptLevel == <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4a451bbac85aff02d070be3c17a6bef928">CodeGenOpt::None</a>)
+<a name="l00463"></a>00463     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00464"></a>00464 
+<a name="l00465"></a>00465   <span class="comment">// Determine if it's profitable to commute this two address instruction. In</span>
+<a name="l00466"></a>00466   <span class="comment">// general, we want no uses between this instruction and the definition of</span>
+<a name="l00467"></a>00467   <span class="comment">// the two-address register.</span>
+<a name="l00468"></a>00468   <span class="comment">// e.g.</span>
+<a name="l00469"></a>00469   <span class="comment">// %reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1</span>
+<a name="l00470"></a>00470   <span class="comment">// %reg1029<def> = MOV8rr %reg1028</span>
+<a name="l00471"></a>00471   <span class="comment">// %reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead></span>
+<a name="l00472"></a>00472   <span class="comment">// insert => %reg1030<def> = MOV8rr %reg1028</span>
+<a name="l00473"></a>00473   <span class="comment">// %reg1030<def> = ADD8rr %reg1028<kill>, %reg1029<kill>, %EFLAGS<imp-def,dead></span>
+<a name="l00474"></a>00474   <span class="comment">// In this case, it might not be possible to coalesce the second MOV8rr</span>
+<a name="l00475"></a>00475   <span class="comment">// instruction if the first one is coalesced. So it would be profitable to</span>
+<a name="l00476"></a>00476   <span class="comment">// commute it:</span>
+<a name="l00477"></a>00477   <span class="comment">// %reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1</span>
+<a name="l00478"></a>00478   <span class="comment">// %reg1029<def> = MOV8rr %reg1028</span>
+<a name="l00479"></a>00479   <span class="comment">// %reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead></span>
+<a name="l00480"></a>00480   <span class="comment">// insert => %reg1030<def> = MOV8rr %reg1029</span>
+<a name="l00481"></a>00481   <span class="comment">// %reg1030<def> = ADD8rr %reg1029<kill>, %reg1028<kill>, %EFLAGS<imp-def,dead></span>
+<a name="l00482"></a>00482 
+<a name="l00483"></a>00483   <span class="keywordflow">if</span> (!MI-><a class="code" href="classllvm_1_1MachineInstr.html#aff83f9aeef903ed06c5098f5172624ed">killsRegister</a>(regC))
+<a name="l00484"></a>00484     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00485"></a>00485 
+<a name="l00486"></a>00486   <span class="comment">// Ok, we have something like:</span>
+<a name="l00487"></a>00487   <span class="comment">// %reg1030<def> = ADD8rr %reg1028<kill>, %reg1029<kill>, %EFLAGS<imp-def,dead></span>
+<a name="l00488"></a>00488   <span class="comment">// let's see if it's worth commuting it.</span>
+<a name="l00489"></a>00489 
+<a name="l00490"></a>00490   <span class="comment">// Look for situations like this:</span>
+<a name="l00491"></a>00491   <span class="comment">// %reg1024<def> = MOV r1</span>
+<a name="l00492"></a>00492   <span class="comment">// %reg1025<def> = MOV r0</span>
+<a name="l00493"></a>00493   <span class="comment">// %reg1026<def> = ADD %reg1024, %reg1025</span>
+<a name="l00494"></a>00494   <span class="comment">// r0            = MOV %reg1026</span>
+<a name="l00495"></a>00495   <span class="comment">// Commute the ADD to hopefully eliminate an otherwise unavoidable copy.</span>
+<a name="l00496"></a>00496   <span class="keywordtype">unsigned</span> ToRegA = <a class="code" href="TwoAddressInstructionPass_8cpp.html#a06f72cd7258fd7610e33be107c1e7778">getMappedReg</a>(regA, DstRegMap);
+<a name="l00497"></a>00497   <span class="keywordflow">if</span> (ToRegA) {
+<a name="l00498"></a>00498     <span class="keywordtype">unsigned</span> FromRegB = <a class="code" href="TwoAddressInstructionPass_8cpp.html#a06f72cd7258fd7610e33be107c1e7778">getMappedReg</a>(regB, SrcRegMap);
+<a name="l00499"></a>00499     <span class="keywordtype">unsigned</span> FromRegC = <a class="code" href="TwoAddressInstructionPass_8cpp.html#a06f72cd7258fd7610e33be107c1e7778">getMappedReg</a>(regC, SrcRegMap);
+<a name="l00500"></a>00500     <span class="keywordtype">bool</span> BComp = !FromRegB || <a class="code" href="TwoAddressInstructionPass_8cpp.html#a00cb9049e9e4f62db32f079217271205">regsAreCompatible</a>(FromRegB, ToRegA, TRI);
+<a name="l00501"></a>00501     <span class="keywordtype">bool</span> CComp = !FromRegC || <a class="code" href="TwoAddressInstructionPass_8cpp.html#a00cb9049e9e4f62db32f079217271205">regsAreCompatible</a>(FromRegC, ToRegA, TRI);
+<a name="l00502"></a>00502     <span class="keywordflow">if</span> (BComp != CComp)
+<a name="l00503"></a>00503       <span class="keywordflow">return</span> !BComp && CComp;
+<a name="l00504"></a>00504   }
+<a name="l00505"></a>00505 
+<a name="l00506"></a>00506   <span class="comment">// If there is a use of regC between its last def (could be livein) and this</span>
+<a name="l00507"></a>00507   <span class="comment">// instruction, then bail.</span>
+<a name="l00508"></a>00508   <span class="keywordtype">unsigned</span> LastDefC = 0;
+<a name="l00509"></a>00509   <span class="keywordflow">if</span> (!noUseAfterLastDef(regC, Dist, LastDefC))
+<a name="l00510"></a>00510     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00511"></a>00511 
+<a name="l00512"></a>00512   <span class="comment">// If there is a use of regB between its last def (could be livein) and this</span>
+<a name="l00513"></a>00513   <span class="comment">// instruction, then go ahead and make this transformation.</span>
+<a name="l00514"></a>00514   <span class="keywordtype">unsigned</span> LastDefB = 0;
+<a name="l00515"></a>00515   <span class="keywordflow">if</span> (!noUseAfterLastDef(regB, Dist, LastDefB))
+<a name="l00516"></a>00516     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00517"></a>00517 
+<a name="l00518"></a>00518   <span class="comment">// Since there are no intervening uses for both registers, then commute</span>
+<a name="l00519"></a>00519   <span class="comment">// if the def of regC is closer. Its live interval is shorter.</span>
+<a name="l00520"></a>00520   <span class="keywordflow">return</span> LastDefB && LastDefC && LastDefC > LastDefB;
+<a name="l00521"></a>00521 }
+<a name="l00522"></a>00522 <span class="comment"></span>
+<a name="l00523"></a>00523 <span class="comment">/// commuteInstruction - Commute a two-address instruction and update the basic</span>
+<a name="l00524"></a>00524 <span class="comment">/// block, distance map, and live variables if needed. Return true if it is</span>
+<a name="l00525"></a>00525 <span class="comment">/// successful.</span>
+<a name="l00526"></a>00526 <span class="comment"></span><span class="keywordtype">bool</span> TwoAddressInstructionPass::
+<a name="l00527"></a>00527 commuteInstruction(<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &mi,
+<a name="l00528"></a>00528                    <span class="keywordtype">unsigned</span> RegB, <span class="keywordtype">unsigned</span> RegC, <span class="keywordtype">unsigned</span> Dist) {
+<a name="l00529"></a>00529   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI = mi;
+<a name="l00530"></a>00530   <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">"2addr: COMMUTING  : "</span> << *MI);
+<a name="l00531"></a>00531   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *NewMI = TII->commuteInstruction(MI);
+<a name="l00532"></a>00532 
+<a name="l00533"></a>00533   <span class="keywordflow">if</span> (NewMI == 0) {
+<a name="l00534"></a>00534     <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">"2addr: COMMUTING FAILED!\n"</span>);
+<a name="l00535"></a>00535     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00536"></a>00536   }
+<a name="l00537"></a>00537 
+<a name="l00538"></a>00538   <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">"2addr: COMMUTED TO: "</span> << *NewMI);
+<a name="l00539"></a>00539   <span class="comment">// If the instruction changed to commute it, update livevar.</span>
+<a name="l00540"></a>00540   <span class="keywordflow">if</span> (NewMI != MI) {
+<a name="l00541"></a>00541     <span class="keywordflow">if</span> (LV)
+<a name="l00542"></a>00542       <span class="comment">// Update live variables</span>
+<a name="l00543"></a>00543       LV->replaceKillInstruction(RegC, MI, NewMI);
+<a name="l00544"></a>00544     <span class="keywordflow">if</span> (Indexes)
+<a name="l00545"></a>00545       Indexes->replaceMachineInstrInMaps(MI, NewMI);
+<a name="l00546"></a>00546 
+<a name="l00547"></a>00547     MBB->insert(mi, NewMI);           <span class="comment">// Insert the new inst</span>
+<a name="l00548"></a>00548     MBB->erase(mi);                   <span class="comment">// Nuke the old inst.</span>
+<a name="l00549"></a>00549     mi = NewMI;
+<a name="l00550"></a>00550     DistanceMap.insert(std::make_pair(NewMI, Dist));
+<a name="l00551"></a>00551   }
+<a name="l00552"></a>00552 
+<a name="l00553"></a>00553   <span class="comment">// Update source register map.</span>
+<a name="l00554"></a>00554   <span class="keywordtype">unsigned</span> FromRegC = <a class="code" href="TwoAddressInstructionPass_8cpp.html#a06f72cd7258fd7610e33be107c1e7778">getMappedReg</a>(RegC, SrcRegMap);
+<a name="l00555"></a>00555   <span class="keywordflow">if</span> (FromRegC) {
+<a name="l00556"></a>00556     <span class="keywordtype">unsigned</span> RegA = 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="l00557"></a>00557     SrcRegMap[RegA] = FromRegC;
+<a name="l00558"></a>00558   }
+<a name="l00559"></a>00559 
+<a name="l00560"></a>00560   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00561"></a>00561 }
+<a name="l00562"></a>00562 <span class="comment"></span>
+<a name="l00563"></a>00563 <span class="comment">/// isProfitableToConv3Addr - Return true if it is profitable to convert the</span>
+<a name="l00564"></a>00564 <span class="comment">/// given 2-address instruction to a 3-address one.</span>
+<a name="l00565"></a>00565 <span class="comment"></span><span class="keywordtype">bool</span>
+<a name="l00566"></a>00566 TwoAddressInstructionPass::isProfitableToConv3Addr(<span class="keywordtype">unsigned</span> RegA,<span class="keywordtype">unsigned</span> RegB){
+<a name="l00567"></a>00567   <span class="comment">// Look for situations like this:</span>
+<a name="l00568"></a>00568   <span class="comment">// %reg1024<def> = MOV r1</span>
+<a name="l00569"></a>00569   <span class="comment">// %reg1025<def> = MOV r0</span>
+<a name="l00570"></a>00570   <span class="comment">// %reg1026<def> = ADD %reg1024, %reg1025</span>
+<a name="l00571"></a>00571   <span class="comment">// r2            = MOV %reg1026</span>
+<a name="l00572"></a>00572   <span class="comment">// Turn ADD into a 3-address instruction to avoid a copy.</span>
+<a name="l00573"></a>00573   <span class="keywordtype">unsigned</span> FromRegB = <a class="code" href="TwoAddressInstructionPass_8cpp.html#a06f72cd7258fd7610e33be107c1e7778">getMappedReg</a>(RegB, SrcRegMap);
+<a name="l00574"></a>00574   <span class="keywordflow">if</span> (!FromRegB)
+<a name="l00575"></a>00575     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00576"></a>00576   <span class="keywordtype">unsigned</span> ToRegA = <a class="code" href="TwoAddressInstructionPass_8cpp.html#a06f72cd7258fd7610e33be107c1e7778">getMappedReg</a>(RegA, DstRegMap);
+<a name="l00577"></a>00577   <span class="keywordflow">return</span> (ToRegA && !<a class="code" href="TwoAddressInstructionPass_8cpp.html#a00cb9049e9e4f62db32f079217271205">regsAreCompatible</a>(FromRegB, ToRegA, TRI));
+<a name="l00578"></a>00578 }
+<a name="l00579"></a>00579 <span class="comment"></span>
+<a name="l00580"></a>00580 <span class="comment">/// convertInstTo3Addr - Convert the specified two-address instruction into a</span>
+<a name="l00581"></a>00581 <span class="comment">/// three address one. Return true if this transformation was successful.</span>
+<a name="l00582"></a>00582 <span class="comment"></span><span class="keywordtype">bool</span>
+<a name="l00583"></a>00583 TwoAddressInstructionPass::convertInstTo3Addr(<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &mi,
+<a name="l00584"></a>00584                                               <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &nmi,
+<a name="l00585"></a>00585                                               <span class="keywordtype">unsigned</span> RegA, <span class="keywordtype">unsigned</span> RegB,
+<a name="l00586"></a>00586                                               <span class="keywordtype">unsigned</span> Dist) {
+<a name="l00587"></a>00587   <span class="comment">// FIXME: Why does convertToThreeAddress() need an iterator reference?</span>
+<a name="l00588"></a>00588   <a class="code" href="classllvm_1_1MachineFunction.html#a340712de3e78fec11c338735cab17df7">MachineFunction::iterator</a> MFI = MBB;
+<a name="l00589"></a>00589   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *NewMI = TII->convertToThreeAddress(MFI, mi, LV);
+<a name="l00590"></a>00590   assert(MBB == MFI && <span class="stringliteral">"convertToThreeAddress changed iterator reference"</span>);
+<a name="l00591"></a>00591   <span class="keywordflow">if</span> (!NewMI)
+<a name="l00592"></a>00592     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00593"></a>00593 
+<a name="l00594"></a>00594   <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">"2addr: CONVERTING 2-ADDR: "</span> << *mi);
+<a name="l00595"></a>00595   <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">"2addr:         TO 3-ADDR: "</span> << *NewMI);
+<a name="l00596"></a>00596   <span class="keywordtype">bool</span> Sunk = <span class="keyword">false</span>;
+<a name="l00597"></a>00597 
+<a name="l00598"></a>00598   <span class="keywordflow">if</span> (Indexes)
+<a name="l00599"></a>00599     Indexes->replaceMachineInstrInMaps(mi, NewMI);
+<a name="l00600"></a>00600 
+<a name="l00601"></a>00601   <span class="keywordflow">if</span> (NewMI-><a class="code" href="classllvm_1_1MachineInstr.html#afddd1696a86ec4791c24fce6e13b8f12">findRegisterUseOperand</a>(RegB, <span class="keyword">false</span>, TRI))
+<a name="l00602"></a>00602     <span class="comment">// FIXME: Temporary workaround. If the new instruction doesn't</span>
+<a name="l00603"></a>00603     <span class="comment">// uses RegB, convertToThreeAddress must have created more</span>
+<a name="l00604"></a>00604     <span class="comment">// then one instruction.</span>
+<a name="l00605"></a>00605     Sunk = sink3AddrInstruction(NewMI, RegB, mi);
+<a name="l00606"></a>00606 
+<a name="l00607"></a>00607   MBB->erase(mi); <span class="comment">// Nuke the old inst.</span>
+<a name="l00608"></a>00608 
+<a name="l00609"></a>00609   <span class="keywordflow">if</span> (!Sunk) {
+<a name="l00610"></a>00610     DistanceMap.insert(std::make_pair(NewMI, Dist));
+<a name="l00611"></a>00611     mi = NewMI;
+<a name="l00612"></a>00612     nmi = <a class="code" href="namespacellvm.html#aa1704159f75e6eacd595962ea6d93ffe">llvm::next</a>(mi);
+<a name="l00613"></a>00613   }
+<a name="l00614"></a>00614 
+<a name="l00615"></a>00615   <span class="comment">// Update source and destination register maps.</span>
+<a name="l00616"></a>00616   SrcRegMap.erase(RegA);
+<a name="l00617"></a>00617   DstRegMap.erase(RegB);
+<a name="l00618"></a>00618   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00619"></a>00619 }
+<a name="l00620"></a>00620 <span class="comment"></span>
+<a name="l00621"></a>00621 <span class="comment">/// scanUses - Scan forward recursively for only uses, update maps if the use</span>
+<a name="l00622"></a>00622 <span class="comment">/// is a copy or a two-address instruction.</span>
+<a name="l00623"></a>00623 <span class="comment"></span><span class="keywordtype">void</span>
+<a name="l00624"></a>00624 TwoAddressInstructionPass::scanUses(<span class="keywordtype">unsigned</span> DstReg) {
+<a name="l00625"></a>00625   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<unsigned, 4></a> VirtRegPairs;
+<a name="l00626"></a>00626   <span class="keywordtype">bool</span> IsDstPhys;
+<a name="l00627"></a>00627   <span class="keywordtype">bool</span> IsCopy = <span class="keyword">false</span>;
+<a name="l00628"></a>00628   <span class="keywordtype">unsigned</span> NewReg = 0;
+<a name="l00629"></a>00629   <span class="keywordtype">unsigned</span> Reg = DstReg;
+<a name="l00630"></a>00630   <span class="keywordflow">while</span> (<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *UseMI = <a class="code" href="TwoAddressInstructionPass_8cpp.html#ab17cccf525ca08832cd4e80cb2eb6c22">findOnlyInterestingUse</a>(Reg, MBB, MRI, TII,IsCopy,
+<a name="l00631"></a>00631                                                       NewReg, IsDstPhys)) {
+<a name="l00632"></a>00632     <span class="keywordflow">if</span> (IsCopy && !Processed.insert(UseMI))
+<a name="l00633"></a>00633       <span class="keywordflow">break</span>;
+<a name="l00634"></a>00634 
+<a name="l00635"></a>00635     <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<MachineInstr*, unsigned>::iterator</a> DI = DistanceMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a21cf94357e53cd1069aba475266fdb63">find</a>(UseMI);
+<a name="l00636"></a>00636     <span class="keywordflow">if</span> (DI != DistanceMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a321e37d79af8b4287f8a1dcf9aff9c01">end</a>())
+<a name="l00637"></a>00637       <span class="comment">// Earlier in the same MBB.Reached via a back edge.</span>
+<a name="l00638"></a>00638       <span class="keywordflow">break</span>;
+<a name="l00639"></a>00639 
+<a name="l00640"></a>00640     <span class="keywordflow">if</span> (IsDstPhys) {
+<a name="l00641"></a>00641       VirtRegPairs.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(NewReg);
+<a name="l00642"></a>00642       <span class="keywordflow">break</span>;
+<a name="l00643"></a>00643     }
+<a name="l00644"></a>00644     <span class="keywordtype">bool</span> isNew = SrcRegMap.insert(std::make_pair(NewReg, Reg)).second;
+<a name="l00645"></a>00645     <span class="keywordflow">if</span> (!isNew)
+<a name="l00646"></a>00646       assert(SrcRegMap[NewReg] == Reg && <span class="stringliteral">"Can't map to two src registers!"</span>);
+<a name="l00647"></a>00647     VirtRegPairs.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(NewReg);
+<a name="l00648"></a>00648     Reg = NewReg;
+<a name="l00649"></a>00649   }
+<a name="l00650"></a>00650 
+<a name="l00651"></a>00651   <span class="keywordflow">if</span> (!VirtRegPairs.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>()) {
+<a name="l00652"></a>00652     <span class="keywordtype">unsigned</span> ToReg = VirtRegPairs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#acd9e771a3296c6b24146955754620557">back</a>();
+<a name="l00653"></a>00653     VirtRegPairs.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#a1f2303df9bbee2233c11d61c2f6f7930">pop_back</a>();
+<a name="l00654"></a>00654     <span class="keywordflow">while</span> (!VirtRegPairs.<a class="code" href="classllvm_1_1SmallVectorBase.html#afdecfccba9b1fd8c9fd8eb27ae69e9a0">empty</a>()) {
+<a name="l00655"></a>00655       <span class="keywordtype">unsigned</span> FromReg = VirtRegPairs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#acd9e771a3296c6b24146955754620557">back</a>();
+<a name="l00656"></a>00656       VirtRegPairs.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#a1f2303df9bbee2233c11d61c2f6f7930">pop_back</a>();
+<a name="l00657"></a>00657       <span class="keywordtype">bool</span> isNew = DstRegMap.insert(std::make_pair(FromReg, ToReg)).second;
+<a name="l00658"></a>00658       <span class="keywordflow">if</span> (!isNew)
+<a name="l00659"></a>00659         assert(DstRegMap[FromReg] == ToReg &&<span class="stringliteral">"Can't map to two dst registers!"</span>);
+<a name="l00660"></a>00660       ToReg = FromReg;
+<a name="l00661"></a>00661     }
+<a name="l00662"></a>00662     <span class="keywordtype">bool</span> isNew = DstRegMap.insert(std::make_pair(DstReg, ToReg)).second;
+<a name="l00663"></a>00663     <span class="keywordflow">if</span> (!isNew)
+<a name="l00664"></a>00664       assert(DstRegMap[DstReg] == ToReg && <span class="stringliteral">"Can't map to two dst registers!"</span>);
+<a name="l00665"></a>00665   }
+<a name="l00666"></a>00666 }
+<a name="l00667"></a>00667 <span class="comment"></span>
+<a name="l00668"></a>00668 <span class="comment">/// processCopy - If the specified instruction is not yet processed, process it</span>
+<a name="l00669"></a>00669 <span class="comment">/// if it's a copy. For a copy instruction, we find the physical registers the</span>
+<a name="l00670"></a>00670 <span class="comment">/// source and destination registers might be mapped to. These are kept in</span>
+<a name="l00671"></a>00671 <span class="comment">/// point-to maps used to determine future optimizations. e.g.</span>
+<a name="l00672"></a>00672 <span class="comment">/// v1024 = mov r0</span>
+<a name="l00673"></a>00673 <span class="comment">/// v1025 = mov r1</span>
+<a name="l00674"></a>00674 <span class="comment">/// v1026 = add v1024, v1025</span>
+<a name="l00675"></a>00675 <span class="comment">/// r1    = mov r1026</span>
+<a name="l00676"></a>00676 <span class="comment">/// If 'add' is a two-address instruction, v1024, v1026 are both potentially</span>
+<a name="l00677"></a>00677 <span class="comment">/// coalesced to r0 (from the input side). v1025 is mapped to r1. v1026 is</span>
+<a name="l00678"></a>00678 <span class="comment">/// potentially joined with r1 on the output side. It's worthwhile to commute</span>
+<a name="l00679"></a>00679 <span class="comment">/// 'add' to eliminate a copy.</span>
+<a name="l00680"></a>00680 <span class="comment"></span><span class="keywordtype">void</span> TwoAddressInstructionPass::processCopy(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI) {
+<a name="l00681"></a>00681   <span class="keywordflow">if</span> (Processed.count(MI))
+<a name="l00682"></a>00682     <span class="keywordflow">return</span>;
+<a name="l00683"></a>00683 
+<a name="l00684"></a>00684   <span class="keywordtype">bool</span> IsSrcPhys, IsDstPhys;
+<a name="l00685"></a>00685   <span class="keywordtype">unsigned</span> SrcReg, DstReg;
+<a name="l00686"></a>00686   <span class="keywordflow">if</span> (!<a class="code" href="TwoAddressInstructionPass_8cpp.html#a3e682d8e3bb0b8f09249a2b3aaf6e53d">isCopyToReg</a>(*MI, TII, SrcReg, DstReg, IsSrcPhys, IsDstPhys))
+<a name="l00687"></a>00687     <span class="keywordflow">return</span>;
+<a name="l00688"></a>00688 
+<a name="l00689"></a>00689   <span class="keywordflow">if</span> (IsDstPhys && !IsSrcPhys)
+<a name="l00690"></a>00690     DstRegMap.insert(std::make_pair(SrcReg, DstReg));
+<a name="l00691"></a>00691   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!IsDstPhys && IsSrcPhys) {
+<a name="l00692"></a>00692     <span class="keywordtype">bool</span> isNew = SrcRegMap.insert(std::make_pair(DstReg, SrcReg)).second;
+<a name="l00693"></a>00693     <span class="keywordflow">if</span> (!isNew)
+<a name="l00694"></a>00694       assert(SrcRegMap[DstReg] == SrcReg &&
+<a name="l00695"></a>00695              <span class="stringliteral">"Can't map to two src physical registers!"</span>);
+<a name="l00696"></a>00696 
+<a name="l00697"></a>00697     scanUses(DstReg);
+<a name="l00698"></a>00698   }
+<a name="l00699"></a>00699 
+<a name="l00700"></a>00700   Processed.insert(MI);
+<a name="l00701"></a>00701   <span class="keywordflow">return</span>;
+<a name="l00702"></a>00702 }
+<a name="l00703"></a>00703 <span class="comment"></span>
+<a name="l00704"></a>00704 <span class="comment">/// rescheduleMIBelowKill - If there is one more local instruction that reads</span>
+<a name="l00705"></a>00705 <span class="comment">/// 'Reg' and it kills 'Reg, consider moving the instruction below the kill</span>
+<a name="l00706"></a>00706 <span class="comment">/// instruction in order to eliminate the need for the copy.</span>
+<a name="l00707"></a>00707 <span class="comment"></span><span class="keywordtype">bool</span> TwoAddressInstructionPass::
+<a name="l00708"></a>00708 rescheduleMIBelowKill(<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &mi,
+<a name="l00709"></a>00709                       <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &nmi,
+<a name="l00710"></a>00710                       <span class="keywordtype">unsigned</span> Reg) {
+<a name="l00711"></a>00711   <span class="comment">// Bail immediately if we don't have LV available. We use it to find kills</span>
+<a name="l00712"></a>00712   <span class="comment">// efficiently.</span>
+<a name="l00713"></a>00713   <span class="keywordflow">if</span> (!LV)
+<a name="l00714"></a>00714     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00715"></a>00715 
+<a name="l00716"></a>00716   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI = &*mi;
+<a name="l00717"></a>00717   <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<MachineInstr*, unsigned>::iterator</a> DI = DistanceMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a21cf94357e53cd1069aba475266fdb63">find</a>(MI);
+<a name="l00718"></a>00718   <span class="keywordflow">if</span> (DI == DistanceMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a321e37d79af8b4287f8a1dcf9aff9c01">end</a>())
+<a name="l00719"></a>00719     <span class="comment">// Must be created from unfolded load. Don't waste time trying this.</span>
+<a name="l00720"></a>00720     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00721"></a>00721 
+<a name="l00722"></a>00722   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *KillMI = LV->getVarInfo(Reg).findKill(MBB);
+<a name="l00723"></a>00723   <span class="keywordflow">if</span> (!KillMI || MI == KillMI || KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#ae0ac5973cd95f76e3365e67aaad69de6">isCopy</a>() || KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#a100d59f6313d76435a54425d3d11bf99">isCopyLike</a>())
+<a name="l00724"></a>00724     <span class="comment">// Don't mess with copies, they may be coalesced later.</span>
+<a name="l00725"></a>00725     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00726"></a>00726 
+<a name="l00727"></a>00727   <span class="keywordflow">if</span> (KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#ae9a10777fdedf716a21f450a3ceaafe3">hasUnmodeledSideEffects</a>() || KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#ac4de5f228c299d7c4b7de72a4a6dd28c">isCall</a>() ||
+<a name="l00728"></a>00728       KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#a797ac100c6615ff181c03a3c35c7378f">isBranch</a>() || KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#aea36f6665e4992da1874625d5f00e1c1">isTerminator</a>())
+<a name="l00729"></a>00729     <span class="comment">// Don't move pass calls, etc.</span>
+<a name="l00730"></a>00730     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00731"></a>00731 
+<a name="l00732"></a>00732   <span class="keywordtype">unsigned</span> DstReg;
+<a name="l00733"></a>00733   <span class="keywordflow">if</span> (<a class="code" href="TwoAddressInstructionPass_8cpp.html#a2d435e5deb4db8580536ae97ea46ccc5">isTwoAddrUse</a>(*KillMI, Reg, DstReg))
+<a name="l00734"></a>00734     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00735"></a>00735 
+<a name="l00736"></a>00736   <span class="keywordtype">bool</span> SeenStore = <span class="keyword">true</span>;
+<a name="l00737"></a>00737   <span class="keywordflow">if</span> (!MI-><a class="code" href="classllvm_1_1MachineInstr.html#a55f1c19ebb9fce7a442816eeb154174f">isSafeToMove</a>(TII, AA, SeenStore))
+<a name="l00738"></a>00738     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00739"></a>00739 
+<a name="l00740"></a>00740   <span class="keywordflow">if</span> (TII->getInstrLatency(InstrItins, MI) > 1)
+<a name="l00741"></a>00741     <span class="comment">// FIXME: Needs more sophisticated heuristics.</span>
+<a name="l00742"></a>00742     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00743"></a>00743 
+<a name="l00744"></a>00744   <a class="code" href="classllvm_1_1SmallSet.html">SmallSet<unsigned, 2></a> Uses;
+<a name="l00745"></a>00745   <a class="code" href="classllvm_1_1SmallSet.html">SmallSet<unsigned, 2></a> Kills;
+<a name="l00746"></a>00746   <a class="code" href="classllvm_1_1SmallSet.html">SmallSet<unsigned, 2></a> Defs;
+<a name="l00747"></a>00747   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>(); i != e; ++i) {
+<a name="l00748"></a>00748     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i);
+<a name="l00749"></a>00749     <span class="keywordflow">if</span> (!MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>())
+<a name="l00750"></a>00750       <span class="keywordflow">continue</span>;
+<a name="l00751"></a>00751     <span class="keywordtype">unsigned</span> MOReg = MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l00752"></a>00752     <span class="keywordflow">if</span> (!MOReg)
+<a name="l00753"></a>00753       <span class="keywordflow">continue</span>;
+<a name="l00754"></a>00754     <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a8de7d5cf38939044471c6ee60a01a3df">isDef</a>())
+<a name="l00755"></a>00755       Defs.<a class="code" href="classllvm_1_1SmallSet.html#a8d8348060ccdeeba13fb8bc651dfbf82" title="insert - Insert an element into the set if it isn't already there.">insert</a>(MOReg);
+<a name="l00756"></a>00756     <span class="keywordflow">else</span> {
+<a name="l00757"></a>00757       Uses.<a class="code" href="classllvm_1_1SmallSet.html#a8d8348060ccdeeba13fb8bc651dfbf82" title="insert - Insert an element into the set if it isn't already there.">insert</a>(MOReg);
+<a name="l00758"></a>00758       <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>() && MOReg != <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>)
+<a name="l00759"></a>00759         Kills.<a class="code" href="classllvm_1_1SmallSet.html#a8d8348060ccdeeba13fb8bc651dfbf82" title="insert - Insert an element into the set if it isn't already there.">insert</a>(MOReg);
+<a name="l00760"></a>00760     }
+<a name="l00761"></a>00761   }
+<a name="l00762"></a>00762 
+<a name="l00763"></a>00763   <span class="comment">// Move the copies connected to MI down as well.</span>
+<a name="l00764"></a>00764   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> From = <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>;
+<a name="l00765"></a>00765   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> To = <a class="code" href="namespacellvm.html#aa1704159f75e6eacd595962ea6d93ffe">llvm::next</a>(From);
+<a name="l00766"></a>00766   <span class="keywordflow">while</span> (To->isCopy() && Defs.<a class="code" href="classllvm_1_1SmallSet.html#ab28aa342862f6d16361be514fd98c22e" title="count - Return true if the element is in the set.">count</a>(To->getOperand(1).getReg())) {
+<a name="l00767"></a>00767     Defs.<a class="code" href="classllvm_1_1SmallSet.html#a8d8348060ccdeeba13fb8bc651dfbf82" title="insert - Insert an element into the set if it isn't already there.">insert</a>(To->getOperand(0).getReg());
+<a name="l00768"></a>00768     ++To;
+<a name="l00769"></a>00769   }
+<a name="l00770"></a>00770 
+<a name="l00771"></a>00771   <span class="comment">// Check if the reschedule will not break depedencies.</span>
+<a name="l00772"></a>00772   <span class="keywordtype">unsigned</span> NumVisited = 0;
+<a name="l00773"></a>00773   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> KillPos = KillMI;
+<a name="l00774"></a>00774   ++KillPos;
+<a name="l00775"></a>00775   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = To; <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != KillPos; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00776"></a>00776     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *OtherMI = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00777"></a>00777     <span class="comment">// DBG_VALUE cannot be counted against the limit.</span>
+<a name="l00778"></a>00778     <span class="keywordflow">if</span> (OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#a1e1d26226c627cf3dcf3c191b85e7d7d">isDebugValue</a>())
+<a name="l00779"></a>00779       <span class="keywordflow">continue</span>;
+<a name="l00780"></a>00780     <span class="keywordflow">if</span> (NumVisited > 10)  <span class="comment">// FIXME: Arbitrary limit to reduce compile time cost.</span>
+<a name="l00781"></a>00781       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00782"></a>00782     ++NumVisited;
+<a name="l00783"></a>00783     <span class="keywordflow">if</span> (OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#ae9a10777fdedf716a21f450a3ceaafe3">hasUnmodeledSideEffects</a>() || OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#ac4de5f228c299d7c4b7de72a4a6dd28c">isCall</a>() ||
+<a name="l00784"></a>00784         OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#a797ac100c6615ff181c03a3c35c7378f">isBranch</a>() || OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#aea36f6665e4992da1874625d5f00e1c1">isTerminator</a>())
+<a name="l00785"></a>00785       <span class="comment">// Don't move pass calls, etc.</span>
+<a name="l00786"></a>00786       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00787"></a>00787     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>(); i != e; ++i) {
+<a name="l00788"></a>00788       <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i);
+<a name="l00789"></a>00789       <span class="keywordflow">if</span> (!MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>())
+<a name="l00790"></a>00790         <span class="keywordflow">continue</span>;
+<a name="l00791"></a>00791       <span class="keywordtype">unsigned</span> MOReg = MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l00792"></a>00792       <span class="keywordflow">if</span> (!MOReg)
+<a name="l00793"></a>00793         <span class="keywordflow">continue</span>;
+<a name="l00794"></a>00794       <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a8de7d5cf38939044471c6ee60a01a3df">isDef</a>()) {
+<a name="l00795"></a>00795         <span class="keywordflow">if</span> (Uses.<a class="code" href="classllvm_1_1SmallSet.html#ab28aa342862f6d16361be514fd98c22e" title="count - Return true if the element is in the set.">count</a>(MOReg))
+<a name="l00796"></a>00796           <span class="comment">// Physical register use would be clobbered.</span>
+<a name="l00797"></a>00797           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00798"></a>00798         <span class="keywordflow">if</span> (!MO.<a class="code" href="classllvm_1_1MachineOperand.html#a196420aa839c2b21f42c4bf5c36df437">isDead</a>() && Defs.<a class="code" href="classllvm_1_1SmallSet.html#ab28aa342862f6d16361be514fd98c22e" title="count - Return true if the element is in the set.">count</a>(MOReg))
+<a name="l00799"></a>00799           <span class="comment">// May clobber a physical register def.</span>
+<a name="l00800"></a>00800           <span class="comment">// FIXME: This may be too conservative. It's ok if the instruction</span>
+<a name="l00801"></a>00801           <span class="comment">// is sunken completely below the use.</span>
+<a name="l00802"></a>00802           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00803"></a>00803       } <span class="keywordflow">else</span> {
+<a name="l00804"></a>00804         <span class="keywordflow">if</span> (Defs.<a class="code" href="classllvm_1_1SmallSet.html#ab28aa342862f6d16361be514fd98c22e" title="count - Return true if the element is in the set.">count</a>(MOReg))
+<a name="l00805"></a>00805           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00806"></a>00806         <span class="keywordflow">if</span> (MOReg != Reg &&
+<a name="l00807"></a>00807             ((MO.<a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>() && Uses.<a class="code" href="classllvm_1_1SmallSet.html#ab28aa342862f6d16361be514fd98c22e" title="count - Return true if the element is in the set.">count</a>(MOReg)) || Kills.<a class="code" href="classllvm_1_1SmallSet.html#ab28aa342862f6d16361be514fd98c22e" title="count - Return true if the element is in the set.">count</a>(MOReg)))
+<a name="l00808"></a>00808           <span class="comment">// Don't want to extend other live ranges and update kills.</span>
+<a name="l00809"></a>00809           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00810"></a>00810         <span class="keywordflow">if</span> (MOReg == Reg && !MO.<a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>())
+<a name="l00811"></a>00811           <span class="comment">// We can't schedule across a use of the register in question.</span>
+<a name="l00812"></a>00812           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00813"></a>00813         <span class="comment">// Ensure that if this is register in question, its the kill we expect.</span>
+<a name="l00814"></a>00814         assert((MOReg != Reg || OtherMI == KillMI) &&
+<a name="l00815"></a>00815                <span class="stringliteral">"Found multiple kills of a register in a basic block"</span>);
+<a name="l00816"></a>00816       }
+<a name="l00817"></a>00817     }
+<a name="l00818"></a>00818   }
+<a name="l00819"></a>00819 
+<a name="l00820"></a>00820   <span class="comment">// Move debug info as well.</span>
+<a name="l00821"></a>00821   <span class="keywordflow">while</span> (From != MBB->begin() && <a class="code" href="namespacellvm.html#a7923e3e207de8bc1d0d6a5091316ddde">llvm::prior</a>(From)->isDebugValue())
+<a name="l00822"></a>00822     --From;
+<a name="l00823"></a>00823 
+<a name="l00824"></a>00824   <span class="comment">// Copies following MI may have been moved as well.</span>
+<a name="l00825"></a>00825   nmi = To;
+<a name="l00826"></a>00826   MBB->splice(KillPos, MBB, From, To);
+<a name="l00827"></a>00827   DistanceMap.erase(DI);
+<a name="l00828"></a>00828 
+<a name="l00829"></a>00829   <span class="comment">// Update live variables</span>
+<a name="l00830"></a>00830   LV->removeVirtualRegisterKilled(Reg, KillMI);
+<a name="l00831"></a>00831   LV->addVirtualRegisterKilled(Reg, MI);
+<a name="l00832"></a>00832   <span class="keywordflow">if</span> (LIS)
+<a name="l00833"></a>00833     LIS->handleMove(MI);
+<a name="l00834"></a>00834 
+<a name="l00835"></a>00835   <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">"\trescheduled below kill: "</span> << *KillMI);
+<a name="l00836"></a>00836   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00837"></a>00837 }
+<a name="l00838"></a>00838 <span class="comment"></span>
+<a name="l00839"></a>00839 <span class="comment">/// isDefTooClose - Return true if the re-scheduling will put the given</span>
+<a name="l00840"></a>00840 <span class="comment">/// instruction too close to the defs of its register dependencies.</span>
+<a name="l00841"></a>00841 <span class="comment"></span><span class="keywordtype">bool</span> TwoAddressInstructionPass::isDefTooClose(<span class="keywordtype">unsigned</span> Reg, <span class="keywordtype">unsigned</span> Dist,
+<a name="l00842"></a>00842                                               <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI) {
+<a name="l00843"></a>00843   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineRegisterInfo_1_1defusechain__iterator.html">MachineRegisterInfo::def_iterator</a> DI = MRI->def_begin(Reg),
+<a name="l00844"></a>00844          <a class="code" href="namespacellvm_1_1X86II.html#acd283bc8136a594505ec483f4a1cc933a2c6497f6ed5314c6fcd9ab88c9528543">DE</a> = MRI->def_end(); DI != <a class="code" href="namespacellvm_1_1X86II.html#acd283bc8136a594505ec483f4a1cc933a2c6497f6ed5314c6fcd9ab88c9528543">DE</a>; ++DI) {
+<a name="l00845"></a>00845     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *DefMI = &*DI;
+<a name="l00846"></a>00846     <span class="keywordflow">if</span> (DefMI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>() != MBB || DefMI-><a class="code" href="classllvm_1_1MachineInstr.html#ae0ac5973cd95f76e3365e67aaad69de6">isCopy</a>() || DefMI-><a class="code" href="classllvm_1_1MachineInstr.html#a100d59f6313d76435a54425d3d11bf99">isCopyLike</a>())
+<a name="l00847"></a>00847       <span class="keywordflow">continue</span>;
+<a name="l00848"></a>00848     <span class="keywordflow">if</span> (DefMI == MI)
+<a name="l00849"></a>00849       <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// MI is defining something KillMI uses</span>
+<a name="l00850"></a>00850     <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<MachineInstr*, unsigned>::iterator</a> DDI = DistanceMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a21cf94357e53cd1069aba475266fdb63">find</a>(DefMI);
+<a name="l00851"></a>00851     <span class="keywordflow">if</span> (DDI == DistanceMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a321e37d79af8b4287f8a1dcf9aff9c01">end</a>())
+<a name="l00852"></a>00852       <span class="keywordflow">return</span> <span class="keyword">true</span>;  <span class="comment">// Below MI</span>
+<a name="l00853"></a>00853     <span class="keywordtype">unsigned</span> DefDist = DDI->second;
+<a name="l00854"></a>00854     assert(Dist > DefDist && <span class="stringliteral">"Visited def already?"</span>);
+<a name="l00855"></a>00855     <span class="keywordflow">if</span> (TII->getInstrLatency(InstrItins, DefMI) > (Dist - DefDist))
+<a name="l00856"></a>00856       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00857"></a>00857   }
+<a name="l00858"></a>00858   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00859"></a>00859 }
+<a name="l00860"></a>00860 <span class="comment"></span>
+<a name="l00861"></a>00861 <span class="comment">/// rescheduleKillAboveMI - If there is one more local instruction that reads</span>
+<a name="l00862"></a>00862 <span class="comment">/// 'Reg' and it kills 'Reg, consider moving the kill instruction above the</span>
+<a name="l00863"></a>00863 <span class="comment">/// current two-address instruction in order to eliminate the need for the</span>
+<a name="l00864"></a>00864 <span class="comment">/// copy.</span>
+<a name="l00865"></a>00865 <span class="comment"></span><span class="keywordtype">bool</span> TwoAddressInstructionPass::
+<a name="l00866"></a>00866 rescheduleKillAboveMI(<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &mi,
+<a name="l00867"></a>00867                       <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &nmi,
+<a name="l00868"></a>00868                       <span class="keywordtype">unsigned</span> Reg) {
+<a name="l00869"></a>00869   <span class="comment">// Bail immediately if we don't have LV available. We use it to find kills</span>
+<a name="l00870"></a>00870   <span class="comment">// efficiently.</span>
+<a name="l00871"></a>00871   <span class="keywordflow">if</span> (!LV)
+<a name="l00872"></a>00872     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00873"></a>00873 
+<a name="l00874"></a>00874   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI = &*mi;
+<a name="l00875"></a>00875   <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<MachineInstr*, unsigned>::iterator</a> DI = DistanceMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a21cf94357e53cd1069aba475266fdb63">find</a>(MI);
+<a name="l00876"></a>00876   <span class="keywordflow">if</span> (DI == DistanceMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a321e37d79af8b4287f8a1dcf9aff9c01">end</a>())
+<a name="l00877"></a>00877     <span class="comment">// Must be created from unfolded load. Don't waste time trying this.</span>
+<a name="l00878"></a>00878     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00879"></a>00879 
+<a name="l00880"></a>00880   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *KillMI = LV->getVarInfo(Reg).findKill(MBB);
+<a name="l00881"></a>00881   <span class="keywordflow">if</span> (!KillMI || MI == KillMI || KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#ae0ac5973cd95f76e3365e67aaad69de6">isCopy</a>() || KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#a100d59f6313d76435a54425d3d11bf99">isCopyLike</a>())
+<a name="l00882"></a>00882     <span class="comment">// Don't mess with copies, they may be coalesced later.</span>
+<a name="l00883"></a>00883     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00884"></a>00884 
+<a name="l00885"></a>00885   <span class="keywordtype">unsigned</span> DstReg;
+<a name="l00886"></a>00886   <span class="keywordflow">if</span> (<a class="code" href="TwoAddressInstructionPass_8cpp.html#a2d435e5deb4db8580536ae97ea46ccc5">isTwoAddrUse</a>(*KillMI, Reg, DstReg))
+<a name="l00887"></a>00887     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00888"></a>00888 
+<a name="l00889"></a>00889   <span class="keywordtype">bool</span> SeenStore = <span class="keyword">true</span>;
+<a name="l00890"></a>00890   <span class="keywordflow">if</span> (!KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#a55f1c19ebb9fce7a442816eeb154174f">isSafeToMove</a>(TII, AA, SeenStore))
+<a name="l00891"></a>00891     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00892"></a>00892 
+<a name="l00893"></a>00893   <a class="code" href="classllvm_1_1SmallSet.html">SmallSet<unsigned, 2></a> Uses;
+<a name="l00894"></a>00894   <a class="code" href="classllvm_1_1SmallSet.html">SmallSet<unsigned, 2></a> Kills;
+<a name="l00895"></a>00895   <a class="code" href="classllvm_1_1SmallSet.html">SmallSet<unsigned, 2></a> Defs;
+<a name="l00896"></a>00896   <a class="code" href="classllvm_1_1SmallSet.html">SmallSet<unsigned, 2></a> LiveDefs;
+<a name="l00897"></a>00897   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>(); i != e; ++i) {
+<a name="l00898"></a>00898     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = KillMI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i);
+<a name="l00899"></a>00899     <span class="keywordflow">if</span> (!MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>())
+<a name="l00900"></a>00900       <span class="keywordflow">continue</span>;
+<a name="l00901"></a>00901     <span class="keywordtype">unsigned</span> MOReg = MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l00902"></a>00902     <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>()) {
+<a name="l00903"></a>00903       <span class="keywordflow">if</span> (!MOReg)
+<a name="l00904"></a>00904         <span class="keywordflow">continue</span>;
+<a name="l00905"></a>00905       <span class="keywordflow">if</span> (isDefTooClose(MOReg, DI->second, MI))
+<a name="l00906"></a>00906         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00907"></a>00907       <span class="keywordflow">if</span> (MOReg == Reg && !MO.<a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>())
+<a name="l00908"></a>00908         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00909"></a>00909       Uses.<a class="code" href="classllvm_1_1SmallSet.html#a8d8348060ccdeeba13fb8bc651dfbf82" title="insert - Insert an element into the set if it isn't already there.">insert</a>(MOReg);
+<a name="l00910"></a>00910       <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>() && MOReg != <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>)
+<a name="l00911"></a>00911         Kills.<a class="code" href="classllvm_1_1SmallSet.html#a8d8348060ccdeeba13fb8bc651dfbf82" title="insert - Insert an element into the set if it isn't already there.">insert</a>(MOReg);
+<a name="l00912"></a>00912     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1TargetRegisterInfo.html#a055858b14215864ed367a8db6c19d6f6">TargetRegisterInfo::isPhysicalRegister</a>(MOReg)) {
+<a name="l00913"></a>00913       Defs.<a class="code" href="classllvm_1_1SmallSet.html#a8d8348060ccdeeba13fb8bc651dfbf82" title="insert - Insert an element into the set if it isn't already there.">insert</a>(MOReg);
+<a name="l00914"></a>00914       <span class="keywordflow">if</span> (!MO.<a class="code" href="classllvm_1_1MachineOperand.html#a196420aa839c2b21f42c4bf5c36df437">isDead</a>())
+<a name="l00915"></a>00915         LiveDefs.<a class="code" href="classllvm_1_1SmallSet.html#a8d8348060ccdeeba13fb8bc651dfbf82" title="insert - Insert an element into the set if it isn't already there.">insert</a>(MOReg);
+<a name="l00916"></a>00916     }
+<a name="l00917"></a>00917   }
+<a name="l00918"></a>00918 
+<a name="l00919"></a>00919   <span class="comment">// Check if the reschedule will not break depedencies.</span>
+<a name="l00920"></a>00920   <span class="keywordtype">unsigned</span> NumVisited = 0;
+<a name="l00921"></a>00921   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> KillPos = KillMI;
+<a name="l00922"></a>00922   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = mi; <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != KillPos; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00923"></a>00923     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *OtherMI = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00924"></a>00924     <span class="comment">// DBG_VALUE cannot be counted against the limit.</span>
+<a name="l00925"></a>00925     <span class="keywordflow">if</span> (OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#a1e1d26226c627cf3dcf3c191b85e7d7d">isDebugValue</a>())
+<a name="l00926"></a>00926       <span class="keywordflow">continue</span>;
+<a name="l00927"></a>00927     <span class="keywordflow">if</span> (NumVisited > 10)  <span class="comment">// FIXME: Arbitrary limit to reduce compile time cost.</span>
+<a name="l00928"></a>00928       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00929"></a>00929     ++NumVisited;
+<a name="l00930"></a>00930     <span class="keywordflow">if</span> (OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#ae9a10777fdedf716a21f450a3ceaafe3">hasUnmodeledSideEffects</a>() || OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#ac4de5f228c299d7c4b7de72a4a6dd28c">isCall</a>() ||
+<a name="l00931"></a>00931         OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#a797ac100c6615ff181c03a3c35c7378f">isBranch</a>() || OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#aea36f6665e4992da1874625d5f00e1c1">isTerminator</a>())
+<a name="l00932"></a>00932       <span class="comment">// Don't move pass calls, etc.</span>
+<a name="l00933"></a>00933       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00934"></a>00934     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<unsigned, 2></a> OtherDefs;
+<a name="l00935"></a>00935     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>(); i != e; ++i) {
+<a name="l00936"></a>00936       <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = OtherMI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i);
+<a name="l00937"></a>00937       <span class="keywordflow">if</span> (!MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>())
+<a name="l00938"></a>00938         <span class="keywordflow">continue</span>;
+<a name="l00939"></a>00939       <span class="keywordtype">unsigned</span> MOReg = MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l00940"></a>00940       <span class="keywordflow">if</span> (!MOReg)
+<a name="l00941"></a>00941         <span class="keywordflow">continue</span>;
+<a name="l00942"></a>00942       <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>()) {
+<a name="l00943"></a>00943         <span class="keywordflow">if</span> (Defs.<a class="code" href="classllvm_1_1SmallSet.html#ab28aa342862f6d16361be514fd98c22e" title="count - Return true if the element is in the set.">count</a>(MOReg))
+<a name="l00944"></a>00944           <span class="comment">// Moving KillMI can clobber the physical register if the def has</span>
+<a name="l00945"></a>00945           <span class="comment">// not been seen.</span>
+<a name="l00946"></a>00946           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00947"></a>00947         <span class="keywordflow">if</span> (Kills.<a class="code" href="classllvm_1_1SmallSet.html#ab28aa342862f6d16361be514fd98c22e" title="count - Return true if the element is in the set.">count</a>(MOReg))
+<a name="l00948"></a>00948           <span class="comment">// Don't want to extend other live ranges and update kills.</span>
+<a name="l00949"></a>00949           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00950"></a>00950         <span class="keywordflow">if</span> (OtherMI != MI && MOReg == Reg && !MO.<a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>())
+<a name="l00951"></a>00951           <span class="comment">// We can't schedule across a use of the register in question.</span>
+<a name="l00952"></a>00952           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00953"></a>00953       } <span class="keywordflow">else</span> {
+<a name="l00954"></a>00954         OtherDefs.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(MOReg);
+<a name="l00955"></a>00955       }
+<a name="l00956"></a>00956     }
+<a name="l00957"></a>00957 
+<a name="l00958"></a>00958     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = OtherDefs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>(); i != e; ++i) {
+<a name="l00959"></a>00959       <span class="keywordtype">unsigned</span> MOReg = OtherDefs[i];
+<a name="l00960"></a>00960       <span class="keywordflow">if</span> (Uses.<a class="code" href="classllvm_1_1SmallSet.html#ab28aa342862f6d16361be514fd98c22e" title="count - Return true if the element is in the set.">count</a>(MOReg))
+<a name="l00961"></a>00961         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00962"></a>00962       <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1TargetRegisterInfo.html#a055858b14215864ed367a8db6c19d6f6">TargetRegisterInfo::isPhysicalRegister</a>(MOReg) &&
+<a name="l00963"></a>00963           LiveDefs.<a class="code" href="classllvm_1_1SmallSet.html#ab28aa342862f6d16361be514fd98c22e" title="count - Return true if the element is in the set.">count</a>(MOReg))
+<a name="l00964"></a>00964         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00965"></a>00965       <span class="comment">// Physical register def is seen.</span>
+<a name="l00966"></a>00966       Defs.<a class="code" href="classllvm_1_1SmallSet.html#a75a2d2ad3b3dce6702750d570ee8f343">erase</a>(MOReg);
+<a name="l00967"></a>00967     }
+<a name="l00968"></a>00968   }
+<a name="l00969"></a>00969 
+<a name="l00970"></a>00970   <span class="comment">// Move the old kill above MI, don't forget to move debug info as well.</span>
+<a name="l00971"></a>00971   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> InsertPos = mi;
+<a name="l00972"></a>00972   <span class="keywordflow">while</span> (InsertPos != MBB->begin() && <a class="code" href="namespacellvm.html#a7923e3e207de8bc1d0d6a5091316ddde">llvm::prior</a>(InsertPos)->isDebugValue())
+<a name="l00973"></a>00973     --InsertPos;
+<a name="l00974"></a>00974   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> From = KillMI;
+<a name="l00975"></a>00975   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> To = <a class="code" href="namespacellvm.html#aa1704159f75e6eacd595962ea6d93ffe">llvm::next</a>(From);
+<a name="l00976"></a>00976   <span class="keywordflow">while</span> (<a class="code" href="namespacellvm.html#a7923e3e207de8bc1d0d6a5091316ddde">llvm::prior</a>(From)->isDebugValue())
+<a name="l00977"></a>00977     --From;
+<a name="l00978"></a>00978   MBB->splice(InsertPos, MBB, From, To);
+<a name="l00979"></a>00979 
+<a name="l00980"></a>00980   nmi = <a class="code" href="namespacellvm.html#a7923e3e207de8bc1d0d6a5091316ddde">llvm::prior</a>(InsertPos); <span class="comment">// Backtrack so we process the moved instr.</span>
+<a name="l00981"></a>00981   DistanceMap.erase(DI);
+<a name="l00982"></a>00982 
+<a name="l00983"></a>00983   <span class="comment">// Update live variables</span>
+<a name="l00984"></a>00984   LV->removeVirtualRegisterKilled(Reg, KillMI);
+<a name="l00985"></a>00985   LV->addVirtualRegisterKilled(Reg, MI);
+<a name="l00986"></a>00986   <span class="keywordflow">if</span> (LIS)
+<a name="l00987"></a>00987     LIS->handleMove(KillMI);
+<a name="l00988"></a>00988 
+<a name="l00989"></a>00989   <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">"\trescheduled kill: "</span> << *KillMI);
+<a name="l00990"></a>00990   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00991"></a>00991 }
+<a name="l00992"></a>00992 <span class="comment"></span>
+<a name="l00993"></a>00993 <span class="comment">/// tryInstructionTransform - For the case where an instruction has a single</span>
+<a name="l00994"></a>00994 <span class="comment">/// pair of tied register operands, attempt some transformations that may</span>
+<a name="l00995"></a>00995 <span class="comment">/// either eliminate the tied operands or improve the opportunities for</span>
+<a name="l00996"></a>00996 <span class="comment">/// coalescing away the register copy.  Returns true if no copy needs to be</span>
+<a name="l00997"></a>00997 <span class="comment">/// inserted to untie mi's operands (either because they were untied, or</span>
+<a name="l00998"></a>00998 <span class="comment">/// because mi was rescheduled, and will be visited again later).</span>
+<a name="l00999"></a>00999 <span class="comment"></span><span class="keywordtype">bool</span> TwoAddressInstructionPass::
+<a name="l01000"></a>01000 tryInstructionTransform(<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &mi,
+<a name="l01001"></a>01001                         <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> &nmi,
+<a name="l01002"></a>01002                         <span class="keywordtype">unsigned</span> SrcIdx, <span class="keywordtype">unsigned</span> DstIdx, <span class="keywordtype">unsigned</span> Dist) {
+<a name="l01003"></a>01003   <span class="keywordflow">if</span> (OptLevel == <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4a451bbac85aff02d070be3c17a6bef928">CodeGenOpt::None</a>)
+<a name="l01004"></a>01004     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01005"></a>01005 
+<a name="l01006"></a>01006   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> &MI = *mi;
+<a name="l01007"></a>01007   <span class="keywordtype">unsigned</span> regA = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(DstIdx).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l01008"></a>01008   <span class="keywordtype">unsigned</span> regB = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(SrcIdx).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l01009"></a>01009 
+<a name="l01010"></a>01010   assert(<a class="code" href="classllvm_1_1TargetRegisterInfo.html#ae62c5ea35b71f9020caa94340bc78f37">TargetRegisterInfo::isVirtualRegister</a>(regB) &&
+<a name="l01011"></a>01011          <span class="stringliteral">"cannot make instruction into two-address form"</span>);
+<a name="l01012"></a>01012   <span class="keywordtype">bool</span> regBKilled = <a class="code" href="TwoAddressInstructionPass_8cpp.html#aa3bc7e91dad8755abcf2329ff40de0a3">isKilled</a>(MI, regB, MRI, TII);
+<a name="l01013"></a>01013 
+<a name="l01014"></a>01014   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1TargetRegisterInfo.html#ae62c5ea35b71f9020caa94340bc78f37">TargetRegisterInfo::isVirtualRegister</a>(regA))
+<a name="l01015"></a>01015     scanUses(regA);
+<a name="l01016"></a>01016 
+<a name="l01017"></a>01017   <span class="comment">// Check if it is profitable to commute the operands.</span>
+<a name="l01018"></a>01018   <span class="keywordtype">unsigned</span> SrcOp1, SrcOp2;
+<a name="l01019"></a>01019   <span class="keywordtype">unsigned</span> regC = 0;
+<a name="l01020"></a>01020   <span class="keywordtype">unsigned</span> regCIdx = ~0U;
+<a name="l01021"></a>01021   <span class="keywordtype">bool</span> TryCommute = <span class="keyword">false</span>;
+<a name="l01022"></a>01022   <span class="keywordtype">bool</span> AggressiveCommute = <span class="keyword">false</span>;
+<a name="l01023"></a>01023   <span class="keywordflow">if</span> (MI.<a class="code" href="classllvm_1_1MachineInstr.html#aafb199cf6f6f35679ac670d7630d8b35">isCommutable</a>() && MI.<a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>() >= 3 &&
+<a name="l01024"></a>01024       TII->findCommutedOpIndices(&MI, SrcOp1, SrcOp2)) {
+<a name="l01025"></a>01025     <span class="keywordflow">if</span> (SrcIdx == SrcOp1)
+<a name="l01026"></a>01026       regCIdx = SrcOp2;
+<a name="l01027"></a>01027     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SrcIdx == SrcOp2)
+<a name="l01028"></a>01028       regCIdx = SrcOp1;
+<a name="l01029"></a>01029 
+<a name="l01030"></a>01030     <span class="keywordflow">if</span> (regCIdx != ~0U) {
+<a name="l01031"></a>01031       regC = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(regCIdx).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l01032"></a>01032       <span class="keywordflow">if</span> (!regBKilled && <a class="code" href="TwoAddressInstructionPass_8cpp.html#aa3bc7e91dad8755abcf2329ff40de0a3">isKilled</a>(MI, regC, MRI, TII))
+<a name="l01033"></a>01033         <span class="comment">// If C dies but B does not, swap the B and C operands.</span>
+<a name="l01034"></a>01034         <span class="comment">// This makes the live ranges of A and C joinable.</span>
+<a name="l01035"></a>01035         TryCommute = <span class="keyword">true</span>;
+<a name="l01036"></a>01036       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isProfitableToCommute(regA, regB, regC, &MI, Dist)) {
+<a name="l01037"></a>01037         TryCommute = <span class="keyword">true</span>;
+<a name="l01038"></a>01038         AggressiveCommute = <span class="keyword">true</span>;
+<a name="l01039"></a>01039       }
+<a name="l01040"></a>01040     }
+<a name="l01041"></a>01041   }
+<a name="l01042"></a>01042 
+<a name="l01043"></a>01043   <span class="comment">// If it's profitable to commute, try to do so.</span>
+<a name="l01044"></a>01044   <span class="keywordflow">if</span> (TryCommute && commuteInstruction(mi, regB, regC, Dist)) {
+<a name="l01045"></a>01045     ++NumCommuted;
+<a name="l01046"></a>01046     <span class="keywordflow">if</span> (AggressiveCommute)
+<a name="l01047"></a>01047       ++NumAggrCommuted;
+<a name="l01048"></a>01048     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01049"></a>01049   }
+<a name="l01050"></a>01050 
+<a name="l01051"></a>01051   <span class="comment">// If there is one more use of regB later in the same MBB, consider</span>
+<a name="l01052"></a>01052   <span class="comment">// re-schedule this MI below it.</span>
+<a name="l01053"></a>01053   <span class="keywordflow">if</span> (rescheduleMIBelowKill(mi, nmi, regB)) {
+<a name="l01054"></a>01054     ++NumReSchedDowns;
+<a name="l01055"></a>01055     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01056"></a>01056   }
+<a name="l01057"></a>01057 
+<a name="l01058"></a>01058   <span class="keywordflow">if</span> (MI.<a class="code" href="classllvm_1_1MachineInstr.html#a4b447a888046d9a32ab19116d6c3e27a">isConvertibleTo3Addr</a>()) {
+<a name="l01059"></a>01059     <span class="comment">// This instruction is potentially convertible to a true</span>
+<a name="l01060"></a>01060     <span class="comment">// three-address instruction.  Check if it is profitable.</span>
+<a name="l01061"></a>01061     <span class="keywordflow">if</span> (!regBKilled || isProfitableToConv3Addr(regA, regB)) {
+<a name="l01062"></a>01062       <span class="comment">// Try to convert it.</span>
+<a name="l01063"></a>01063       <span class="keywordflow">if</span> (convertInstTo3Addr(mi, nmi, regA, regB, Dist)) {
+<a name="l01064"></a>01064         ++NumConvertedTo3Addr;
+<a name="l01065"></a>01065         <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// Done with this instruction.</span>
+<a name="l01066"></a>01066       }
+<a name="l01067"></a>01067     }
+<a name="l01068"></a>01068   }
+<a name="l01069"></a>01069 
+<a name="l01070"></a>01070   <span class="comment">// If there is one more use of regB later in the same MBB, consider</span>
+<a name="l01071"></a>01071   <span class="comment">// re-schedule it before this MI if it's legal.</span>
+<a name="l01072"></a>01072   <span class="keywordflow">if</span> (rescheduleKillAboveMI(mi, nmi, regB)) {
+<a name="l01073"></a>01073     ++NumReSchedUps;
+<a name="l01074"></a>01074     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01075"></a>01075   }
+<a name="l01076"></a>01076 
+<a name="l01077"></a>01077   <span class="comment">// If this is an instruction with a load folded into it, try unfolding</span>
+<a name="l01078"></a>01078   <span class="comment">// the load, e.g. avoid this:</span>
+<a name="l01079"></a>01079   <span class="comment">//   movq %rdx, %rcx</span>
+<a name="l01080"></a>01080   <span class="comment">//   addq (%rax), %rcx</span>
+<a name="l01081"></a>01081   <span class="comment">// in favor of this:</span>
+<a name="l01082"></a>01082   <span class="comment">//   movq (%rax), %rcx</span>
+<a name="l01083"></a>01083   <span class="comment">//   addq %rdx, %rcx</span>
+<a name="l01084"></a>01084   <span class="comment">// because it's preferable to schedule a load than a register copy.</span>
+<a name="l01085"></a>01085   <span class="keywordflow">if</span> (MI.<a class="code" href="classllvm_1_1MachineInstr.html#a2b48451e9cc8433ed5f8ee30462cc96e">mayLoad</a>() && !regBKilled) {
+<a name="l01086"></a>01086     <span class="comment">// Determine if a load can be unfolded.</span>
+<a name="l01087"></a>01087     <span class="keywordtype">unsigned</span> LoadRegIndex;
+<a name="l01088"></a>01088     <span class="keywordtype">unsigned</span> NewOpc =
+<a name="l01089"></a>01089       TII->getOpcodeAfterMemoryUnfold(MI.<a class="code" href="classllvm_1_1MachineInstr.html#a242314c0ae0147d1a7ef54c9bc312616">getOpcode</a>(),
+<a name="l01090"></a>01090                                       <span class="comment">/*UnfoldLoad=*/</span><span class="keyword">true</span>,
+<a name="l01091"></a>01091                                       <span class="comment">/*UnfoldStore=*/</span><span class="keyword">false</span>,
+<a name="l01092"></a>01092                                       &LoadRegIndex);
+<a name="l01093"></a>01093     <span class="keywordflow">if</span> (NewOpc != 0) {
+<a name="l01094"></a>01094       <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstrDesc.html">MCInstrDesc</a> &UnfoldMCID = TII->get(NewOpc);
+<a name="l01095"></a>01095       <span class="keywordflow">if</span> (UnfoldMCID.<a class="code" href="classllvm_1_1MCInstrDesc.html#a9d472a8ee447cef18a71beb229d4d252">getNumDefs</a>() == 1) {
+<a name="l01096"></a>01096         <span class="comment">// Unfold the load.</span>
+<a name="l01097"></a>01097         <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">"2addr:   UNFOLDING: "</span> << MI);
+<a name="l01098"></a>01098         <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterClass.html">TargetRegisterClass</a> *RC =
+<a name="l01099"></a>01099           TRI->getAllocatableClass(
+<a name="l01100"></a>01100             TII->getRegClass(UnfoldMCID, LoadRegIndex, TRI, *MF));
+<a name="l01101"></a>01101         <span class="keywordtype">unsigned</span> Reg = MRI->createVirtualRegister(RC);
+<a name="l01102"></a>01102         <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<MachineInstr *, 2></a> NewMIs;
+<a name="l01103"></a>01103         <span class="keywordflow">if</span> (!TII->unfoldMemoryOperand(*MF, &MI, Reg,
+<a name="l01104"></a>01104                                       <span class="comment">/*UnfoldLoad=*/</span><span class="keyword">true</span>,<span class="comment">/*UnfoldStore=*/</span><span class="keyword">false</span>,
+<a name="l01105"></a>01105                                       NewMIs)) {
+<a name="l01106"></a>01106           <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">"2addr: ABANDONING UNFOLD\n"</span>);
+<a name="l01107"></a>01107           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01108"></a>01108         }
+<a name="l01109"></a>01109         assert(NewMIs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() == 2 &&
+<a name="l01110"></a>01110                <span class="stringliteral">"Unfolded a load into multiple instructions!"</span>);
+<a name="l01111"></a>01111         <span class="comment">// The load was previously folded, so this is the only use.</span>
+<a name="l01112"></a>01112         NewMIs[1]->addRegisterKilled(Reg, TRI);
+<a name="l01113"></a>01113 
+<a name="l01114"></a>01114         <span class="comment">// Tentatively insert the instructions into the block so that they</span>
+<a name="l01115"></a>01115         <span class="comment">// look "normal" to the transformation logic.</span>
+<a name="l01116"></a>01116         MBB-><a class="code" href="classllvm_1_1SmallVectorImpl.html#af622128e353515efebccad40eae495cb">insert</a>(mi, NewMIs[0]);
+<a name="l01117"></a>01117         MBB->insert(mi, NewMIs[1]);
+<a name="l01118"></a>01118 
+<a name="l01119"></a>01119         <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">"2addr:    NEW LOAD: "</span> << *NewMIs[0]
+<a name="l01120"></a>01120                      << <span class="stringliteral">"2addr:    NEW INST: "</span> << *NewMIs[1]);
+<a name="l01121"></a>01121 
+<a name="l01122"></a>01122         <span class="comment">// Transform the instruction, now that it no longer has a load.</span>
+<a name="l01123"></a>01123         <span class="keywordtype">unsigned</span> NewDstIdx = NewMIs[1]->findRegisterDefOperandIdx(regA);
+<a name="l01124"></a>01124         <span class="keywordtype">unsigned</span> NewSrcIdx = NewMIs[1]->findRegisterUseOperandIdx(regB);
+<a name="l01125"></a>01125         <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> NewMI = NewMIs[1];
+<a name="l01126"></a>01126         <span class="keywordtype">bool</span> TransformSuccess =
+<a name="l01127"></a>01127           tryInstructionTransform(NewMI, mi, NewSrcIdx, NewDstIdx, Dist);
+<a name="l01128"></a>01128         <span class="keywordflow">if</span> (TransformSuccess ||
+<a name="l01129"></a>01129             NewMIs[1]->getOperand(NewSrcIdx).isKill()) {
+<a name="l01130"></a>01130           <span class="comment">// Success, or at least we made an improvement. Keep the unfolded</span>
+<a name="l01131"></a>01131           <span class="comment">// instructions and discard the original.</span>
+<a name="l01132"></a>01132           <span class="keywordflow">if</span> (LV) {
+<a name="l01133"></a>01133             <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>(); i != e; ++i) {
+<a name="l01134"></a>01134               <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = MI.<a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i);
+<a name="l01135"></a>01135               <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() &&
+<a name="l01136"></a>01136                   <a class="code" href="classllvm_1_1TargetRegisterInfo.html#ae62c5ea35b71f9020caa94340bc78f37">TargetRegisterInfo::isVirtualRegister</a>(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>())) {
+<a name="l01137"></a>01137                 <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>()) {
+<a name="l01138"></a>01138                   <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>()) {
+<a name="l01139"></a>01139                     <span class="keywordflow">if</span> (NewMIs[0]->killsRegister(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>()))
+<a name="l01140"></a>01140                       LV->replaceKillInstruction(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>(), &<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, NewMIs[0]);
+<a name="l01141"></a>01141                     <span class="keywordflow">else</span> {
+<a name="l01142"></a>01142                       assert(NewMIs[1]->killsRegister(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>()) &&
+<a name="l01143"></a>01143                              <span class="stringliteral">"Kill missing after load unfold!"</span>);
+<a name="l01144"></a>01144                       LV->replaceKillInstruction(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>(), &<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, NewMIs[1]);
+<a name="l01145"></a>01145                     }
+<a name="l01146"></a>01146                   }
+<a name="l01147"></a>01147                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (LV->removeVirtualRegisterDead(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>(), &<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>)) {
+<a name="l01148"></a>01148                   <span class="keywordflow">if</span> (NewMIs[1]->registerDefIsDead(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>()))
+<a name="l01149"></a>01149                     LV->addVirtualRegisterDead(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>(), NewMIs[1]);
+<a name="l01150"></a>01150                   <span class="keywordflow">else</span> {
+<a name="l01151"></a>01151                     assert(NewMIs[0]->registerDefIsDead(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>()) &&
+<a name="l01152"></a>01152                            <span class="stringliteral">"Dead flag missing after load unfold!"</span>);
+<a name="l01153"></a>01153                     LV->addVirtualRegisterDead(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>(), NewMIs[0]);
+<a name="l01154"></a>01154                   }
+<a name="l01155"></a>01155                 }
+<a name="l01156"></a>01156               }
+<a name="l01157"></a>01157             }
+<a name="l01158"></a>01158             LV->addVirtualRegisterKilled(Reg, NewMIs[1]);
+<a name="l01159"></a>01159           }
+<a name="l01160"></a>01160           MI.<a class="code" href="classllvm_1_1MachineInstr.html#ac2421adbb9996e1b15f03a8abb6c70a8">eraseFromParent</a>();
+<a name="l01161"></a>01161           mi = NewMIs[1];
+<a name="l01162"></a>01162           <span class="keywordflow">if</span> (TransformSuccess)
+<a name="l01163"></a>01163             <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01164"></a>01164         } <span class="keywordflow">else</span> {
+<a name="l01165"></a>01165           <span class="comment">// Transforming didn't eliminate the tie and didn't lead to an</span>
+<a name="l01166"></a>01166           <span class="comment">// improvement. Clean up the unfolded instructions and keep the</span>
+<a name="l01167"></a>01167           <span class="comment">// original.</span>
+<a name="l01168"></a>01168           <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">"2addr: ABANDONING UNFOLD\n"</span>);
+<a name="l01169"></a>01169           NewMIs[0]->eraseFromParent();
+<a name="l01170"></a>01170           NewMIs[1]->eraseFromParent();
+<a name="l01171"></a>01171         }
+<a name="l01172"></a>01172       }
+<a name="l01173"></a>01173     }
+<a name="l01174"></a>01174   }
+<a name="l01175"></a>01175 
+<a name="l01176"></a>01176   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01177"></a>01177 }
+<a name="l01178"></a>01178 
+<a name="l01179"></a>01179 <span class="comment">// Collect tied operands of MI that need to be handled.</span>
+<a name="l01180"></a>01180 <span class="comment">// Rewrite trivial cases immediately.</span>
+<a name="l01181"></a>01181 <span class="comment">// Return true if any tied operands where found, including the trivial ones.</span>
+<a name="l01182"></a>01182 <span class="keywordtype">bool</span> TwoAddressInstructionPass::
+<a name="l01183"></a>01183 collectTiedOperands(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, TiedOperandMap &TiedOperands) {
+<a name="l01184"></a>01184   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstrDesc.html">MCInstrDesc</a> &MCID = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a803a7424877fd049679b9aa2f07597b5">getDesc</a>();
+<a name="l01185"></a>01185   <span class="keywordtype">bool</span> AnyOps = <span class="keyword">false</span>;
+<a name="l01186"></a>01186   <span class="keywordtype">unsigned</span> NumOps = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>();
+<a name="l01187"></a>01187 
+<a name="l01188"></a>01188   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> SrcIdx = 0; SrcIdx < NumOps; ++SrcIdx) {
+<a name="l01189"></a>01189     <span class="keywordtype">unsigned</span> DstIdx = 0;
+<a name="l01190"></a>01190     <span class="keywordflow">if</span> (!MI-><a class="code" href="classllvm_1_1MachineInstr.html#a24f355a6becd20125a8f556c22c2c0af">isRegTiedToDefOperand</a>(SrcIdx, &DstIdx))
+<a name="l01191"></a>01191       <span class="keywordflow">continue</span>;
+<a name="l01192"></a>01192     AnyOps = <span class="keyword">true</span>;
+<a name="l01193"></a>01193     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &SrcMO = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(SrcIdx);
+<a name="l01194"></a>01194     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &DstMO = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(DstIdx);
+<a name="l01195"></a>01195     <span class="keywordtype">unsigned</span> SrcReg = SrcMO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l01196"></a>01196     <span class="keywordtype">unsigned</span> DstReg = DstMO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l01197"></a>01197     <span class="comment">// Tied constraint already satisfied?</span>
+<a name="l01198"></a>01198     <span class="keywordflow">if</span> (SrcReg == DstReg)
+<a name="l01199"></a>01199       <span class="keywordflow">continue</span>;
+<a name="l01200"></a>01200 
+<a name="l01201"></a>01201     assert(SrcReg && SrcMO.<a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>() && <span class="stringliteral">"two address instruction invalid"</span>);
+<a name="l01202"></a>01202 
+<a name="l01203"></a>01203     <span class="comment">// Deal with <undef> uses immediately - simply rewrite the src operand.</span>
+<a name="l01204"></a>01204     <span class="keywordflow">if</span> (SrcMO.<a class="code" href="classllvm_1_1MachineOperand.html#afbf853e3a0de950e9116ffb9929ceebd">isUndef</a>()) {
+<a name="l01205"></a>01205       <span class="comment">// Constrain the DstReg register class if required.</span>
+<a name="l01206"></a>01206       <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1TargetRegisterInfo.html#ae62c5ea35b71f9020caa94340bc78f37">TargetRegisterInfo::isVirtualRegister</a>(DstReg))
+<a name="l01207"></a>01207         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterClass.html">TargetRegisterClass</a> *RC = TII->getRegClass(MCID, SrcIdx,
+<a name="l01208"></a>01208                                                              TRI, *MF))
+<a name="l01209"></a>01209           MRI->constrainRegClass(DstReg, RC);
+<a name="l01210"></a>01210       SrcMO.<a class="code" href="classllvm_1_1MachineOperand.html#a624a062754a09d3787614d8627096705">setReg</a>(DstReg);
+<a name="l01211"></a>01211       <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">"\t\trewrite undef:\t"</span> << *MI);
+<a name="l01212"></a>01212       <span class="keywordflow">continue</span>;
+<a name="l01213"></a>01213     }
+<a name="l01214"></a>01214     TiedOperands[SrcReg].push_back(std::make_pair(SrcIdx, DstIdx));
+<a name="l01215"></a>01215   }
+<a name="l01216"></a>01216   <span class="keywordflow">return</span> AnyOps;
+<a name="l01217"></a>01217 }
+<a name="l01218"></a>01218 
+<a name="l01219"></a>01219 <span class="comment">// Process a list of tied MI operands that all use the same source register.</span>
+<a name="l01220"></a>01220 <span class="comment">// The tied pairs are of the form (SrcIdx, DstIdx).</span>
+<a name="l01221"></a>01221 <span class="keywordtype">void</span>
+<a name="l01222"></a>01222 TwoAddressInstructionPass::processTiedPairs(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI,
+<a name="l01223"></a>01223                                             TiedPairList &TiedPairs,
+<a name="l01224"></a>01224                                             <span class="keywordtype">unsigned</span> &Dist) {
+<a name="l01225"></a>01225   <span class="keywordtype">bool</span> IsEarlyClobber = <span class="keyword">false</span>;
+<a name="l01226"></a>01226   <span class="keywordtype">bool</span> RemovedKillFlag = <span class="keyword">false</span>;
+<a name="l01227"></a>01227   <span class="keywordtype">bool</span> AllUsesCopied = <span class="keyword">true</span>;
+<a name="l01228"></a>01228   <span class="keywordtype">unsigned</span> LastCopiedReg = 0;
+<a name="l01229"></a>01229   <span class="keywordtype">unsigned</span> RegB = 0;
+<a name="l01230"></a>01230   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> tpi = 0, tpe = TiedPairs.size(); tpi != tpe; ++tpi) {
+<a name="l01231"></a>01231     <span class="keywordtype">unsigned</span> SrcIdx = TiedPairs[tpi].first;
+<a name="l01232"></a>01232     <span class="keywordtype">unsigned</span> DstIdx = TiedPairs[tpi].second;
+<a name="l01233"></a>01233 
+<a name="l01234"></a>01234     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &DstMO = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(DstIdx);
+<a name="l01235"></a>01235     <span class="keywordtype">unsigned</span> RegA = DstMO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l01236"></a>01236     IsEarlyClobber |= DstMO.<a class="code" href="classllvm_1_1MachineOperand.html#a11d72231fe6da4abec10afff58dede5d">isEarlyClobber</a>();
+<a name="l01237"></a>01237 
+<a name="l01238"></a>01238     <span class="comment">// Grab RegB from the instruction because it may have changed if the</span>
+<a name="l01239"></a>01239     <span class="comment">// instruction was commuted.</span>
+<a name="l01240"></a>01240     RegB = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(SrcIdx).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l01241"></a>01241 
+<a name="l01242"></a>01242     <span class="keywordflow">if</span> (RegA == RegB) {
+<a name="l01243"></a>01243       <span class="comment">// The register is tied to multiple destinations (or else we would</span>
+<a name="l01244"></a>01244       <span class="comment">// not have continued this far), but this use of the register</span>
+<a name="l01245"></a>01245       <span class="comment">// already matches the tied destination.  Leave it.</span>
+<a name="l01246"></a>01246       AllUsesCopied = <span class="keyword">false</span>;
+<a name="l01247"></a>01247       <span class="keywordflow">continue</span>;
+<a name="l01248"></a>01248     }
+<a name="l01249"></a>01249     LastCopiedReg = RegA;
+<a name="l01250"></a>01250 
+<a name="l01251"></a>01251     assert(<a class="code" href="classllvm_1_1TargetRegisterInfo.html#ae62c5ea35b71f9020caa94340bc78f37">TargetRegisterInfo::isVirtualRegister</a>(RegB) &&
+<a name="l01252"></a>01252            <span class="stringliteral">"cannot make instruction into two-address form"</span>);
+<a name="l01253"></a>01253 
+<a name="l01254"></a>01254 <span class="preprocessor">#ifndef NDEBUG</span>
+<a name="l01255"></a>01255 <span class="preprocessor"></span>    <span class="comment">// First, verify that we don't have a use of "a" in the instruction</span>
+<a name="l01256"></a>01256     <span class="comment">// (a = b + a for example) because our transformation will not</span>
+<a name="l01257"></a>01257     <span class="comment">// work. This should never occur because we are in SSA form.</span>
+<a name="l01258"></a>01258     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>(); ++i)
+<a name="l01259"></a>01259       assert(i == DstIdx ||
+<a name="l01260"></a>01260              !MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i).<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() ||
+<a name="l01261"></a>01261              MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>() != RegA);
+<a name="l01262"></a>01262 <span class="preprocessor">#endif</span>
+<a name="l01263"></a>01263 <span class="preprocessor"></span>
+<a name="l01264"></a>01264     <span class="comment">// Emit a copy.</span>
+<a name="l01265"></a>01265     <a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(*MI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>(), <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, MI-><a class="code" href="classllvm_1_1MachineInstr.html#a5ca4af2a257043145ad650eafb4402f9">getDebugLoc</a>(),
+<a name="l01266"></a>01266             TII-><a class="code" href="classllvm_1_1DebugLoc.html#af63b4743ef1d470496c32ff88f4caa66">get</a>(<a class="code" href="namespacellvm_1_1TargetOpcode.html#aa2b3629c9319f86eee5a2c0e8c75ebfaafbad4e5ed543b4325115bdb3aff2f8d9">TargetOpcode::COPY</a>), RegA).addReg(RegB);
+<a name="l01267"></a>01267 
+<a name="l01268"></a>01268     <span class="comment">// Update DistanceMap.</span>
+<a name="l01269"></a>01269     <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> PrevMI = <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>;
+<a name="l01270"></a>01270     --PrevMI;
+<a name="l01271"></a>01271     DistanceMap.insert(std::make_pair(PrevMI, Dist));
+<a name="l01272"></a>01272     DistanceMap[<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>] = ++Dist;
+<a name="l01273"></a>01273 
+<a name="l01274"></a>01274     <a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> CopyIdx;
+<a name="l01275"></a>01275     <span class="keywordflow">if</span> (Indexes)
+<a name="l01276"></a>01276       CopyIdx = Indexes->insertMachineInstrInMaps(PrevMI).<a class="code" href="classllvm_1_1SlotIndex.html#a04196b5e551d63690ede0244f80f2503">getRegSlot</a>();
+<a name="l01277"></a>01277 
+<a name="l01278"></a>01278     <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">"\t\tprepend:\t"</span> << *PrevMI);
+<a name="l01279"></a>01279 
+<a name="l01280"></a>01280     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(SrcIdx);
+<a name="l01281"></a>01281     assert(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>() == RegB && MO.<a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>() &&
+<a name="l01282"></a>01282            <span class="stringliteral">"inconsistent operand info for 2-reg pass"</span>);
+<a name="l01283"></a>01283     <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>()) {
+<a name="l01284"></a>01284       MO.<a class="code" href="classllvm_1_1MachineOperand.html#a8a82683fccdef8a5ef772ef03277aee7">setIsKill</a>(<span class="keyword">false</span>);
+<a name="l01285"></a>01285       RemovedKillFlag = <span class="keyword">true</span>;
+<a name="l01286"></a>01286     }
+<a name="l01287"></a>01287 
+<a name="l01288"></a>01288     <span class="comment">// Make sure regA is a legal regclass for the SrcIdx operand.</span>
+<a name="l01289"></a>01289     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1TargetRegisterInfo.html#ae62c5ea35b71f9020caa94340bc78f37">TargetRegisterInfo::isVirtualRegister</a>(RegA) &&
+<a name="l01290"></a>01290         <a class="code" href="classllvm_1_1TargetRegisterInfo.html#ae62c5ea35b71f9020caa94340bc78f37">TargetRegisterInfo::isVirtualRegister</a>(RegB))
+<a name="l01291"></a>01291       MRI->constrainRegClass(RegA, MRI->getRegClass(RegB));
+<a name="l01292"></a>01292 
+<a name="l01293"></a>01293     MO.<a class="code" href="classllvm_1_1MachineOperand.html#a624a062754a09d3787614d8627096705">setReg</a>(RegA);
+<a name="l01294"></a>01294 
+<a name="l01295"></a>01295     <span class="comment">// Propagate SrcRegMap.</span>
+<a name="l01296"></a>01296     SrcRegMap[RegA] = RegB;
+<a name="l01297"></a>01297   }
+<a name="l01298"></a>01298 
+<a name="l01299"></a>01299 
+<a name="l01300"></a>01300   <span class="keywordflow">if</span> (AllUsesCopied) {
+<a name="l01301"></a>01301     <span class="keywordflow">if</span> (!IsEarlyClobber) {
+<a name="l01302"></a>01302       <span class="comment">// Replace other (un-tied) uses of regB with LastCopiedReg.</span>
+<a name="l01303"></a>01303       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>(); i != e; ++i) {
+<a name="l01304"></a>01304         <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i);
+<a name="l01305"></a>01305         <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>() == RegB && MO.<a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>()) {
+<a name="l01306"></a>01306           <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>()) {
+<a name="l01307"></a>01307             MO.<a class="code" href="classllvm_1_1MachineOperand.html#a8a82683fccdef8a5ef772ef03277aee7">setIsKill</a>(<span class="keyword">false</span>);
+<a name="l01308"></a>01308             RemovedKillFlag = <span class="keyword">true</span>;
+<a name="l01309"></a>01309           }
+<a name="l01310"></a>01310           MO.<a class="code" href="classllvm_1_1MachineOperand.html#a624a062754a09d3787614d8627096705">setReg</a>(LastCopiedReg);
+<a name="l01311"></a>01311         }
+<a name="l01312"></a>01312       }
+<a name="l01313"></a>01313     }
+<a name="l01314"></a>01314 
+<a name="l01315"></a>01315     <span class="comment">// Update live variables for regB.</span>
+<a name="l01316"></a>01316     <span class="keywordflow">if</span> (RemovedKillFlag && LV && LV->getVarInfo(RegB).removeKill(MI)) {
+<a name="l01317"></a>01317       <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> PrevMI = <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>;
+<a name="l01318"></a>01318       --PrevMI;
+<a name="l01319"></a>01319       LV->addVirtualRegisterKilled(RegB, PrevMI);
+<a name="l01320"></a>01320     }
+<a name="l01321"></a>01321 
+<a name="l01322"></a>01322   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (RemovedKillFlag) {
+<a name="l01323"></a>01323     <span class="comment">// Some tied uses of regB matched their destination registers, so</span>
+<a name="l01324"></a>01324     <span class="comment">// regB is still used in this instruction, but a kill flag was</span>
+<a name="l01325"></a>01325     <span class="comment">// removed from a different tied use of regB, so now we need to add</span>
+<a name="l01326"></a>01326     <span class="comment">// a kill flag to one of the remaining uses of regB.</span>
+<a name="l01327"></a>01327     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>(); i != e; ++i) {
+<a name="l01328"></a>01328       <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i);
+<a name="l01329"></a>01329       <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>() == RegB && MO.<a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>()) {
+<a name="l01330"></a>01330         MO.<a class="code" href="classllvm_1_1MachineOperand.html#a8a82683fccdef8a5ef772ef03277aee7">setIsKill</a>(<span class="keyword">true</span>);
+<a name="l01331"></a>01331         <span class="keywordflow">break</span>;
+<a name="l01332"></a>01332       }
+<a name="l01333"></a>01333     }
+<a name="l01334"></a>01334   }
+<a name="l01335"></a>01335 }
+<a name="l01336"></a>01336 <span class="comment"></span>
+<a name="l01337"></a>01337 <span class="comment">/// runOnMachineFunction - Reduce two-address instructions to two operands.</span>
+<a name="l01338"></a>01338 <span class="comment">///</span>
+<a name="l01339"></a>01339 <span class="comment"></span><span class="keywordtype">bool</span> TwoAddressInstructionPass::runOnMachineFunction(<a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a> &<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6f">Func</a>) {
+<a name="l01340"></a>01340   MF = &<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6f">Func</a>;
+<a name="l01341"></a>01341   <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetMachine.html">TargetMachine</a> &TM = MF-><a class="code" href="classllvm_1_1TargetMachine.html#a73cf44ee4d4ae263d8251a0b0daa06a6">getTarget</a>();
+<a name="l01342"></a>01342   MRI = &MF->getRegInfo();
+<a name="l01343"></a>01343   TII = TM.<a class="code" href="classllvm_1_1TargetMachine.html#ac13d0f6f2c915757013b101ef6e8afbc">getInstrInfo</a>();
+<a name="l01344"></a>01344   TRI = TM.<a class="code" href="classllvm_1_1TargetMachine.html#a70b47eca6a99c87b81f4c1b1455dc090">getRegisterInfo</a>();
+<a name="l01345"></a>01345   InstrItins = TM.<a class="code" href="classllvm_1_1TargetMachine.html#a69d6715752707a83ec4cbecff60b5359">getInstrItineraryData</a>();
+<a name="l01346"></a>01346   Indexes = getAnalysisIfAvailable<SlotIndexes>();
+<a name="l01347"></a>01347   LV = getAnalysisIfAvailable<LiveVariables>();
+<a name="l01348"></a>01348   LIS = getAnalysisIfAvailable<LiveIntervals>();
+<a name="l01349"></a>01349   AA = &getAnalysis<AliasAnalysis>();
+<a name="l01350"></a>01350   OptLevel = TM.<a class="code" href="classllvm_1_1TargetMachine.html#af567540acbc5289da300dcbc3b176c1c">getOptLevel</a>();
+<a name="l01351"></a>01351 
+<a name="l01352"></a>01352   <span class="keywordtype">bool</span> MadeChange = <span class="keyword">false</span>;
+<a name="l01353"></a>01353 
+<a name="l01354"></a>01354   <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">"********** REWRITING TWO-ADDR INSTRS **********\n"</span>);
+<a name="l01355"></a>01355   <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">"********** Function: "</span>
+<a name="l01356"></a>01356         << MF->getName() << <span class="charliteral">'\n'</span>);
+<a name="l01357"></a>01357 
+<a name="l01358"></a>01358   <span class="comment">// This pass takes the function out of SSA form.</span>
+<a name="l01359"></a>01359   MRI->leaveSSA();
+<a name="l01360"></a>01360 
+<a name="l01361"></a>01361   TiedOperandMap TiedOperands;
+<a name="l01362"></a>01362   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineFunction.html#a340712de3e78fec11c338735cab17df7">MachineFunction::iterator</a> MBBI = MF->begin(), MBBE = MF->end();
+<a name="l01363"></a>01363        MBBI != MBBE; ++MBBI) {
+<a name="l01364"></a>01364     MBB = MBBI;
+<a name="l01365"></a>01365     <span class="keywordtype">unsigned</span> Dist = 0;
+<a name="l01366"></a>01366     DistanceMap.clear();
+<a name="l01367"></a>01367     SrcRegMap.clear();
+<a name="l01368"></a>01368     DstRegMap.clear();
+<a name="l01369"></a>01369     Processed.clear();
+<a name="l01370"></a>01370     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> mi = MBB->begin(), me = MBB->end();
+<a name="l01371"></a>01371          mi != me; ) {
+<a name="l01372"></a>01372       <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> nmi = <a class="code" href="namespacellvm.html#aa1704159f75e6eacd595962ea6d93ffe">llvm::next</a>(mi);
+<a name="l01373"></a>01373       <span class="keywordflow">if</span> (mi->isDebugValue()) {
+<a name="l01374"></a>01374         mi = nmi;
+<a name="l01375"></a>01375         <span class="keywordflow">continue</span>;
+<a name="l01376"></a>01376       }
+<a name="l01377"></a>01377 
+<a name="l01378"></a>01378       <span class="comment">// Remember REG_SEQUENCE instructions, we'll deal with them later.</span>
+<a name="l01379"></a>01379       <span class="keywordflow">if</span> (mi->isRegSequence())
+<a name="l01380"></a>01380         RegSequences.push_back(&*mi);
+<a name="l01381"></a>01381 
+<a name="l01382"></a>01382       DistanceMap.insert(std::make_pair(mi, ++Dist));
+<a name="l01383"></a>01383 
+<a name="l01384"></a>01384       processCopy(&*mi);
+<a name="l01385"></a>01385 
+<a name="l01386"></a>01386       <span class="comment">// First scan through all the tied register uses in this instruction</span>
+<a name="l01387"></a>01387       <span class="comment">// and record a list of pairs of tied operands for each register.</span>
+<a name="l01388"></a>01388       <span class="keywordflow">if</span> (!collectTiedOperands(mi, TiedOperands)) {
+<a name="l01389"></a>01389         mi = nmi;
+<a name="l01390"></a>01390         <span class="keywordflow">continue</span>;
+<a name="l01391"></a>01391       }
+<a name="l01392"></a>01392 
+<a name="l01393"></a>01393       ++NumTwoAddressInstrs;
+<a name="l01394"></a>01394       MadeChange = <span class="keyword">true</span>;
+<a name="l01395"></a>01395       <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="charliteral">'\t'</span> << *mi);
+<a name="l01396"></a>01396 
+<a name="l01397"></a>01397       <span class="comment">// If the instruction has a single pair of tied operands, try some</span>
+<a name="l01398"></a>01398       <span class="comment">// transformations that may either eliminate the tied operands or</span>
+<a name="l01399"></a>01399       <span class="comment">// improve the opportunities for coalescing away the register copy.</span>
+<a name="l01400"></a>01400       <span class="keywordflow">if</span> (TiedOperands.size() == 1) {
+<a name="l01401"></a>01401         <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<std::pair<unsigned, unsigned></a>, 4> &TiedPairs
+<a name="l01402"></a>01402           = TiedOperands.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a8a045d250952c0867382a9840ee18fdf">begin</a>()->second;
+<a name="l01403"></a>01403         <span class="keywordflow">if</span> (TiedPairs.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() == 1) {
+<a name="l01404"></a>01404           <span class="keywordtype">unsigned</span> SrcIdx = TiedPairs[0].first;
+<a name="l01405"></a>01405           <span class="keywordtype">unsigned</span> DstIdx = TiedPairs[0].second;
+<a name="l01406"></a>01406           <span class="keywordtype">unsigned</span> SrcReg = mi->getOperand(SrcIdx).getReg();
+<a name="l01407"></a>01407           <span class="keywordtype">unsigned</span> DstReg = mi->getOperand(DstIdx).getReg();
+<a name="l01408"></a>01408           <span class="keywordflow">if</span> (SrcReg != DstReg &&
+<a name="l01409"></a>01409               tryInstructionTransform(mi, nmi, SrcIdx, DstIdx, Dist)) {
+<a name="l01410"></a>01410             <span class="comment">// The tied operands have been eliminated or shifted further down the</span>
+<a name="l01411"></a>01411             <span class="comment">// block to ease elimination. Continue processing with 'nmi'.</span>
+<a name="l01412"></a>01412             TiedOperands.clear();
+<a name="l01413"></a>01413             mi = nmi;
+<a name="l01414"></a>01414             <span class="keywordflow">continue</span>;
+<a name="l01415"></a>01415           }
+<a name="l01416"></a>01416         }
+<a name="l01417"></a>01417       }
+<a name="l01418"></a>01418 
+<a name="l01419"></a>01419       <span class="comment">// Now iterate over the information collected above.</span>
+<a name="l01420"></a>01420       <span class="keywordflow">for</span> (TiedOperandMap::iterator OI = TiedOperands.begin(),
+<a name="l01421"></a>01421              OE = TiedOperands.end(); OI != OE; ++OI) {
+<a name="l01422"></a>01422         processTiedPairs(mi, OI->second, Dist);
+<a name="l01423"></a>01423         <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">"\t\trewrite to:\t"</span> << *mi);
+<a name="l01424"></a>01424       }
+<a name="l01425"></a>01425 
+<a name="l01426"></a>01426       <span class="comment">// Rewrite INSERT_SUBREG as COPY now that we no longer need SSA form.</span>
+<a name="l01427"></a>01427       <span class="keywordflow">if</span> (mi->isInsertSubreg()) {
+<a name="l01428"></a>01428         <span class="comment">// From %reg = INSERT_SUBREG %reg, %subreg, subidx</span>
+<a name="l01429"></a>01429         <span class="comment">// To   %reg:subidx = COPY %subreg</span>
+<a name="l01430"></a>01430         <span class="keywordtype">unsigned</span> SubIdx = mi->getOperand(3).getImm();
+<a name="l01431"></a>01431         mi->RemoveOperand(3);
+<a name="l01432"></a>01432         assert(mi->getOperand(0).getSubReg() == 0 && <span class="stringliteral">"Unexpected subreg idx"</span>);
+<a name="l01433"></a>01433         mi->getOperand(0).setSubReg(SubIdx);
+<a name="l01434"></a>01434         mi->getOperand(0).setIsUndef(mi->getOperand(1).isUndef());
+<a name="l01435"></a>01435         mi->RemoveOperand(1);
+<a name="l01436"></a>01436         mi->setDesc(TII->get(<a class="code" href="namespacellvm_1_1TargetOpcode.html#aa2b3629c9319f86eee5a2c0e8c75ebfaafbad4e5ed543b4325115bdb3aff2f8d9">TargetOpcode::COPY</a>));
+<a name="l01437"></a>01437         <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">"\t\tconvert to:\t"</span> << *mi);
+<a name="l01438"></a>01438       }
+<a name="l01439"></a>01439 
+<a name="l01440"></a>01440       <span class="comment">// Clear TiedOperands here instead of at the top of the loop</span>
+<a name="l01441"></a>01441       <span class="comment">// since most instructions do not have tied operands.</span>
+<a name="l01442"></a>01442       TiedOperands.clear();
+<a name="l01443"></a>01443       mi = nmi;
+<a name="l01444"></a>01444     }
+<a name="l01445"></a>01445   }
+<a name="l01446"></a>01446 
+<a name="l01447"></a>01447   <span class="comment">// Eliminate REG_SEQUENCE instructions. Their whole purpose was to preseve</span>
+<a name="l01448"></a>01448   <span class="comment">// SSA form. It's now safe to de-SSA.</span>
+<a name="l01449"></a>01449   MadeChange |= eliminateRegSequences();
+<a name="l01450"></a>01450 
+<a name="l01451"></a>01451   <span class="keywordflow">return</span> MadeChange;
+<a name="l01452"></a>01452 }
+<a name="l01453"></a>01453 
+<a name="l01454"></a><a class="code" href="TwoAddressInstructionPass_8cpp.html#a25ef7439454970271b634dcf68218227">01454</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="TwoAddressInstructionPass_8cpp.html#a25ef7439454970271b634dcf68218227">UpdateRegSequenceSrcs</a>(<span class="keywordtype">unsigned</span> SrcReg,
+<a name="l01455"></a>01455                                   <span class="keywordtype">unsigned</span> DstReg, <span class="keywordtype">unsigned</span> SubIdx,
+<a name="l01456"></a>01456                                   <a class="code" href="classllvm_1_1MachineRegisterInfo.html">MachineRegisterInfo</a> *MRI,
+<a name="l01457"></a>01457                                   <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a> &TRI) {
+<a name="l01458"></a>01458   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineRegisterInfo_1_1defusechain__iterator.html">MachineRegisterInfo::reg_iterator</a> RI = MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#adfeaea4e5c82dea47ff9aa1f8367104c">reg_begin</a>(SrcReg),
+<a name="l01459"></a>01459          RE = MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#a1d8edf72c1d3e14e4d2396b98e07ad72">reg_end</a>(); RI != RE; ) {
+<a name="l01460"></a>01460     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = RI.getOperand();
+<a name="l01461"></a>01461     ++RI;
+<a name="l01462"></a>01462     MO.<a class="code" href="classllvm_1_1MachineOperand.html#ac018c6b3d4fbe5d28d6e88798b386f65">substVirtReg</a>(DstReg, SubIdx, TRI);
+<a name="l01463"></a>01463   }
+<a name="l01464"></a>01464 }
+<a name="l01465"></a>01465 
+<a name="l01466"></a>01466 <span class="comment">// Find the first def of Reg, assuming they are all in the same basic block.</span>
+<a name="l01467"></a><a class="code" href="TwoAddressInstructionPass_8cpp.html#a5e451f39e7769e97e07235856ddf589d">01467</a> <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="TwoAddressInstructionPass_8cpp.html#a5e451f39e7769e97e07235856ddf589d">findFirstDef</a>(<span class="keywordtype">unsigned</span> Reg, <a class="code" href="classllvm_1_1MachineRegisterInfo.html">MachineRegisterInfo</a> *MRI) {
+<a name="l01468"></a>01468   <a class="code" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet<MachineInstr*, 8></a> Defs;
+<a name="l01469"></a>01469   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *First = 0;
+<a name="l01470"></a>01470   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineRegisterInfo_1_1defusechain__iterator.html">MachineRegisterInfo::def_iterator</a> RI = MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#a66efe5c5561969cd4506c421daaf9bf3">def_begin</a>(Reg);
+<a name="l01471"></a>01471        <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI = RI.skipInstruction(); Defs.<a class="code" href="classllvm_1_1SmallPtrSet.html#a9b6dd0fc7a648a939e571246045b673e">insert</a>(MI))
+<a name="l01472"></a>01472     First = MI;
+<a name="l01473"></a>01473   <span class="keywordflow">if</span> (!First)
+<a name="l01474"></a>01474     <span class="keywordflow">return</span> 0;
+<a name="l01475"></a>01475 
+<a name="l01476"></a>01476   <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *MBB = First-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>();
+<a name="l01477"></a>01477   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a> = First, B = First;
+<a name="l01478"></a>01478   <span class="keywordtype">bool</span> Moving;
+<a name="l01479"></a>01479   <span class="keywordflow">do</span> {
+<a name="l01480"></a>01480     Moving = <span class="keyword">false</span>;
+<a name="l01481"></a>01481     <span class="keywordflow">if</span> (A != MBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab2d91e7bec944efcbc39d8e30644f111">begin</a>()) {
+<a name="l01482"></a>01482       Moving = <span class="keyword">true</span>;
+<a name="l01483"></a>01483       --<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>;
+<a name="l01484"></a>01484       <span class="keywordflow">if</span> (Defs.<a class="code" href="classllvm_1_1SmallPtrSet.html#a2ce650c1d4a48661b501206d04b6ab04">erase</a>(A)) First = A;
+<a name="l01485"></a>01485     }
+<a name="l01486"></a>01486     <span class="keywordflow">if</span> (B != MBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>()) {
+<a name="l01487"></a>01487       Defs.<a class="code" href="classllvm_1_1SmallPtrSet.html#a2ce650c1d4a48661b501206d04b6ab04">erase</a>(B);
+<a name="l01488"></a>01488       ++B;
+<a name="l01489"></a>01489       Moving = <span class="keyword">true</span>;
+<a name="l01490"></a>01490     }
+<a name="l01491"></a>01491   } <span class="keywordflow">while</span> (Moving && !Defs.<a class="code" href="classllvm_1_1SmallPtrSetImpl.html#a956ca8bb95132e0131135d47a2d1f255">empty</a>());
+<a name="l01492"></a>01492   assert(Defs.<a class="code" href="classllvm_1_1SmallPtrSetImpl.html#a956ca8bb95132e0131135d47a2d1f255">empty</a>() && <span class="stringliteral">"Instructions outside basic block!"</span>);
+<a name="l01493"></a>01493   <span class="keywordflow">return</span> First;
+<a name="l01494"></a>01494 }
+<a name="l01495"></a>01495 
+<a name="l01496"></a><a class="code" href="TwoAddressInstructionPass_8cpp.html#a3bfa5b7fa80ae39ee1e4730b7f01c3f0">01496</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="TwoAddressInstructionPass_8cpp.html#a3bfa5b7fa80ae39ee1e4730b7f01c3f0">HasOtherRegSequenceUses</a>(<span class="keywordtype">unsigned</span> Reg, <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *RegSeq,
+<a name="l01497"></a>01497                                     <a class="code" href="classllvm_1_1MachineRegisterInfo.html">MachineRegisterInfo</a> *MRI) {
+<a name="l01498"></a>01498   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineRegisterInfo_1_1defusechain__iterator.html">MachineRegisterInfo::use_iterator</a> UI = MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#a2f9819f230628888e3e68de292ecd602">use_begin</a>(Reg),
+<a name="l01499"></a>01499          UE = MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#ac8347c6938efe4d9a4426b92ef57851e">use_end</a>(); UI != UE; ++UI) {
+<a name="l01500"></a>01500     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *UseMI = &*UI;
+<a name="l01501"></a>01501     <span class="keywordflow">if</span> (UseMI != RegSeq && UseMI-><a class="code" href="classllvm_1_1MachineInstr.html#afd3c04beba982703c5a4df17ca3180cc">isRegSequence</a>())
+<a name="l01502"></a>01502       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01503"></a>01503   }
+<a name="l01504"></a>01504   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01505"></a>01505 }
+<a name="l01506"></a>01506 <span class="comment"></span>
+<a name="l01507"></a>01507 <span class="comment">/// eliminateRegSequences - Eliminate REG_SEQUENCE instructions as part</span>
+<a name="l01508"></a>01508 <span class="comment">/// of the de-ssa process. This replaces sources of REG_SEQUENCE as</span>
+<a name="l01509"></a>01509 <span class="comment">/// sub-register references of the register defined by REG_SEQUENCE. e.g.</span>
+<a name="l01510"></a>01510 <span class="comment">///</span>
+<a name="l01511"></a>01511 <span class="comment">/// %reg1029<def>, %reg1030<def> = VLD1q16 %reg1024<kill>, ...</span>
+<a name="l01512"></a>01512 <span class="comment">/// %reg1031<def> = REG_SEQUENCE %reg1029<kill>, 5, %reg1030<kill>, 6</span>
+<a name="l01513"></a>01513 <span class="comment">/// =></span>
+<a name="l01514"></a>01514 <span class="comment">/// %reg1031:5<def>, %reg1031:6<def> = VLD1q16 %reg1024<kill>, ...</span>
+<a name="l01515"></a>01515 <span class="comment"></span><span class="keywordtype">bool</span> TwoAddressInstructionPass::eliminateRegSequences() {
+<a name="l01516"></a>01516   <span class="keywordflow">if</span> (RegSequences.empty())
+<a name="l01517"></a>01517     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01518"></a>01518 
+<a name="l01519"></a>01519   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = RegSequences.size(); i != e; ++i) {
+<a name="l01520"></a>01520     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI = RegSequences[i];
+<a name="l01521"></a>01521     <span class="keywordtype">unsigned</span> DstReg = 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="l01522"></a>01522     <span class="keywordflow">if</span> (MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(0).<a class="code" href="classllvm_1_1MachineOperand.html#aca37b55b20f45c96067bac1d4f1dcb7f">getSubReg</a>() ||
+<a name="l01523"></a>01523         <a class="code" href="classllvm_1_1TargetRegisterInfo.html#a055858b14215864ed367a8db6c19d6f6">TargetRegisterInfo::isPhysicalRegister</a>(DstReg) ||
+<a name="l01524"></a>01524         !(MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>() & 1)) {
+<a name="l01525"></a>01525       <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">"Illegal REG_SEQUENCE instruction:"</span> << *MI);
+<a name="l01526"></a>01526       <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(0);
+<a name="l01527"></a>01527     }
+<a name="l01528"></a>01528 
+<a name="l01529"></a>01529     <span class="keywordtype">bool</span> IsImpDef = <span class="keyword">true</span>;
+<a name="l01530"></a>01530     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<unsigned, 4></a> RealSrcs;
+<a name="l01531"></a>01531     <a class="code" href="classllvm_1_1SmallSet.html">SmallSet<unsigned, 4></a> Seen;
+<a name="l01532"></a>01532     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1, e = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>(); i < e; i += 2) {
+<a name="l01533"></a>01533       <span class="comment">// Nothing needs to be inserted for <undef> operands.</span>
+<a name="l01534"></a>01534       <span class="keywordflow">if</span> (MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i).<a class="code" href="classllvm_1_1MachineOperand.html#afbf853e3a0de950e9116ffb9929ceebd">isUndef</a>()) {
+<a name="l01535"></a>01535         MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i).<a class="code" href="classllvm_1_1MachineOperand.html#a624a062754a09d3787614d8627096705">setReg</a>(0);
+<a name="l01536"></a>01536         <span class="keywordflow">continue</span>;
+<a name="l01537"></a>01537       }
+<a name="l01538"></a>01538       <span class="keywordtype">unsigned</span> SrcReg = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l01539"></a>01539       <span class="keywordtype">unsigned</span> SrcSubIdx = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i).<a class="code" href="classllvm_1_1MachineOperand.html#aca37b55b20f45c96067bac1d4f1dcb7f">getSubReg</a>();
+<a name="l01540"></a>01540       <span class="keywordtype">unsigned</span> SubIdx = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i+1).<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l01541"></a>01541       <span class="comment">// DefMI of NULL means the value does not have a vreg in this block</span>
+<a name="l01542"></a>01542       <span class="comment">// i.e., its a physical register or a subreg.</span>
+<a name="l01543"></a>01543       <span class="comment">// In either case we force a copy to be generated.</span>
+<a name="l01544"></a>01544       <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *DefMI = NULL;
+<a name="l01545"></a>01545       <span class="keywordflow">if</span> (!MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i).<a class="code" href="classllvm_1_1MachineOperand.html#aca37b55b20f45c96067bac1d4f1dcb7f">getSubReg</a>() &&
+<a name="l01546"></a>01546           !<a class="code" href="classllvm_1_1TargetRegisterInfo.html#a055858b14215864ed367a8db6c19d6f6">TargetRegisterInfo::isPhysicalRegister</a>(SrcReg)) {
+<a name="l01547"></a>01547         DefMI = MRI->getUniqueVRegDef(SrcReg);
+<a name="l01548"></a>01548       }
+<a name="l01549"></a>01549 
+<a name="l01550"></a>01550       <span class="keywordflow">if</span> (DefMI && DefMI-><a class="code" href="classllvm_1_1MachineInstr.html#a0e15c0325463fc62bd16ccd9ec2b9ec5">isImplicitDef</a>()) {
+<a name="l01551"></a>01551         DefMI-><a class="code" href="classllvm_1_1MachineInstr.html#ac2421adbb9996e1b15f03a8abb6c70a8">eraseFromParent</a>();
+<a name="l01552"></a>01552         <span class="keywordflow">continue</span>;
+<a name="l01553"></a>01553       }
+<a name="l01554"></a>01554       IsImpDef = <span class="keyword">false</span>;
+<a name="l01555"></a>01555 
+<a name="l01556"></a>01556       <span class="comment">// Remember COPY sources. These might be candidate for coalescing.</span>
+<a name="l01557"></a>01557       <span class="keywordflow">if</span> (DefMI && DefMI-><a class="code" href="classllvm_1_1MachineInstr.html#ae0ac5973cd95f76e3365e67aaad69de6">isCopy</a>() && DefMI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(1).<a class="code" href="classllvm_1_1MachineOperand.html#aca37b55b20f45c96067bac1d4f1dcb7f">getSubReg</a>())
+<a name="l01558"></a>01558         RealSrcs.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(DefMI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(1).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>());
+<a name="l01559"></a>01559 
+<a name="l01560"></a>01560       <span class="keywordtype">bool</span> isKill = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i).<a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>();
+<a name="l01561"></a>01561       <span class="keywordflow">if</span> (!DefMI || !Seen.<a class="code" href="classllvm_1_1SmallSet.html#a8d8348060ccdeeba13fb8bc651dfbf82" title="insert - Insert an element into the set if it isn't already there.">insert</a>(SrcReg) ||
+<a name="l01562"></a>01562           MI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>() != DefMI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>() ||
+<a name="l01563"></a>01563           !isKill || <a class="code" href="TwoAddressInstructionPass_8cpp.html#a3bfa5b7fa80ae39ee1e4730b7f01c3f0">HasOtherRegSequenceUses</a>(SrcReg, MI, MRI) ||
+<a name="l01564"></a>01564           !TRI->getMatchingSuperRegClass(MRI->getRegClass(DstReg),
+<a name="l01565"></a>01565                                          MRI->getRegClass(SrcReg), SubIdx)) {
+<a name="l01566"></a>01566         <span class="comment">// REG_SEQUENCE cannot have duplicated operands, add a copy.</span>
+<a name="l01567"></a>01567         <span class="comment">// Also add an copy if the source is live-in the block. We don't want</span>
+<a name="l01568"></a>01568         <span class="comment">// to end up with a partial-redef of a livein, e.g.</span>
+<a name="l01569"></a>01569         <span class="comment">// BB0:</span>
+<a name="l01570"></a>01570         <span class="comment">// reg1051:10<def> =</span>
+<a name="l01571"></a>01571         <span class="comment">// ...</span>
+<a name="l01572"></a>01572         <span class="comment">// BB1:</span>
+<a name="l01573"></a>01573         <span class="comment">// ... = reg1051:10</span>
+<a name="l01574"></a>01574         <span class="comment">// BB2:</span>
+<a name="l01575"></a>01575         <span class="comment">// reg1051:9<def> =</span>
+<a name="l01576"></a>01576         <span class="comment">// LiveIntervalAnalysis won't like it.</span>
+<a name="l01577"></a>01577         <span class="comment">//</span>
+<a name="l01578"></a>01578         <span class="comment">// If the REG_SEQUENCE doesn't kill its source, keeping live variables</span>
+<a name="l01579"></a>01579         <span class="comment">// correctly up to date becomes very difficult. Insert a copy.</span>
+<a name="l01580"></a>01580 
+<a name="l01581"></a>01581         <span class="comment">// Defer any kill flag to the last operand using SrcReg. Otherwise, we</span>
+<a name="l01582"></a>01582         <span class="comment">// might insert a COPY that uses SrcReg after is was killed.</span>
+<a name="l01583"></a>01583         <span class="keywordflow">if</span> (isKill)
+<a name="l01584"></a>01584           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = i + 2; j < e; j += 2)
+<a name="l01585"></a>01585             <span class="keywordflow">if</span> (MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(j).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>() == SrcReg) {
+<a name="l01586"></a>01586               MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(j).<a class="code" href="classllvm_1_1MachineOperand.html#a8a82683fccdef8a5ef772ef03277aee7">setIsKill</a>();
+<a name="l01587"></a>01587               isKill = <span class="keyword">false</span>;
+<a name="l01588"></a>01588               <span class="keywordflow">break</span>;
+<a name="l01589"></a>01589             }
+<a name="l01590"></a>01590 
+<a name="l01591"></a>01591         <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> InsertLoc = <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>;
+<a name="l01592"></a>01592         <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *CopyMI = <a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(*MI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>(), InsertLoc,
+<a name="l01593"></a>01593                                 MI-><a class="code" href="classllvm_1_1MachineInstr.html#a5ca4af2a257043145ad650eafb4402f9">getDebugLoc</a>(), TII-><a class="code" href="classllvm_1_1DebugLoc.html#af63b4743ef1d470496c32ff88f4caa66">get</a>(<a class="code" href="namespacellvm_1_1TargetOpcode.html#aa2b3629c9319f86eee5a2c0e8c75ebfaafbad4e5ed543b4325115bdb3aff2f8d9">TargetOpcode::COPY</a>))
+<a name="l01594"></a>01594             .addReg(DstReg, <a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa72c17e2ff2d5af62a30e56ac152aa8d5">RegState::Define</a>, SubIdx)
+<a name="l01595"></a>01595             .<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a5125cce72b214df09ca8f93dcbbf4c3a">addReg</a>(SrcReg, <a class="code" href="namespacellvm.html#aac57d4100e9a9d02522fbd724568397d">getKillRegState</a>(isKill), SrcSubIdx);
+<a name="l01596"></a>01596         MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i).<a class="code" href="classllvm_1_1MachineOperand.html#a624a062754a09d3787614d8627096705">setReg</a>(0);
+<a name="l01597"></a>01597         <span class="keywordflow">if</span> (LV && isKill && !<a class="code" href="classllvm_1_1TargetRegisterInfo.html#a055858b14215864ed367a8db6c19d6f6">TargetRegisterInfo::isPhysicalRegister</a>(SrcReg))
+<a name="l01598"></a>01598           LV->replaceKillInstruction(SrcReg, MI, CopyMI);
+<a name="l01599"></a>01599         <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">"Inserted: "</span> << *CopyMI);
+<a name="l01600"></a>01600       }
+<a name="l01601"></a>01601     }
+<a name="l01602"></a>01602 
+<a name="l01603"></a>01603     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1, e = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>(); i < e; i += 2) {
+<a name="l01604"></a>01604       <span class="keywordtype">unsigned</span> SrcReg = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i).<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>();
+<a name="l01605"></a>01605       <span class="keywordflow">if</span> (!SrcReg) <span class="keywordflow">continue</span>;
+<a name="l01606"></a>01606       <span class="keywordtype">unsigned</span> SubIdx = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i+1).<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l01607"></a>01607       <a class="code" href="TwoAddressInstructionPass_8cpp.html#a25ef7439454970271b634dcf68218227">UpdateRegSequenceSrcs</a>(SrcReg, DstReg, SubIdx, MRI, *TRI);
+<a name="l01608"></a>01608     }
+<a name="l01609"></a>01609 
+<a name="l01610"></a>01610     <span class="comment">// Set <def,undef> flags on the first DstReg def in the basic block.</span>
+<a name="l01611"></a>01611     <span class="comment">// It marks the beginning of the live range. All the other defs are</span>
+<a name="l01612"></a>01612     <span class="comment">// read-modify-write.</span>
+<a name="l01613"></a>01613     <span class="keywordflow">if</span> (<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="TwoAddressInstructionPass_8cpp.html#a5e451f39e7769e97e07235856ddf589d">findFirstDef</a>(DstReg, MRI)) {
+<a name="l01614"></a>01614       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = <a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5aceb138f68fe183995736614928e3394a">Def</a>->getNumOperands(); i != e; ++i) {
+<a name="l01615"></a>01615         <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = <a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5aceb138f68fe183995736614928e3394a">Def</a>->getOperand(i);
+<a name="l01616"></a>01616         <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && MO.<a class="code" href="classllvm_1_1MachineOperand.html#a8de7d5cf38939044471c6ee60a01a3df">isDef</a>() && MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>() == DstReg)
+<a name="l01617"></a>01617           MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab979122f21b7fa46d3d2d9b21983068b">setIsUndef</a>();
+<a name="l01618"></a>01618       }
+<a name="l01619"></a>01619       <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">"First def: "</span> << *<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5aceb138f68fe183995736614928e3394a">Def</a>);
+<a name="l01620"></a>01620     }
+<a name="l01621"></a>01621 
+<a name="l01622"></a>01622     <span class="keywordflow">if</span> (IsImpDef) {
+<a name="l01623"></a>01623       <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">"Turned: "</span> << *MI << <span class="stringliteral">" into an IMPLICIT_DEF"</span>);
+<a name="l01624"></a>01624       MI-><a class="code" href="classllvm_1_1MachineInstr.html#a1ecb35298bc4d1fe03997959e1210c87">setDesc</a>(TII->get(<a class="code" href="namespacellvm_1_1TargetOpcode.html#aa2b3629c9319f86eee5a2c0e8c75ebfaa5a91c23866687baf221ce86ff6fde01f" title="IMPLICIT_DEF - This is the MachineInstr-level equivalent of undef.">TargetOpcode::IMPLICIT_DEF</a>));
+<a name="l01625"></a>01625       <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>() - 1, ee = 0; j > ee; --j)
+<a name="l01626"></a>01626         MI-><a class="code" href="classllvm_1_1MachineInstr.html#a001a88e1d71c2e11ccd57efe75da4af3">RemoveOperand</a>(j);
+<a name="l01627"></a>01627     } <span class="keywordflow">else</span> {
+<a name="l01628"></a>01628       <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">"Eliminated: "</span> << *MI);
+<a name="l01629"></a>01629       MI-><a class="code" href="classllvm_1_1MachineInstr.html#ac2421adbb9996e1b15f03a8abb6c70a8">eraseFromParent</a>();
+<a name="l01630"></a>01630     }
+<a name="l01631"></a>01631   }
+<a name="l01632"></a>01632 
+<a name="l01633"></a>01633   RegSequences.clear();
+<a name="l01634"></a>01634   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01635"></a>01635 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:00 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/TypeBasedAliasAnalysis_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/TypeBasedAliasAnalysis_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/TypeBasedAliasAnalysis_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/TypeBasedAliasAnalysis_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,355 @@
+<!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: TypeBasedAliasAnalysis.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_59dd179f705c75b7b821c61754f4942c.html">Analysis</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">TypeBasedAliasAnalysis.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="TypeBasedAliasAnalysis_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- TypeBasedAliasAnalysis.cpp - Type-Based Alias Analysis -------------===//</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 the TypeBasedAliasAnalysis pass, which implements</span>
+<a name="l00011"></a>00011 <span class="comment">// metadata-based TBAA.</span>
+<a name="l00012"></a>00012 <span class="comment">//</span>
+<a name="l00013"></a>00013 <span class="comment">// In LLVM IR, memory does not have types, so LLVM's own type system is not</span>
+<a name="l00014"></a>00014 <span class="comment">// suitable for doing TBAA. Instead, metadata is added to the IR to describe</span>
+<a name="l00015"></a>00015 <span class="comment">// a type system of a higher level language. This can be used to implement</span>
+<a name="l00016"></a>00016 <span class="comment">// typical C/C++ TBAA, but it can also be used to implement custom alias</span>
+<a name="l00017"></a>00017 <span class="comment">// analysis behavior for other languages.</span>
+<a name="l00018"></a>00018 <span class="comment">//</span>
+<a name="l00019"></a>00019 <span class="comment">// The current metadata format is very simple. TBAA MDNodes have up to</span>
+<a name="l00020"></a>00020 <span class="comment">// three fields, e.g.:</span>
+<a name="l00021"></a>00021 <span class="comment">//   !0 = metadata !{ metadata !"an example type tree" }</span>
+<a name="l00022"></a>00022 <span class="comment">//   !1 = metadata !{ metadata !"int", metadata !0 }</span>
+<a name="l00023"></a>00023 <span class="comment">//   !2 = metadata !{ metadata !"float", metadata !0 }</span>
+<a name="l00024"></a>00024 <span class="comment">//   !3 = metadata !{ metadata !"const float", metadata !2, i64 1 }</span>
+<a name="l00025"></a>00025 <span class="comment">//</span>
+<a name="l00026"></a>00026 <span class="comment">// The first field is an identity field. It can be any value, usually</span>
+<a name="l00027"></a>00027 <span class="comment">// an MDString, which uniquely identifies the type. The most important</span>
+<a name="l00028"></a>00028 <span class="comment">// name in the tree is the name of the root node. Two trees with</span>
+<a name="l00029"></a>00029 <span class="comment">// different root node names are entirely disjoint, even if they</span>
+<a name="l00030"></a>00030 <span class="comment">// have leaves with common names.</span>
+<a name="l00031"></a>00031 <span class="comment">//</span>
+<a name="l00032"></a>00032 <span class="comment">// The second field identifies the type's parent node in the tree, or</span>
+<a name="l00033"></a>00033 <span class="comment">// is null or omitted for a root node. A type is considered to alias</span>
+<a name="l00034"></a>00034 <span class="comment">// all of its descendants and all of its ancestors in the tree. Also,</span>
+<a name="l00035"></a>00035 <span class="comment">// a type is considered to alias all types in other trees, so that</span>
+<a name="l00036"></a>00036 <span class="comment">// bitcode produced from multiple front-ends is handled conservatively.</span>
+<a name="l00037"></a>00037 <span class="comment">//</span>
+<a name="l00038"></a>00038 <span class="comment">// If the third field is present, it's an integer which if equal to 1</span>
+<a name="l00039"></a>00039 <span class="comment">// indicates that the type is "constant" (meaning pointsToConstantMemory</span>
+<a name="l00040"></a>00040 <span class="comment">// should return true; see</span>
+<a name="l00041"></a>00041 <span class="comment">// http://llvm.org/docs/AliasAnalysis.html#OtherItfs).</span>
+<a name="l00042"></a>00042 <span class="comment">//</span>
+<a name="l00043"></a>00043 <span class="comment">// TODO: The current metadata format doesn't support struct</span>
+<a name="l00044"></a>00044 <span class="comment">// fields. For example:</span>
+<a name="l00045"></a>00045 <span class="comment">//   struct X {</span>
+<a name="l00046"></a>00046 <span class="comment">//     double d;</span>
+<a name="l00047"></a>00047 <span class="comment">//     int i;</span>
+<a name="l00048"></a>00048 <span class="comment">//   };</span>
+<a name="l00049"></a>00049 <span class="comment">//   void foo(struct X *x, struct X *y, double *p) {</span>
+<a name="l00050"></a>00050 <span class="comment">//     *x = *y;</span>
+<a name="l00051"></a>00051 <span class="comment">//     *p = 0.0;</span>
+<a name="l00052"></a>00052 <span class="comment">//   }</span>
+<a name="l00053"></a>00053 <span class="comment">// Struct X has a double member, so the store to *x can alias the store to *p.</span>
+<a name="l00054"></a>00054 <span class="comment">// Currently it's not possible to precisely describe all the things struct X</span>
+<a name="l00055"></a>00055 <span class="comment">// aliases, so struct assignments must use conservative TBAA nodes. There's</span>
+<a name="l00056"></a>00056 <span class="comment">// no scheme for attaching metadata to @llvm.memcpy yet either.</span>
+<a name="l00057"></a>00057 <span class="comment">//</span>
+<a name="l00058"></a>00058 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060 <span class="preprocessor">#include "<a class="code" href="AliasAnalysis_8h.html">llvm/Analysis/AliasAnalysis.h</a>"</span>
+<a name="l00061"></a>00061 <span class="preprocessor">#include "<a class="code" href="Analysis_2Passes_8h.html">llvm/Analysis/Passes.h</a>"</span>
+<a name="l00062"></a>00062 <span class="preprocessor">#include "<a class="code" href="Constants_8h.html">llvm/Constants.h</a>"</span>
+<a name="l00063"></a>00063 <span class="preprocessor">#include "<a class="code" href="LLVMContext_8h.html">llvm/LLVMContext.h</a>"</span>
+<a name="l00064"></a>00064 <span class="preprocessor">#include "<a class="code" href="Module_8h.html">llvm/Module.h</a>"</span>
+<a name="l00065"></a>00065 <span class="preprocessor">#include "<a class="code" href="Metadata_8h.html">llvm/Metadata.h</a>"</span>
+<a name="l00066"></a>00066 <span class="preprocessor">#include "<a class="code" href="Pass_8h.html">llvm/Pass.h</a>"</span>
+<a name="l00067"></a>00067 <span class="preprocessor">#include "<a class="code" href="CommandLine_8h.html">llvm/Support/CommandLine.h</a>"</span>
+<a name="l00068"></a>00068 <span class="keyword">using namespace </span>llvm;
+<a name="l00069"></a>00069 
+<a name="l00070"></a>00070 <span class="comment">// A handy option for disabling TBAA functionality. The same effect can also be</span>
+<a name="l00071"></a>00071 <span class="comment">// achieved by stripping the !tbaa tags from IR, but this option is sometimes</span>
+<a name="l00072"></a>00072 <span class="comment">// more convenient.</span>
+<a name="l00073"></a>00073 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a> <a class="code" href="TypeBasedAliasAnalysis_8cpp.html#ac9cc1aa1eaf0273f5628439f8f9026df">EnableTBAA</a>(<span class="stringliteral">"enable-tbaa"</span>, <a class="code" href="namespacellvm_1_1cl.html#a10a041239ae1870cfcc064bfaa79fb65">cl::init</a>(<span class="keyword">true</span>));
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075 <span class="keyword">namespace </span>{<span class="comment"></span>
+<a name="l00076"></a>00076 <span class="comment">  /// TBAANode - This is a simple wrapper around an MDNode which provides a</span>
+<a name="l00077"></a>00077 <span class="comment">  /// higher-level interface by hiding the details of how alias analysis</span>
+<a name="l00078"></a>00078 <span class="comment">  /// information is encoded in its operands.</span>
+<a name="l00079"></a>00079 <span class="comment"></span>  <span class="keyword">class </span>TBAANode {
+<a name="l00080"></a>00080     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *Node;
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082   <span class="keyword">public</span>:
+<a name="l00083"></a>00083     TBAANode() : Node(0) {}
+<a name="l00084"></a>00084     <span class="keyword">explicit</span> TBAANode(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *N) : Node(N) {}
+<a name="l00085"></a>00085 <span class="comment"></span>
+<a name="l00086"></a>00086 <span class="comment">    /// getNode - Get the MDNode for this TBAANode.</span>
+<a name="l00087"></a>00087 <span class="comment"></span>    <span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *getNode()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Node; }
+<a name="l00088"></a>00088 <span class="comment"></span>
+<a name="l00089"></a>00089 <span class="comment">    /// getParent - Get this TBAANode's Alias tree parent.</span>
+<a name="l00090"></a>00090 <span class="comment"></span>    TBAANode <a class="code" href="BasicAliasAnalysis_8cpp.html#a2675de1d8479c7b00387979714da43f7">getParent</a>()<span class="keyword"> const </span>{
+<a name="l00091"></a>00091       <span class="keywordflow">if</span> (Node->getNumOperands() < 2)
+<a name="l00092"></a>00092         <span class="keywordflow">return</span> TBAANode();
+<a name="l00093"></a>00093       <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *P = dyn_cast_or_null<MDNode>(Node->getOperand(1));
+<a name="l00094"></a>00094       <span class="keywordflow">if</span> (!P)
+<a name="l00095"></a>00095         <span class="keywordflow">return</span> TBAANode();
+<a name="l00096"></a>00096       <span class="comment">// Ok, this node has a valid parent. Return it.</span>
+<a name="l00097"></a>00097       <span class="keywordflow">return</span> TBAANode(P);
+<a name="l00098"></a>00098     }
+<a name="l00099"></a>00099 <span class="comment"></span>
+<a name="l00100"></a>00100 <span class="comment">    /// TypeIsImmutable - Test if this TBAANode represents a type for objects</span>
+<a name="l00101"></a>00101 <span class="comment">    /// which are not modified (by any means) in the context where this</span>
+<a name="l00102"></a>00102 <span class="comment">    /// AliasAnalysis is relevant.</span>
+<a name="l00103"></a>00103 <span class="comment"></span>    <span class="keywordtype">bool</span> TypeIsImmutable()<span class="keyword"> const </span>{
+<a name="l00104"></a>00104       <span class="keywordflow">if</span> (Node->getNumOperands() < 3)
+<a name="l00105"></a>00105         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00106"></a>00106       <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *CI = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a>>(Node->getOperand(2));
+<a name="l00107"></a>00107       <span class="keywordflow">if</span> (!CI)
+<a name="l00108"></a>00108         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00109"></a>00109       <span class="keywordflow">return</span> CI-><a class="code" href="classllvm_1_1ConstantInt.html#af8dde13a97efce293a7b04daf1e208fb" title="Return the constant's value.">getValue</a>()[0];
+<a name="l00110"></a>00110     }
+<a name="l00111"></a>00111   };
+<a name="l00112"></a>00112 }
+<a name="l00113"></a>00113 
+<a name="l00114"></a>00114 <span class="keyword">namespace </span>{<span class="comment"></span>
+<a name="l00115"></a>00115 <span class="comment">  /// TypeBasedAliasAnalysis - This is a simple alias analysis</span>
+<a name="l00116"></a>00116 <span class="comment">  /// implementation that uses TypeBased to answer queries.</span>
+<a name="l00117"></a>00117 <span class="comment"></span>  <span class="keyword">class </span>TypeBasedAliasAnalysis : <span class="keyword">public</span> <a class="code" href="classllvm_1_1ImmutablePass.html">ImmutablePass</a>,
+<a name="l00118"></a>00118                                  <span class="keyword">public</span> <a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a> {
+<a name="l00119"></a>00119   <span class="keyword">public</span>:
+<a name="l00120"></a>00120     <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>; <span class="comment">// Class identification, replacement for typeinfo</span>
+<a name="l00121"></a>00121     TypeBasedAliasAnalysis() : <a class="code" href="classllvm_1_1ImmutablePass.html">ImmutablePass</a>(<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>) {
+<a name="l00122"></a>00122       <a class="code" href="namespacellvm.html#a7f9f839587d3ddc195c46b97c41bd973">initializeTypeBasedAliasAnalysisPass</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00123"></a>00123     }
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125     <span class="keyword">virtual</span> <span class="keywordtype">void</span> initializePass() {
+<a name="l00126"></a>00126       InitializeAliasAnalysis(<span class="keyword">this</span>);
+<a name="l00127"></a>00127     }
+<a name="l00128"></a>00128 <span class="comment"></span>
+<a name="l00129"></a>00129 <span class="comment">    /// getAdjustedAnalysisPointer - This method is used when a pass implements</span>
+<a name="l00130"></a>00130 <span class="comment">    /// an analysis interface through multiple inheritance.  If needed, it</span>
+<a name="l00131"></a>00131 <span class="comment">    /// should override this to adjust the this pointer as needed for the</span>
+<a name="l00132"></a>00132 <span class="comment">    /// specified pass info.</span>
+<a name="l00133"></a>00133 <span class="comment"></span>    <span class="keyword">virtual</span> <span class="keywordtype">void</span> *getAdjustedAnalysisPointer(<span class="keyword">const</span> <span class="keywordtype">void</span> *PI) {
+<a name="l00134"></a>00134       <span class="keywordflow">if</span> (PI == &<a class="code" href="classllvm_1_1AliasAnalysis.html#ae46bcf64f0fc3010424d4582dbb44391">AliasAnalysis::ID</a>)
+<a name="l00135"></a>00135         <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>*)<span class="keyword">this</span>;
+<a name="l00136"></a>00136       <span class="keywordflow">return</span> <span class="keyword">this</span>;
+<a name="l00137"></a>00137     }
+<a name="l00138"></a>00138 
+<a name="l00139"></a>00139     <span class="keywordtype">bool</span> Aliases(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>, <span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *B) <span class="keyword">const</span>;
+<a name="l00140"></a>00140 
+<a name="l00141"></a>00141   <span class="keyword">private</span>:
+<a name="l00142"></a>00142     <span class="keyword">virtual</span> <span class="keywordtype">void</span> getAnalysisUsage(<a class="code" href="classllvm_1_1AnalysisUsage.html">AnalysisUsage</a> &AU) <span class="keyword">const</span>;
+<a name="l00143"></a>00143     <span class="keyword">virtual</span> AliasResult alias(<span class="keyword">const</span> Location &LocA, <span class="keyword">const</span> Location &LocB);
+<a name="l00144"></a>00144     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> pointsToConstantMemory(<span class="keyword">const</span> Location &Loc, <span class="keywordtype">bool</span> OrLocal);
+<a name="l00145"></a>00145     <span class="keyword">virtual</span> ModRefBehavior getModRefBehavior(<a class="code" href="classllvm_1_1ImmutableCallSite.html" title="ImmutableCallSite - establish a view to a call site for examination.">ImmutableCallSite</a> CS);
+<a name="l00146"></a>00146     <span class="keyword">virtual</span> ModRefBehavior getModRefBehavior(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Function.html">Function</a> *<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>);
+<a name="l00147"></a>00147     <span class="keyword">virtual</span> ModRefResult getModRefInfo(<a class="code" href="classllvm_1_1ImmutableCallSite.html" title="ImmutableCallSite - establish a view to a call site for examination.">ImmutableCallSite</a> CS,
+<a name="l00148"></a>00148                                        <span class="keyword">const</span> Location &Loc);
+<a name="l00149"></a>00149     <span class="keyword">virtual</span> ModRefResult getModRefInfo(<a class="code" href="classllvm_1_1ImmutableCallSite.html" title="ImmutableCallSite - establish a view to a call site for examination.">ImmutableCallSite</a> CS1,
+<a name="l00150"></a>00150                                        <a class="code" href="classllvm_1_1ImmutableCallSite.html" title="ImmutableCallSite - establish a view to a call site for examination.">ImmutableCallSite</a> CS2);
+<a name="l00151"></a>00151   };
+<a name="l00152"></a>00152 }  <span class="comment">// End of anonymous namespace</span>
+<a name="l00153"></a>00153 
+<a name="l00154"></a>00154 <span class="comment">// Register this pass...</span>
+<a name="l00155"></a>00155 <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">TypeBasedAliasAnalysis::ID</a> = 0;
+<a name="l00156"></a><a class="code" href="TypeBasedAliasAnalysis_8cpp.html#a982c9d171140ae8b360d60230aeb0bbc">00156</a> <a class="code" href="PassSupport_8h.html#a91d4e96589cb3c191602f1cca617eda0">INITIALIZE_AG_PASS</a>(TypeBasedAliasAnalysis, <a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>, <span class="stringliteral">"tbaa"</span>,
+<a name="l00157"></a>00157                    <span class="stringliteral">"Type-Based Alias Analysis"</span>, <span class="keyword">false</span>, <span class="keyword">true</span>, <span class="keyword">false</span>)
+<a name="l00158"></a>00158 
+<a name="l00159"></a>00159 <a class="code" href="classllvm_1_1ImmutablePass.html">ImmutablePass</a> *llvm::<a class="code" href="namespacellvm.html#a022323238327ae5edae5d42398e0325f">createTypeBasedAliasAnalysisPass</a>() {
+<a name="l00160"></a>00160   <span class="keywordflow">return</span> <span class="keyword">new</span> TypeBasedAliasAnalysis();
+<a name="l00161"></a>00161 }
+<a name="l00162"></a>00162 
+<a name="l00163"></a>00163 <span class="keywordtype">void</span>
+<a name="l00164"></a>00164 TypeBasedAliasAnalysis::getAnalysisUsage(<a class="code" href="classllvm_1_1AnalysisUsage.html">AnalysisUsage</a> &AU)<span class="keyword"> const </span>{
+<a name="l00165"></a>00165   AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#af22b06a6a4f9df80454071685a0d6a02">setPreservesAll</a>();
+<a name="l00166"></a>00166   <a class="code" href="classllvm_1_1AliasAnalysis.html#aa2f12c9f80c62624255ac0f4893f496e">AliasAnalysis::getAnalysisUsage</a>(AU);
+<a name="l00167"></a>00167 }
+<a name="l00168"></a>00168 <span class="comment"></span>
+<a name="l00169"></a>00169 <span class="comment">/// Aliases - Test whether the type represented by A may alias the</span>
+<a name="l00170"></a>00170 <span class="comment">/// type represented by B.</span>
+<a name="l00171"></a>00171 <span class="comment"></span><span class="keywordtype">bool</span>
+<a name="l00172"></a>00172 TypeBasedAliasAnalysis::Aliases(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>,
+<a name="l00173"></a>00173                                 <span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *B)<span class="keyword"> const </span>{
+<a name="l00174"></a>00174   <span class="comment">// Keep track of the root node for A and B.</span>
+<a name="l00175"></a>00175   TBAANode RootA, RootB;
+<a name="l00176"></a>00176 
+<a name="l00177"></a>00177   <span class="comment">// Climb the tree from A to see if we reach B.</span>
+<a name="l00178"></a>00178   <span class="keywordflow">for</span> (TBAANode T(A); ; ) {
+<a name="l00179"></a>00179     <span class="keywordflow">if</span> (T.getNode() == B)
+<a name="l00180"></a>00180       <span class="comment">// B is an ancestor of A.</span>
+<a name="l00181"></a>00181       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00182"></a>00182 
+<a name="l00183"></a>00183     RootA = T;
+<a name="l00184"></a>00184     T = T.getParent();
+<a name="l00185"></a>00185     <span class="keywordflow">if</span> (!T.getNode())
+<a name="l00186"></a>00186       <span class="keywordflow">break</span>;
+<a name="l00187"></a>00187   }
+<a name="l00188"></a>00188 
+<a name="l00189"></a>00189   <span class="comment">// Climb the tree from B to see if we reach A.</span>
+<a name="l00190"></a>00190   <span class="keywordflow">for</span> (TBAANode T(B); ; ) {
+<a name="l00191"></a>00191     <span class="keywordflow">if</span> (T.getNode() == <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>)
+<a name="l00192"></a>00192       <span class="comment">// A is an ancestor of B.</span>
+<a name="l00193"></a>00193       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00194"></a>00194 
+<a name="l00195"></a>00195     RootB = T;
+<a name="l00196"></a>00196     T = T.getParent();
+<a name="l00197"></a>00197     <span class="keywordflow">if</span> (!T.getNode())
+<a name="l00198"></a>00198       <span class="keywordflow">break</span>;
+<a name="l00199"></a>00199   }
+<a name="l00200"></a>00200 
+<a name="l00201"></a>00201   <span class="comment">// Neither node is an ancestor of the other.</span>
+<a name="l00202"></a>00202   
+<a name="l00203"></a>00203   <span class="comment">// If they have different roots, they're part of different potentially</span>
+<a name="l00204"></a>00204   <span class="comment">// unrelated type systems, so we must be conservative.</span>
+<a name="l00205"></a>00205   <span class="keywordflow">if</span> (RootA.getNode() != RootB.getNode())
+<a name="l00206"></a>00206     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208   <span class="comment">// If they have the same root, then we've proved there's no alias.</span>
+<a name="l00209"></a>00209   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211 
+<a name="l00212"></a>00212 <a class="code" href="classllvm_1_1AliasAnalysis.html#aa96743b70089c7a0ef5d935f34173826">AliasAnalysis::AliasResult</a>
+<a name="l00213"></a>00213 TypeBasedAliasAnalysis::alias(<span class="keyword">const</span> Location &LocA,
+<a name="l00214"></a>00214                               <span class="keyword">const</span> Location &LocB) {
+<a name="l00215"></a>00215   <span class="keywordflow">if</span> (!<a class="code" href="TypeBasedAliasAnalysis_8cpp.html#ac9cc1aa1eaf0273f5628439f8f9026df">EnableTBAA</a>)
+<a name="l00216"></a>00216     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#a59949d72986d3e9fdb7e7c9272c02f0f">AliasAnalysis::alias</a>(LocA, LocB);
+<a name="l00217"></a>00217 
+<a name="l00218"></a>00218   <span class="comment">// Get the attached MDNodes. If either value lacks a tbaa MDNode, we must</span>
+<a name="l00219"></a>00219   <span class="comment">// be conservative.</span>
+<a name="l00220"></a>00220   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *AM = LocA.TBAATag;
+<a name="l00221"></a>00221   <span class="keywordflow">if</span> (!AM) <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#a59949d72986d3e9fdb7e7c9272c02f0f">AliasAnalysis::alias</a>(LocA, LocB);
+<a name="l00222"></a>00222   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *BM = LocB.TBAATag;
+<a name="l00223"></a>00223   <span class="keywordflow">if</span> (!BM) <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#a59949d72986d3e9fdb7e7c9272c02f0f">AliasAnalysis::alias</a>(LocA, LocB);
+<a name="l00224"></a>00224 
+<a name="l00225"></a>00225   <span class="comment">// If they may alias, chain to the next AliasAnalysis.</span>
+<a name="l00226"></a>00226   <span class="keywordflow">if</span> (Aliases(AM, BM))
+<a name="l00227"></a>00227     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#a59949d72986d3e9fdb7e7c9272c02f0f">AliasAnalysis::alias</a>(LocA, LocB);
+<a name="l00228"></a>00228 
+<a name="l00229"></a>00229   <span class="comment">// Otherwise return a definitive result.</span>
+<a name="l00230"></a>00230   <span class="keywordflow">return</span> NoAlias;
+<a name="l00231"></a>00231 }
+<a name="l00232"></a>00232 
+<a name="l00233"></a>00233 <span class="keywordtype">bool</span> TypeBasedAliasAnalysis::pointsToConstantMemory(<span class="keyword">const</span> Location &Loc,
+<a name="l00234"></a>00234                                                     <span class="keywordtype">bool</span> OrLocal) {
+<a name="l00235"></a>00235   <span class="keywordflow">if</span> (!<a class="code" href="TypeBasedAliasAnalysis_8cpp.html#ac9cc1aa1eaf0273f5628439f8f9026df">EnableTBAA</a>)
+<a name="l00236"></a>00236     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#abf9502ffcd1aeddfe91345685e3c78a9">AliasAnalysis::pointsToConstantMemory</a>(Loc, OrLocal);
+<a name="l00237"></a>00237 
+<a name="l00238"></a>00238   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *M = Loc.TBAATag;
+<a name="l00239"></a>00239   <span class="keywordflow">if</span> (!M) <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#abf9502ffcd1aeddfe91345685e3c78a9">AliasAnalysis::pointsToConstantMemory</a>(Loc, OrLocal);
+<a name="l00240"></a>00240 
+<a name="l00241"></a>00241   <span class="comment">// If this is an "immutable" type, we can assume the pointer is pointing</span>
+<a name="l00242"></a>00242   <span class="comment">// to constant memory.</span>
+<a name="l00243"></a>00243   <span class="keywordflow">if</span> (TBAANode(M).TypeIsImmutable())
+<a name="l00244"></a>00244     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00245"></a>00245 
+<a name="l00246"></a>00246   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#abf9502ffcd1aeddfe91345685e3c78a9">AliasAnalysis::pointsToConstantMemory</a>(Loc, OrLocal);
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248 
+<a name="l00249"></a>00249 <a class="code" href="classllvm_1_1AliasAnalysis.html#ae0276e687a2b2ddd7d0d549d98140f91">AliasAnalysis::ModRefBehavior</a>
+<a name="l00250"></a>00250 TypeBasedAliasAnalysis::getModRefBehavior(<a class="code" href="classllvm_1_1ImmutableCallSite.html" title="ImmutableCallSite - establish a view to a call site for examination.">ImmutableCallSite</a> CS) {
+<a name="l00251"></a>00251   <span class="keywordflow">if</span> (!<a class="code" href="TypeBasedAliasAnalysis_8cpp.html#ac9cc1aa1eaf0273f5628439f8f9026df">EnableTBAA</a>)
+<a name="l00252"></a>00252     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#a64eefe72b0df7de20f76983b398f72df" title="getModRefBehavior - Return the behavior when calling the given call site.">AliasAnalysis::getModRefBehavior</a>(CS);
+<a name="l00253"></a>00253 
+<a name="l00254"></a>00254   ModRefBehavior Min = UnknownModRefBehavior;
+<a name="l00255"></a>00255 
+<a name="l00256"></a>00256   <span class="comment">// If this is an "immutable" type, we can assume the call doesn't write</span>
+<a name="l00257"></a>00257   <span class="comment">// to memory.</span>
+<a name="l00258"></a>00258   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *M = CS.<a class="code" href="classllvm_1_1CallSiteBase.html#ae4c67f835911559821939fb23a2e7aff">getInstruction</a>()-><a class="code" href="classllvm_1_1Instruction.html#aafa29112cbe02e4adc9b36752c771991">getMetadata</a>(<a class="code" href="classllvm_1_1LLVMContext.html#a19d63434356844e2fd7116a9c0866ec9a66682b7e33233c8e51196bbf274726a2">LLVMContext::MD_tbaa</a>))
+<a name="l00259"></a>00259     <span class="keywordflow">if</span> (TBAANode(M).TypeIsImmutable())
+<a name="l00260"></a>00260       Min = OnlyReadsMemory;
+<a name="l00261"></a>00261 
+<a name="l00262"></a>00262   <span class="keywordflow">return</span> ModRefBehavior(<a class="code" href="classllvm_1_1AliasAnalysis.html#a64eefe72b0df7de20f76983b398f72df" title="getModRefBehavior - Return the behavior when calling the given call site.">AliasAnalysis::getModRefBehavior</a>(CS) & Min);
+<a name="l00263"></a>00263 }
+<a name="l00264"></a>00264 
+<a name="l00265"></a>00265 <a class="code" href="classllvm_1_1AliasAnalysis.html#ae0276e687a2b2ddd7d0d549d98140f91">AliasAnalysis::ModRefBehavior</a>
+<a name="l00266"></a>00266 TypeBasedAliasAnalysis::getModRefBehavior(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Function.html">Function</a> *<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>) {
+<a name="l00267"></a>00267   <span class="comment">// Functions don't have metadata. Just chain to the next implementation.</span>
+<a name="l00268"></a>00268   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#a64eefe72b0df7de20f76983b398f72df" title="getModRefBehavior - Return the behavior when calling the given call site.">AliasAnalysis::getModRefBehavior</a>(F);
+<a name="l00269"></a>00269 }
+<a name="l00270"></a>00270 
+<a name="l00271"></a>00271 <a class="code" href="classllvm_1_1AliasAnalysis.html#a83d29c51155787c607268c2659559460">AliasAnalysis::ModRefResult</a>
+<a name="l00272"></a>00272 TypeBasedAliasAnalysis::getModRefInfo(<a class="code" href="classllvm_1_1ImmutableCallSite.html" title="ImmutableCallSite - establish a view to a call site for examination.">ImmutableCallSite</a> CS,
+<a name="l00273"></a>00273                                       <span class="keyword">const</span> Location &Loc) {
+<a name="l00274"></a>00274   <span class="keywordflow">if</span> (!<a class="code" href="TypeBasedAliasAnalysis_8cpp.html#ac9cc1aa1eaf0273f5628439f8f9026df">EnableTBAA</a>)
+<a name="l00275"></a>00275     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#a3f09a65a9c9d7bfff6c6271976d1baba">AliasAnalysis::getModRefInfo</a>(CS, Loc);
+<a name="l00276"></a>00276 
+<a name="l00277"></a>00277   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *L = Loc.TBAATag)
+<a name="l00278"></a>00278     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *M =
+<a name="l00279"></a>00279           CS.<a class="code" href="classllvm_1_1CallSiteBase.html#ae4c67f835911559821939fb23a2e7aff">getInstruction</a>()-><a class="code" href="classllvm_1_1Instruction.html#aafa29112cbe02e4adc9b36752c771991">getMetadata</a>(<a class="code" href="classllvm_1_1LLVMContext.html#a19d63434356844e2fd7116a9c0866ec9a66682b7e33233c8e51196bbf274726a2">LLVMContext::MD_tbaa</a>))
+<a name="l00280"></a>00280       <span class="keywordflow">if</span> (!Aliases(L, M))
+<a name="l00281"></a>00281         <span class="keywordflow">return</span> NoModRef;
+<a name="l00282"></a>00282 
+<a name="l00283"></a>00283   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#a3f09a65a9c9d7bfff6c6271976d1baba">AliasAnalysis::getModRefInfo</a>(CS, Loc);
+<a name="l00284"></a>00284 }
+<a name="l00285"></a>00285 
+<a name="l00286"></a>00286 <a class="code" href="classllvm_1_1AliasAnalysis.html#a83d29c51155787c607268c2659559460">AliasAnalysis::ModRefResult</a>
+<a name="l00287"></a>00287 TypeBasedAliasAnalysis::getModRefInfo(<a class="code" href="classllvm_1_1ImmutableCallSite.html" title="ImmutableCallSite - establish a view to a call site for examination.">ImmutableCallSite</a> CS1,
+<a name="l00288"></a>00288                                       <a class="code" href="classllvm_1_1ImmutableCallSite.html" title="ImmutableCallSite - establish a view to a call site for examination.">ImmutableCallSite</a> CS2) {
+<a name="l00289"></a>00289   <span class="keywordflow">if</span> (!<a class="code" href="TypeBasedAliasAnalysis_8cpp.html#ac9cc1aa1eaf0273f5628439f8f9026df">EnableTBAA</a>)
+<a name="l00290"></a>00290     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#a3f09a65a9c9d7bfff6c6271976d1baba">AliasAnalysis::getModRefInfo</a>(CS1, CS2);
+<a name="l00291"></a>00291 
+<a name="l00292"></a>00292   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *M1 =
+<a name="l00293"></a>00293         CS1.<a class="code" href="classllvm_1_1CallSiteBase.html#ae4c67f835911559821939fb23a2e7aff">getInstruction</a>()-><a class="code" href="classllvm_1_1Instruction.html#aafa29112cbe02e4adc9b36752c771991">getMetadata</a>(<a class="code" href="classllvm_1_1LLVMContext.html#a19d63434356844e2fd7116a9c0866ec9a66682b7e33233c8e51196bbf274726a2">LLVMContext::MD_tbaa</a>))
+<a name="l00294"></a>00294     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *M2 =
+<a name="l00295"></a>00295           CS2.<a class="code" href="classllvm_1_1CallSiteBase.html#ae4c67f835911559821939fb23a2e7aff">getInstruction</a>()-><a class="code" href="classllvm_1_1Instruction.html#aafa29112cbe02e4adc9b36752c771991">getMetadata</a>(<a class="code" href="classllvm_1_1LLVMContext.html#a19d63434356844e2fd7116a9c0866ec9a66682b7e33233c8e51196bbf274726a2">LLVMContext::MD_tbaa</a>))
+<a name="l00296"></a>00296       <span class="keywordflow">if</span> (!Aliases(M1, M2))
+<a name="l00297"></a>00297         <span class="keywordflow">return</span> NoModRef;
+<a name="l00298"></a>00298 
+<a name="l00299"></a>00299   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AliasAnalysis.html#a3f09a65a9c9d7bfff6c6271976d1baba">AliasAnalysis::getModRefInfo</a>(CS1, CS2);
+<a name="l00300"></a>00300 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:05 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/TypeBuilder_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/TypeBuilder_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/TypeBuilder_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/TypeBuilder_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,174 @@
+<!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: TypeBuilder.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>
+    </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="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">TypeBuilder.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="DerivedTypes_8h_source.html">llvm/DerivedTypes.h</a>"</code><br/>
+<code>#include "<a class="el" href="LLVMContext_8h_source.html">llvm/LLVMContext.h</a>"</code><br/>
+<code>#include <limits.h></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for TypeBuilder.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="TypeBuilder_8h__incl.png" border="0" usemap="#TypeBuilder_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="TypeBuilder_8h__dep__incl.png" border="0" usemap="#TypeBuilder_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="TypeBuilder_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_1TypeBuilder.html">llvm::TypeBuilder< T, cross_compilable ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1types_1_1i.html">llvm::types::i< num_bits ></a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">i<N> corresponds to the LLVM <a class="el" href="classllvm_1_1IntegerType.html" title="Integer representation type.">IntegerType</a> with N bits.  <a href="classllvm_1_1types_1_1i.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1types_1_1ieee__float.html">llvm::types::ieee_float</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1types_1_1ieee__double.html">llvm::types::ieee_double</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1types_1_1x86__fp80.html">llvm::types::x86_fp80</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1types_1_1fp128.html">llvm::types::fp128</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1types_1_1ppc__fp128.html">llvm::types::ppc_fp128</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1types_1_1x86__mmx.html">llvm::types::x86_mmx</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01const_01T_00_01cross_01_4.html">llvm::TypeBuilder< const T, cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01volatile_01T_00_01cross_01_4.html">llvm::TypeBuilder< volatile T, cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01const_01volatile_01T_00_01cross_01_4.html">llvm::TypeBuilder< const volatile T, cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01T_01_5_00_01cross_01_4.html">llvm::TypeBuilder< T *, cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01T_01_6_00_01cross_01_4.html">llvm::TypeBuilder< T &, cross ></a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">There is no support for references.  <a href="classllvm_1_1TypeBuilder_3_01T_01_6_00_01cross_01_4.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01T[N]_00_01cross_01_4.html">llvm::TypeBuilder< T[N], cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01T[]_00_01cross_01_4.html">llvm::TypeBuilder< T[], cross ></a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">LLVM uses an array of length 0 to represent an unknown-length array.  <a href="classllvm_1_1TypeBuilder_3_01T[]_00_01cross_01_4.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01types_1_1i_3_01num__bits_01_4_00_01cross_01_4.html">llvm::TypeBuilder< types::i< num_bits >, cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01float_00_01false_01_4.html">llvm::TypeBuilder< float, false ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01float_00_01true_01_4.html">llvm::TypeBuilder< float, true ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01double_00_01false_01_4.html">llvm::TypeBuilder< double, false ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01double_00_01true_01_4.html">llvm::TypeBuilder< double, true ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01types_1_1ieee__float_00_01cross_01_4.html">llvm::TypeBuilder< types::ieee_float, cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01types_1_1ieee__double_00_01cross_01_4.html">llvm::TypeBuilder< types::ieee_double, cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01types_1_1x86__fp80_00_01cross_01_4.html">llvm::TypeBuilder< types::x86_fp80, cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01types_1_1fp128_00_01cross_01_4.html">llvm::TypeBuilder< types::fp128, cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01types_1_1ppc__fp128_00_01cross_01_4.html">llvm::TypeBuilder< types::ppc_fp128, cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01types_1_1x86__mmx_00_01cross_01_4.html">llvm::TypeBuilder< types::x86_mmx, cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01void_00_01cross_01_4.html">llvm::TypeBuilder< void, cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01void_01_5_00_01false_01_4.html">llvm::TypeBuilder< void *, false ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01const_01void_01_5_00_01false_01_4.html">llvm::TypeBuilder< const void *, false ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01volatile_01void_01_5_00_01false_01_4.html">llvm::TypeBuilder< volatile void *, false ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01const_01volatile_01void_01_5_00_01false_01_4.html">llvm::TypeBuilder< const volatile void *, false ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01R_07_08_00_01cross_01_4.html">llvm::TypeBuilder< R(), cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01R_07A1_08_00_01cross_01_4.html">llvm::TypeBuilder< R(A1), cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01R_07A1_00_01A2_08_00_01cross_01_4.html">llvm::TypeBuilder< R(A1, A2), cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01R_07A1_00_01A2_00_01A3_08_00_01cross_01_4.html">llvm::TypeBuilder< R(A1, A2, A3), cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01R_07A1_00_01A2_00_01A3_00_01A4_08_00_01cross_01_4.html">llvm::TypeBuilder< R(A1, A2, A3, A4), cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01R_07A1_00_01A2_00_01A3_00_01A4_00_01A5_08_00_01cross_01_4.html">llvm::TypeBuilder< R(A1, A2, A3, A4, A5), cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01R_07_8_8_8_08_00_01cross_01_4.html">llvm::TypeBuilder< R(...), cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01R_07A1_00_8_8_8_08_00_01cross_01_4.html">llvm::TypeBuilder< R(A1,...), cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01R_07A1_00_01A2_00_8_8_8_08_00_01cross_01_4.html">llvm::TypeBuilder< R(A1, A2,...), cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01R_07A1_00_01A2_00_01A3_00_8_8_8_08_00_01cross_01_4.html">llvm::TypeBuilder< R(A1, A2, A3,...), cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01R_07A1_00_01A2_00_01A3_00_01A4_00_8_8_8_08_00_01cross_01_4.html">llvm::TypeBuilder< R(A1, A2, A3, A4,...), cross ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1TypeBuilder_3_01R_07A1_00_01A2_00_01A3_00_01A4_00_01A5_00_8_8_8_08_00_01cross_01_4.html">llvm::TypeBuilder< R(A1, A2, A3, A4, A5,...), cross ></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_1types.html">llvm::types</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="TypeBuilder_8h.html#a7125d95a9dbf64f1ad1d93a40ca9c4b9">DEFINE_INTEGRAL_TYPEBUILDER</a>(T)</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="namespacellvm.html#a5f9fb532d2f8cf933464a6ebdcbe2d35">llvm::DEFINE_INTEGRAL_TYPEBUILDER</a> (<a class="el" href="classchar.html">char</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#aba6743d6992c8dbadcfc2aecb1b273e9">llvm::DEFINE_INTEGRAL_TYPEBUILDER</a> (signed <a class="el" href="classchar.html">char</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#abd3e317cdd7188438fd83a3f72ccaca0">llvm::DEFINE_INTEGRAL_TYPEBUILDER</a> (<a class="el" href="classunsigned.html">unsigned</a> <a class="el" href="classchar.html">char</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a3c1a8b7105be8c0f5bc7478a54b8153a">llvm::DEFINE_INTEGRAL_TYPEBUILDER</a> (short)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#aa9fd828bff25a8ccb69fe6612969129a">llvm::DEFINE_INTEGRAL_TYPEBUILDER</a> (int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#af6481b87764d2945bd36e6931ba82e71">llvm::DEFINE_INTEGRAL_TYPEBUILDER</a> (long)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a4e1d6948c9e755bd15e61e3b07dd2936">llvm::DEFINE_INTEGRAL_TYPEBUILDER</a> (<a class="el" href="classunsigned.html">unsigned</a> long long)</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a7125d95a9dbf64f1ad1d93a40ca9c4b9"></a><!-- doxytag: member="TypeBuilder.h::DEFINE_INTEGRAL_TYPEBUILDER" ref="a7125d95a9dbf64f1ad1d93a40ca9c4b9" args="(T)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEFINE_INTEGRAL_TYPEBUILDER</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">T</td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span><> <span class="keyword">class </span>TypeBuilder<T, <a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>> { \
+public: \
+  static IntegerType *<span class="keyword">get</span>(LLVMContext &Context) { \
+    return IntegerType::get(Context, <span class="keyword">sizeof</span>(T) * CHAR_BIT); \
+  } \
+}; \
+template<> <span class="keyword">class </span>TypeBuilder<T, <a class="code" href="BasicAliasAnalysis_8cpp.html#a80603f23207dd836075c078e6264204a">true</a>> { \
+  <span class="comment">/* We provide a definition here so users don't accidentally */</span> \
+  <span class="comment">/* define these types to work. */</span> \
+}
+</pre></div>
+<p>Definition at line <a class="el" href="TypeBuilder_8h_source.html#l00151">151</a> of file <a class="el" href="TypeBuilder_8h_source.html">TypeBuilder.h</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39: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/TypeBuilder_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/TypeBuilder_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/TypeBuilder_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/TypeBuilder_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,11 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="TypeBuilder.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="PathNumbering.cpp",height=0.2,width=0.4,color="black",URL="$PathNumbering_8cpp.html"];
+  Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="PathProfiling.cpp",height=0.2,width=0.4,color="black",URL="$PathProfiling_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/TypeFinder_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/TypeFinder_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/TypeFinder_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/TypeFinder_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,171 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="TypeFinder.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/TypeFinder.h",height=0.2,width=0.4,color="black",URL="$TypeFinder_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/ADT/DenseSet.h",height=0.2,width=0.4,color="black",URL="$DenseSet_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_8h.html"];
+  Node6 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="red",URL="$type__traits_8h.html"];
+  Node8 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/BasicBlock.h",height=0.2,width=0.4,color="black",URL="$BasicBlock_8h.html"];
+  Node19 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/Instruction.h",height=0.2,width=0.4,color="black",URL="$Instruction_8h.html"];
+  Node20 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/User.h",height=0.2,width=0.4,color="black",URL="$User_8h.html"];
+  Node21 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8h.html"];
+  Node22 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="red",URL="$StringRef_8h.html"];
+  Node23 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node22 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/Value.h",height=0.2,width=0.4,color="red",URL="$Value_8h.html"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/Support/Casting.h",height=0.2,width=0.4,color="black",URL="$Casting_8h.html"];
+  Node26 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/ADT/ilist_node.h",height=0.2,width=0.4,color="black",URL="$ilist__node_8h.html"];
+  Node20 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Support/DebugLoc.h",height=0.2,width=0.4,color="black",URL="$DebugLoc_8h.html"];
+  Node20 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Instruction.def",height=0.2,width=0.4,color="grey75"];
+  Node19 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/SymbolTableListTraits.h",height=0.2,width=0.4,color="black",URL="$SymbolTableListTraits_8h.html"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/ADT/ilist.h",height=0.2,width=0.4,color="black",URL="$ilist_8h.html"];
+  Node31 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="black",URL="$Twine_8h.html"];
+  Node32 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/DerivedTypes.h",height=0.2,width=0.4,color="black",URL="$DerivedTypes_8h.html"];
+  Node33 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Type.h",height=0.2,width=0.4,color="black",URL="$Type_8h.html"];
+  Node34 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/Function.h",height=0.2,width=0.4,color="black",URL="$Function_8h.html"];
+  Node35 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/GlobalValue.h",height=0.2,width=0.4,color="black",URL="$GlobalValue_8h.html"];
+  Node36 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/Constant.h",height=0.2,width=0.4,color="black",URL="$Constant_8h.html"];
+  Node37 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node35 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/Argument.h",height=0.2,width=0.4,color="black",URL="$Argument_8h.html"];
+  Node39 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/Attributes.h",height=0.2,width=0.4,color="red",URL="$Attributes_8h.html"];
+  Node40 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="black",URL="$ArrayRef_8h.html"];
+  Node41 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="black",URL="$SmallVector_8h.html"];
+  Node42 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node42 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="memory",height=0.2,width=0.4,color="grey75"];
+  Node41 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/Metadata.h",height=0.2,width=0.4,color="black",URL="$Metadata_8h.html"];
+  Node45 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/ADT/FoldingSet.h",height=0.2,width=0.4,color="black",URL="$FoldingSet_8h.html"];
+  Node46 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Module.h",height=0.2,width=0.4,color="black",URL="$Module_8h.html"];
+  Node47 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/GlobalVariable.h",height=0.2,width=0.4,color="red",URL="$GlobalVariable_8h.html"];
+  Node48 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/GlobalAlias.h",height=0.2,width=0.4,color="red",URL="$GlobalAlias_8h.html"];
+  Node49 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/ADT/OwningPtr.h",height=0.2,width=0.4,color="black",URL="$OwningPtr_8h.html"];
+  Node50 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

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

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

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Type_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Type_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Type_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Type_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,513 @@
+<!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: Type.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>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Type.h</div>  </div>
+</div>
+<div class="contents">
+<a href="Type_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/Type.h - Classes for handling data types -----------*- 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 declaration of the Type class.  For more "Type"</span>
+<a name="l00011"></a>00011 <span class="comment">// stuff, look in DerivedTypes.h.</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_TYPE_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_TYPE_H</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="Casting_8h.html">llvm/Support/Casting.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="DataTypes_8h.html">llvm/Support/DataTypes.h</a>"</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>llvm {
+<a name="l00022"></a>00022 
+<a name="l00023"></a>00023 <span class="keyword">class </span>PointerType;
+<a name="l00024"></a>00024 <span class="keyword">class </span>IntegerType;
+<a name="l00025"></a>00025 <span class="keyword">class </span>raw_ostream;
+<a name="l00026"></a>00026 <span class="keyword">class </span>Module;
+<a name="l00027"></a>00027 <span class="keyword">class </span>LLVMContext;
+<a name="l00028"></a>00028 <span class="keyword">class </span>LLVMContextImpl;
+<a name="l00029"></a>00029 <span class="keyword">class </span>StringRef;
+<a name="l00030"></a>00030 <span class="keyword">template</span><<span class="keyword">class</span> GraphType> <span class="keyword">struct </span>GraphTraits;
+<a name="l00031"></a>00031 <span class="comment"></span>
+<a name="l00032"></a>00032 <span class="comment">/// The instances of the Type class are immutable: once they are created,</span>
+<a name="l00033"></a>00033 <span class="comment">/// they are never changed.  Also note that only one instance of a particular</span>
+<a name="l00034"></a>00034 <span class="comment">/// type is ever created.  Thus seeing if two types are equal is a matter of</span>
+<a name="l00035"></a>00035 <span class="comment">/// doing a trivial pointer comparison. To enforce that no two equal instances</span>
+<a name="l00036"></a>00036 <span class="comment">/// are created, Type instances can only be created via static factory methods </span>
+<a name="l00037"></a>00037 <span class="comment">/// in class Type and in derived classes.  Once allocated, Types are never</span>
+<a name="l00038"></a>00038 <span class="comment">/// free'd.</span>
+<a name="l00039"></a>00039 <span class="comment">/// </span>
+<a name="l00040"></a><a class="code" href="classllvm_1_1Type.html">00040</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classllvm_1_1Type.html">Type</a> {
+<a name="l00041"></a>00041 <span class="keyword">public</span>:
+<a name="l00042"></a>00042   <span class="comment">//===--------------------------------------------------------------------===//</span><span class="comment"></span>
+<a name="l00043"></a>00043 <span class="comment">  /// Definitions of all of the base types for the Type system.  Based on this</span>
+<a name="l00044"></a>00044 <span class="comment">  /// value, you can cast to a class defined in DerivedTypes.h.</span>
+<a name="l00045"></a>00045 <span class="comment">  /// Note: If you add an element to this, you need to add an element to the</span>
+<a name="l00046"></a>00046 <span class="comment">  /// Type::getPrimitiveType function, or else things will break!</span>
+<a name="l00047"></a>00047 <span class="comment">  /// Also update LLVMTypeKind and LLVMGetTypeKind () in the C binding.</span>
+<a name="l00048"></a>00048 <span class="comment">  ///</span>
+<a name="l00049"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbda">00049</a> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbda">TypeID</a> {
+<a name="l00050"></a>00050     <span class="comment">// PrimitiveTypes - make sure LastPrimitiveTyID stays up to date.</span>
+<a name="l00051"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa567ac2c7944f770cfb2c2cffc94b3520">00051</a>     <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa567ac2c7944f770cfb2c2cffc94b3520" title="0: type with no size">VoidTyID</a> = 0,    <span class="comment">///<  0: type with no size</span>
+<a name="l00052"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa301c3a4cc2bfd399628cfd473f383ff9">00052</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa301c3a4cc2bfd399628cfd473f383ff9" title="1: 16-bit floating point type">HalfTyID</a>,        <span class="comment">///<  1: 16-bit floating point type</span>
+<a name="l00053"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa6a5dd38c5c337ac6ce6d5847b1ca7f15">00053</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa6a5dd38c5c337ac6ce6d5847b1ca7f15" title="2: 32-bit floating point type">FloatTyID</a>,       <span class="comment">///<  2: 32-bit floating point type</span>
+<a name="l00054"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaabc549945f13bb5d5f5b80c550d2b92f5">00054</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaabc549945f13bb5d5f5b80c550d2b92f5" title="3: 64-bit floating point type">DoubleTyID</a>,      <span class="comment">///<  3: 64-bit floating point type</span>
+<a name="l00055"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaabd37be4e521c37c8b5c07edbab59b8d7">00055</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaabd37be4e521c37c8b5c07edbab59b8d7" title="4: 80-bit floating point type (X87)">X86_FP80TyID</a>,    <span class="comment">///<  4: 80-bit floating point type (X87)</span>
+<a name="l00056"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaaf645dbe1647a41fce26595aa8cd8bdfc">00056</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaaf645dbe1647a41fce26595aa8cd8bdfc" title="5: 128-bit floating point type (112-bit mantissa)">FP128TyID</a>,       <span class="comment">///<  5: 128-bit floating point type (112-bit mantissa)</span>
+<a name="l00057"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaac1fd0acf788a4de492dc0e3f51088f48">00057</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaac1fd0acf788a4de492dc0e3f51088f48" title="6: 128-bit floating point type (two 64-bits, PowerPC)">PPC_FP128TyID</a>,   <span class="comment">///<  6: 128-bit floating point type (two 64-bits, PowerPC)</span>
+<a name="l00058"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa66db5616b8f6b2cfe991861905747783">00058</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa66db5616b8f6b2cfe991861905747783" title="7: Labels">LabelTyID</a>,       <span class="comment">///<  7: Labels</span>
+<a name="l00059"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaad3b3756c598c8acc2d002f5f9a2c1d04">00059</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaad3b3756c598c8acc2d002f5f9a2c1d04" title="8: Metadata">MetadataTyID</a>,    <span class="comment">///<  8: Metadata</span>
+<a name="l00060"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa03c8b7efa18059d752b525aceeadf1b9">00060</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa03c8b7efa18059d752b525aceeadf1b9" title="9: MMX vectors (64 bits, X86 specific)">X86_MMXTyID</a>,     <span class="comment">///<  9: MMX vectors (64 bits, X86 specific)</span>
+<a name="l00061"></a>00061 <span class="comment"></span>
+<a name="l00062"></a>00062     <span class="comment">// Derived types... see DerivedTypes.h file.</span>
+<a name="l00063"></a>00063     <span class="comment">// Make sure FirstDerivedTyID stays up to date!</span>
+<a name="l00064"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa8e724092b0496fe3d16e29863b46c249">00064</a>     <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa8e724092b0496fe3d16e29863b46c249" title="10: Arbitrary bit width integers">IntegerTyID</a>,     <span class="comment">///< 10: Arbitrary bit width integers</span>
+<a name="l00065"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa0ec130d9ce9883b3e9c6071ee19a4b16">00065</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa0ec130d9ce9883b3e9c6071ee19a4b16" title="11: Functions">FunctionTyID</a>,    <span class="comment">///< 11: Functions</span>
+<a name="l00066"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa812a573d23fbb37aacd025e2a0588156">00066</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa812a573d23fbb37aacd025e2a0588156" title="12: Structures">StructTyID</a>,      <span class="comment">///< 12: Structures</span>
+<a name="l00067"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa2989d3024a84b4dda9d77419b1648554">00067</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa2989d3024a84b4dda9d77419b1648554" title="13: Arrays">ArrayTyID</a>,       <span class="comment">///< 13: Arrays</span>
+<a name="l00068"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaae68df805bc15b023748c2a78b80563ff">00068</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaae68df805bc15b023748c2a78b80563ff" title="14: Pointers">PointerTyID</a>,     <span class="comment">///< 14: Pointers</span>
+<a name="l00069"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa1f19f6d0e474b9dce2d0574e12baec29">00069</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa1f19f6d0e474b9dce2d0574e12baec29" title="15: SIMD 'packed' format, or other vector type">VectorTyID</a>,      <span class="comment">///< 15: SIMD 'packed' format, or other vector type</span>
+<a name="l00070"></a>00070 <span class="comment"></span>
+<a name="l00071"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaab034bb5c79a379bc5418c24650430b5f">00071</a>     <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaab034bb5c79a379bc5418c24650430b5f">NumTypeIDs</a>,                         <span class="comment">// Must remain as last defined ID</span>
+<a name="l00072"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaab89569c0c8e8c4e51731b630dcdd354b">00072</a>     <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaab89569c0c8e8c4e51731b630dcdd354b">LastPrimitiveTyID</a> = <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa03c8b7efa18059d752b525aceeadf1b9" title="9: MMX vectors (64 bits, X86 specific)">X86_MMXTyID</a>,
+<a name="l00073"></a><a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaadb549cda253fae8bef8a0bc329140be4">00073</a>     <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaadb549cda253fae8bef8a0bc329140be4">FirstDerivedTyID</a> = <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa8e724092b0496fe3d16e29863b46c249" title="10: Arbitrary bit width integers">IntegerTyID</a>
+<a name="l00074"></a>00074   };
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076 <span class="keyword">private</span>:<span class="comment"></span>
+<a name="l00077"></a>00077 <span class="comment">  /// Context - This refers to the LLVMContext in which this type was uniqued.</span>
+<a name="l00078"></a>00078 <span class="comment"></span>  <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context;
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080   <span class="comment">// Due to Ubuntu GCC bug 910363:</span>
+<a name="l00081"></a>00081   <span class="comment">// https://bugs.launchpad.net/ubuntu/+source/gcc-4.5/+bug/910363</span>
+<a name="l00082"></a>00082   <span class="comment">// Bitpack ID and SubclassData manually.</span>
+<a name="l00083"></a>00083   <span class="comment">// Note: TypeID : low 8 bit; SubclassData : high 24 bit.</span>
+<a name="l00084"></a>00084   uint32_t IDAndSubclassData;
+<a name="l00085"></a>00085 
+<a name="l00086"></a>00086 <span class="keyword">protected</span>:
+<a name="l00087"></a><a class="code" href="classllvm_1_1Type.html#aa81f87de855d80e4275071841a7e0c83">00087</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classllvm_1_1LLVMContextImpl.html">LLVMContextImpl</a>;
+<a name="l00088"></a><a class="code" href="classllvm_1_1Type.html#a817dfd76b27697e96a20f80f7bb68251">00088</a>   <span class="keyword">explicit</span> <a class="code" href="classllvm_1_1Type.html#a817dfd76b27697e96a20f80f7bb68251">Type</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbda">TypeID</a> tid)
+<a name="l00089"></a>00089     : Context(C), IDAndSubclassData(0),
+<a name="l00090"></a>00090       <a class="code" href="classllvm_1_1Type.html#a679d8ea00092eb9cd392643bb2d1b7f9">NumContainedTys</a>(0), <a class="code" href="classllvm_1_1Type.html#a96d2037eb473457f3222e5cbe7ea22b5">ContainedTys</a>(0) {
+<a name="l00091"></a>00091     <a class="code" href="classllvm_1_1Type.html#a645d535f010329a2349a64148122356c">setTypeID</a>(tid);
+<a name="l00092"></a>00092   }
+<a name="l00093"></a><a class="code" href="classllvm_1_1Type.html#a164cc9fdad445c04aef4c9e46f2fb4de">00093</a>   <a class="code" href="classllvm_1_1Type.html#a164cc9fdad445c04aef4c9e46f2fb4de">~Type</a>() {}
+<a name="l00094"></a>00094   
+<a name="l00095"></a><a class="code" href="classllvm_1_1Type.html#a645d535f010329a2349a64148122356c">00095</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Type.html#a645d535f010329a2349a64148122356c">setTypeID</a>(<a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbda">TypeID</a> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>) {
+<a name="l00096"></a>00096     IDAndSubclassData = (ID & 0xFF) | (IDAndSubclassData & 0xFFFFFF00);
+<a name="l00097"></a>00097     assert(<a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == ID && <span class="stringliteral">"TypeID data too large for field"</span>);
+<a name="l00098"></a>00098   }
+<a name="l00099"></a>00099   
+<a name="l00100"></a><a class="code" href="classllvm_1_1Type.html#a6861d80f5277fd10ed62a523492f4b54">00100</a>   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Type.html#a6861d80f5277fd10ed62a523492f4b54">getSubclassData</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IDAndSubclassData >> 8; }
+<a name="l00101"></a>00101   
+<a name="l00102"></a><a class="code" href="classllvm_1_1Type.html#aa6a764f2b0653b70a81656accf9dda7c">00102</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Type.html#aa6a764f2b0653b70a81656accf9dda7c">setSubclassData</a>(<span class="keywordtype">unsigned</span> val) {
+<a name="l00103"></a>00103     IDAndSubclassData = (IDAndSubclassData & 0xFF) | (val << 8);
+<a name="l00104"></a>00104     <span class="comment">// Ensure we don't have any accidental truncation.</span>
+<a name="l00105"></a>00105     assert(<a class="code" href="classllvm_1_1Type.html#a6861d80f5277fd10ed62a523492f4b54">getSubclassData</a>() == val && <span class="stringliteral">"Subclass data too large for field"</span>);
+<a name="l00106"></a>00106   }
+<a name="l00107"></a>00107 <span class="comment"></span>
+<a name="l00108"></a>00108 <span class="comment">  /// NumContainedTys - Keeps track of how many Type*'s there are in the</span>
+<a name="l00109"></a>00109 <span class="comment">  /// ContainedTys list.</span>
+<a name="l00110"></a><a class="code" href="classllvm_1_1Type.html#a679d8ea00092eb9cd392643bb2d1b7f9">00110</a> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Type.html#a679d8ea00092eb9cd392643bb2d1b7f9">NumContainedTys</a>;
+<a name="l00111"></a>00111 <span class="comment"></span>
+<a name="l00112"></a>00112 <span class="comment">  /// ContainedTys - A pointer to the array of Types contained by this Type.</span>
+<a name="l00113"></a>00113 <span class="comment">  /// For example, this includes the arguments of a function type, the elements</span>
+<a name="l00114"></a>00114 <span class="comment">  /// of a structure, the pointee of a pointer, the element type of an array,</span>
+<a name="l00115"></a>00115 <span class="comment">  /// etc.  This pointer may be 0 for types that don't contain other types</span>
+<a name="l00116"></a>00116 <span class="comment">  /// (Integer, Double, Float).</span>
+<a name="l00117"></a><a class="code" href="classllvm_1_1Type.html#a96d2037eb473457f3222e5cbe7ea22b5">00117</a> <span class="comment"></span>  <a class="code" href="classllvm_1_1Type.html">Type</a> * <span class="keyword">const</span> *<a class="code" href="classllvm_1_1Type.html#a96d2037eb473457f3222e5cbe7ea22b5">ContainedTys</a>;
+<a name="l00118"></a>00118 
+<a name="l00119"></a>00119 <span class="keyword">public</span>:
+<a name="l00120"></a>00120   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Type.html#a62d28926e76baaced13ab64ba6aa020d">print</a>(<a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O) <span class="keyword">const</span>;
+<a name="l00121"></a>00121   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Type.html#a7a6ffaae19e8423fbd31b2a06b784e60">dump</a>() <span class="keyword">const</span>;
+<a name="l00122"></a>00122 <span class="comment"></span>
+<a name="l00123"></a>00123 <span class="comment">  /// getContext - Return the LLVMContext in which this type was uniqued.</span>
+<a name="l00124"></a><a class="code" href="classllvm_1_1Type.html#af348d5ea83429d08ba891ca3dd0e92b2">00124</a> <span class="comment"></span>  <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="classllvm_1_1Type.html#af348d5ea83429d08ba891ca3dd0e92b2" title="getContext - Return the LLVMContext in which this type was uniqued.">getContext</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Context; }
+<a name="l00125"></a>00125 
+<a name="l00126"></a>00126   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00127"></a>00127   <span class="comment">// Accessors for working with types.</span>
+<a name="l00128"></a>00128   <span class="comment">//</span>
+<a name="l00129"></a>00129 <span class="comment"></span>
+<a name="l00130"></a>00130 <span class="comment">  /// getTypeID - Return the type id for the type.  This will return one</span>
+<a name="l00131"></a>00131 <span class="comment">  /// of the TypeID enum elements defined above.</span>
+<a name="l00132"></a>00132 <span class="comment">  ///</span>
+<a name="l00133"></a><a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">00133</a> <span class="comment"></span>  <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbda">TypeID</a> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbda">TypeID</a>)(IDAndSubclassData & 0xFF); }
+<a name="l00134"></a>00134 <span class="comment"></span>
+<a name="l00135"></a>00135 <span class="comment">  /// isVoidTy - Return true if this is 'void'.</span>
+<a name="l00136"></a><a class="code" href="classllvm_1_1Type.html#af5c7041df3ad5edffe5da17b5264c1fc">00136</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#af5c7041df3ad5edffe5da17b5264c1fc" title="isVoidTy - Return true if this is 'void'.">isVoidTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa567ac2c7944f770cfb2c2cffc94b3520" title="0: type with no size">VoidTyID</a>; }
+<a name="l00137"></a>00137 <span class="comment"></span>
+<a name="l00138"></a>00138 <span class="comment">  /// isHalfTy - Return true if this is 'half', a 16-bit IEEE fp type.</span>
+<a name="l00139"></a><a class="code" href="classllvm_1_1Type.html#a08a0701c278c0e0e1f9bd4823b8e5903">00139</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a08a0701c278c0e0e1f9bd4823b8e5903" title="isHalfTy - Return true if this is 'half', a 16-bit IEEE fp type.">isHalfTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa301c3a4cc2bfd399628cfd473f383ff9" title="1: 16-bit floating point type">HalfTyID</a>; }
+<a name="l00140"></a>00140 <span class="comment"></span>
+<a name="l00141"></a>00141 <span class="comment">  /// isFloatTy - Return true if this is 'float', a 32-bit IEEE fp type.</span>
+<a name="l00142"></a><a class="code" href="classllvm_1_1Type.html#aeb06cf0f813f643b62d8dd98db0bc249">00142</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#aeb06cf0f813f643b62d8dd98db0bc249" title="isFloatTy - Return true if this is 'float', a 32-bit IEEE fp type.">isFloatTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa6a5dd38c5c337ac6ce6d5847b1ca7f15" title="2: 32-bit floating point type">FloatTyID</a>; }
+<a name="l00143"></a>00143   <span class="comment"></span>
+<a name="l00144"></a>00144 <span class="comment">  /// isDoubleTy - Return true if this is 'double', a 64-bit IEEE fp type.</span>
+<a name="l00145"></a><a class="code" href="classllvm_1_1Type.html#ac67ad08d36c989a872a887caa72803c6">00145</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#ac67ad08d36c989a872a887caa72803c6" title="isDoubleTy - Return true if this is 'double', a 64-bit IEEE fp type.">isDoubleTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaabc549945f13bb5d5f5b80c550d2b92f5" title="3: 64-bit floating point type">DoubleTyID</a>; }
+<a name="l00146"></a>00146 <span class="comment"></span>
+<a name="l00147"></a>00147 <span class="comment">  /// isX86_FP80Ty - Return true if this is x86 long double.</span>
+<a name="l00148"></a><a class="code" href="classllvm_1_1Type.html#ae011f00644d795f4864d9ee30547b127">00148</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#ae011f00644d795f4864d9ee30547b127" title="isX86_FP80Ty - Return true if this is x86 long double.">isX86_FP80Ty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaabd37be4e521c37c8b5c07edbab59b8d7" title="4: 80-bit floating point type (X87)">X86_FP80TyID</a>; }
+<a name="l00149"></a>00149 <span class="comment"></span>
+<a name="l00150"></a>00150 <span class="comment">  /// isFP128Ty - Return true if this is 'fp128'.</span>
+<a name="l00151"></a><a class="code" href="classllvm_1_1Type.html#a6f773f3ab55f89528f8585666eb62e19">00151</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a6f773f3ab55f89528f8585666eb62e19" title="isFP128Ty - Return true if this is 'fp128'.">isFP128Ty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaaf645dbe1647a41fce26595aa8cd8bdfc" title="5: 128-bit floating point type (112-bit mantissa)">FP128TyID</a>; }
+<a name="l00152"></a>00152 <span class="comment"></span>
+<a name="l00153"></a>00153 <span class="comment">  /// isPPC_FP128Ty - Return true if this is powerpc long double.</span>
+<a name="l00154"></a><a class="code" href="classllvm_1_1Type.html#a15a8263a574e9842b03263ebe0e36c12">00154</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a15a8263a574e9842b03263ebe0e36c12" title="isPPC_FP128Ty - Return true if this is powerpc long double.">isPPC_FP128Ty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaac1fd0acf788a4de492dc0e3f51088f48" title="6: 128-bit floating point type (two 64-bits, PowerPC)">PPC_FP128TyID</a>; }
+<a name="l00155"></a>00155 <span class="comment"></span>
+<a name="l00156"></a>00156 <span class="comment">  /// isFloatingPointTy - Return true if this is one of the six floating point</span>
+<a name="l00157"></a>00157 <span class="comment">  /// types</span>
+<a name="l00158"></a><a class="code" href="classllvm_1_1Type.html#a40113570b0c52a18c34cabed8359e2c8">00158</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a40113570b0c52a18c34cabed8359e2c8">isFloatingPointTy</a>()<span class="keyword"> const </span>{
+<a name="l00159"></a>00159     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa301c3a4cc2bfd399628cfd473f383ff9" title="1: 16-bit floating point type">HalfTyID</a> || <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa6a5dd38c5c337ac6ce6d5847b1ca7f15" title="2: 32-bit floating point type">FloatTyID</a> ||
+<a name="l00160"></a>00160            <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaabc549945f13bb5d5f5b80c550d2b92f5" title="3: 64-bit floating point type">DoubleTyID</a> ||
+<a name="l00161"></a>00161            <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaabd37be4e521c37c8b5c07edbab59b8d7" title="4: 80-bit floating point type (X87)">X86_FP80TyID</a> || <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaaf645dbe1647a41fce26595aa8cd8bdfc" title="5: 128-bit floating point type (112-bit mantissa)">FP128TyID</a> ||
+<a name="l00162"></a>00162            <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaac1fd0acf788a4de492dc0e3f51088f48" title="6: 128-bit floating point type (two 64-bits, PowerPC)">PPC_FP128TyID</a>;
+<a name="l00163"></a>00163   }
+<a name="l00164"></a>00164 <span class="comment"></span>
+<a name="l00165"></a>00165 <span class="comment">  /// isX86_MMXTy - Return true if this is X86 MMX.</span>
+<a name="l00166"></a><a class="code" href="classllvm_1_1Type.html#af47064c2a364c1b3542f545c9f4b6f8d">00166</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#af47064c2a364c1b3542f545c9f4b6f8d" title="isX86_MMXTy - Return true if this is X86 MMX.">isX86_MMXTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa03c8b7efa18059d752b525aceeadf1b9" title="9: MMX vectors (64 bits, X86 specific)">X86_MMXTyID</a>; }
+<a name="l00167"></a>00167 <span class="comment"></span>
+<a name="l00168"></a>00168 <span class="comment">  /// isFPOrFPVectorTy - Return true if this is a FP type or a vector of FP.</span>
+<a name="l00169"></a>00169 <span class="comment">  ///</span>
+<a name="l00170"></a><a class="code" href="classllvm_1_1Type.html#a35a540d6e55bff813e9b195ebdb3da9f">00170</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a35a540d6e55bff813e9b195ebdb3da9f">isFPOrFPVectorTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8eafa71cf399da8f21b2af5549f3f9e7">getScalarType</a>()-><a class="code" href="classllvm_1_1Type.html#a40113570b0c52a18c34cabed8359e2c8">isFloatingPointTy</a>(); }
+<a name="l00171"></a>00171  <span class="comment"></span>
+<a name="l00172"></a>00172 <span class="comment">  /// isLabelTy - Return true if this is 'label'.</span>
+<a name="l00173"></a><a class="code" href="classllvm_1_1Type.html#abd76b98565ee42a7ab57076b6adb6260">00173</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#abd76b98565ee42a7ab57076b6adb6260" title="isLabelTy - Return true if this is 'label'.">isLabelTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa66db5616b8f6b2cfe991861905747783" title="7: Labels">LabelTyID</a>; }
+<a name="l00174"></a>00174 <span class="comment"></span>
+<a name="l00175"></a>00175 <span class="comment">  /// isMetadataTy - Return true if this is 'metadata'.</span>
+<a name="l00176"></a><a class="code" href="classllvm_1_1Type.html#a315eb2c1164e31a8447e26ae8f7a45a8">00176</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a315eb2c1164e31a8447e26ae8f7a45a8" title="isMetadataTy - Return true if this is 'metadata'.">isMetadataTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaad3b3756c598c8acc2d002f5f9a2c1d04" title="8: Metadata">MetadataTyID</a>; }
+<a name="l00177"></a>00177 <span class="comment"></span>
+<a name="l00178"></a>00178 <span class="comment">  /// isIntegerTy - True if this is an instance of IntegerType.</span>
+<a name="l00179"></a>00179 <span class="comment">  ///</span>
+<a name="l00180"></a><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">00180</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa8e724092b0496fe3d16e29863b46c249" title="10: Arbitrary bit width integers">IntegerTyID</a>; } 
+<a name="l00181"></a>00181 <span class="comment"></span>
+<a name="l00182"></a>00182 <span class="comment">  /// isIntegerTy - Return true if this is an IntegerType of the given width.</span>
+<a name="l00183"></a>00183 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>(<span class="keywordtype">unsigned</span> Bitwidth) <span class="keyword">const</span>;
+<a name="l00184"></a>00184 <span class="comment"></span>
+<a name="l00185"></a>00185 <span class="comment">  /// isIntOrIntVectorTy - Return true if this is an integer type or a vector of</span>
+<a name="l00186"></a>00186 <span class="comment">  /// integer types.</span>
+<a name="l00187"></a>00187 <span class="comment">  ///</span>
+<a name="l00188"></a><a class="code" href="classllvm_1_1Type.html#a3bd5e6108cd2c28c267d70e631a7b11a">00188</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a3bd5e6108cd2c28c267d70e631a7b11a">isIntOrIntVectorTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8eafa71cf399da8f21b2af5549f3f9e7">getScalarType</a>()-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>(); }
+<a name="l00189"></a>00189   <span class="comment"></span>
+<a name="l00190"></a>00190 <span class="comment">  /// isFunctionTy - True if this is an instance of FunctionType.</span>
+<a name="l00191"></a>00191 <span class="comment">  ///</span>
+<a name="l00192"></a><a class="code" href="classllvm_1_1Type.html#afec34d44cc661e1adefcffc5f2561cf7">00192</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#afec34d44cc661e1adefcffc5f2561cf7">isFunctionTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa0ec130d9ce9883b3e9c6071ee19a4b16" title="11: Functions">FunctionTyID</a>; }
+<a name="l00193"></a>00193 <span class="comment"></span>
+<a name="l00194"></a>00194 <span class="comment">  /// isStructTy - True if this is an instance of StructType.</span>
+<a name="l00195"></a>00195 <span class="comment">  ///</span>
+<a name="l00196"></a><a class="code" href="classllvm_1_1Type.html#aed87738661d539150b3fc4bb46e36aa3">00196</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#aed87738661d539150b3fc4bb46e36aa3">isStructTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa812a573d23fbb37aacd025e2a0588156" title="12: Structures">StructTyID</a>; }
+<a name="l00197"></a>00197 <span class="comment"></span>
+<a name="l00198"></a>00198 <span class="comment">  /// isArrayTy - True if this is an instance of ArrayType.</span>
+<a name="l00199"></a>00199 <span class="comment">  ///</span>
+<a name="l00200"></a><a class="code" href="classllvm_1_1Type.html#a9aae7c60b468bcf6db982dc76e6c703a">00200</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a9aae7c60b468bcf6db982dc76e6c703a">isArrayTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa2989d3024a84b4dda9d77419b1648554" title="13: Arrays">ArrayTyID</a>; }
+<a name="l00201"></a>00201 <span class="comment"></span>
+<a name="l00202"></a>00202 <span class="comment">  /// isPointerTy - True if this is an instance of PointerType.</span>
+<a name="l00203"></a>00203 <span class="comment">  ///</span>
+<a name="l00204"></a><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">00204</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaae68df805bc15b023748c2a78b80563ff" title="14: Pointers">PointerTyID</a>; }
+<a name="l00205"></a>00205 <span class="comment"></span>
+<a name="l00206"></a>00206 <span class="comment">  /// isPtrOrPtrVectorTy - Return true if this is a pointer type or a vector of</span>
+<a name="l00207"></a>00207 <span class="comment">  /// pointer types.</span>
+<a name="l00208"></a>00208 <span class="comment">  ///</span>
+<a name="l00209"></a><a class="code" href="classllvm_1_1Type.html#ac830a02a025d9d5a5dc53c444cf625ee">00209</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#ac830a02a025d9d5a5dc53c444cf625ee">isPtrOrPtrVectorTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8eafa71cf399da8f21b2af5549f3f9e7">getScalarType</a>()-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>(); }
+<a name="l00210"></a>00210  <span class="comment"></span>
+<a name="l00211"></a>00211 <span class="comment">  /// isVectorTy - True if this is an instance of VectorType.</span>
+<a name="l00212"></a>00212 <span class="comment">  ///</span>
+<a name="l00213"></a><a class="code" href="classllvm_1_1Type.html#a6f725580f7834e2ca90762965866dad4">00213</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a6f725580f7834e2ca90762965866dad4">isVectorTy</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa1f19f6d0e474b9dce2d0574e12baec29" title="15: SIMD 'packed' format, or other vector type">VectorTyID</a>; }
+<a name="l00214"></a>00214 <span class="comment"></span>
+<a name="l00215"></a>00215 <span class="comment">  /// canLosslesslyBitCastTo - Return true if this type could be converted </span>
+<a name="l00216"></a>00216 <span class="comment">  /// with a lossless BitCast to type 'Ty'. For example, i8* to i32*. BitCasts </span>
+<a name="l00217"></a>00217 <span class="comment">  /// are valid for types of the same size only where no re-interpretation of </span>
+<a name="l00218"></a>00218 <span class="comment">  /// the bits is done.</span>
+<a name="l00219"></a>00219 <span class="comment">  /// @brief Determine if this type could be losslessly bitcast to Ty</span>
+<a name="l00220"></a>00220 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#ab781fe09dd22fc9dec38dd0d40036e38" title="Determine if this type could be losslessly bitcast to Ty.">canLosslesslyBitCastTo</a>(<a class="code" href="classllvm_1_1Type.html">Type</a> *Ty) <span class="keyword">const</span>;
+<a name="l00221"></a>00221 <span class="comment"></span>
+<a name="l00222"></a>00222 <span class="comment">  /// isEmptyTy - Return true if this type is empty, that is, it has no</span>
+<a name="l00223"></a>00223 <span class="comment">  /// elements or all its elements are empty.</span>
+<a name="l00224"></a>00224 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a33cb3169b378c66ae5333063f9604828">isEmptyTy</a>() <span class="keyword">const</span>;
+<a name="l00225"></a>00225 <span class="comment"></span>
+<a name="l00226"></a>00226 <span class="comment">  /// Here are some useful little methods to query what type derived types are</span>
+<a name="l00227"></a>00227 <span class="comment">  /// Note that all other types can just compare to see if this == Type::xxxTy;</span>
+<a name="l00228"></a>00228 <span class="comment">  ///</span>
+<a name="l00229"></a><a class="code" href="classllvm_1_1Type.html#a17f4f9740c2ed84782a3949398967884">00229</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a17f4f9740c2ed84782a3949398967884">isPrimitiveType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() <= <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaab89569c0c8e8c4e51731b630dcdd354b">LastPrimitiveTyID</a>; }
+<a name="l00230"></a><a class="code" href="classllvm_1_1Type.html#a130ea9970d25db57ce1f8501949c3b66">00230</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a130ea9970d25db57ce1f8501949c3b66">isDerivedType</a>()<span class="keyword">   const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() >= <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaadb549cda253fae8bef8a0bc329140be4">FirstDerivedTyID</a>; }
+<a name="l00231"></a>00231 <span class="comment"></span>
+<a name="l00232"></a>00232 <span class="comment">  /// isFirstClassType - Return true if the type is "first class", meaning it</span>
+<a name="l00233"></a>00233 <span class="comment">  /// is a valid type for a Value.</span>
+<a name="l00234"></a>00234 <span class="comment">  ///</span>
+<a name="l00235"></a><a class="code" href="classllvm_1_1Type.html#a367dd5f43f651df7c0dcaebd4cf89110">00235</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a367dd5f43f651df7c0dcaebd4cf89110">isFirstClassType</a>()<span class="keyword"> const </span>{
+<a name="l00236"></a>00236     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() != <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa0ec130d9ce9883b3e9c6071ee19a4b16" title="11: Functions">FunctionTyID</a> && <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() != <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa567ac2c7944f770cfb2c2cffc94b3520" title="0: type with no size">VoidTyID</a>;
+<a name="l00237"></a>00237   }
+<a name="l00238"></a>00238 <span class="comment"></span>
+<a name="l00239"></a>00239 <span class="comment">  /// isSingleValueType - Return true if the type is a valid type for a</span>
+<a name="l00240"></a>00240 <span class="comment">  /// register in codegen.  This includes all first-class types except struct</span>
+<a name="l00241"></a>00241 <span class="comment">  /// and array types.</span>
+<a name="l00242"></a>00242 <span class="comment">  ///</span>
+<a name="l00243"></a><a class="code" href="classllvm_1_1Type.html#a36e21267fe14e69d3251eab1cd3a0076">00243</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a36e21267fe14e69d3251eab1cd3a0076">isSingleValueType</a>()<span class="keyword"> const </span>{
+<a name="l00244"></a>00244     <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() != <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa567ac2c7944f770cfb2c2cffc94b3520" title="0: type with no size">VoidTyID</a> && <a class="code" href="classllvm_1_1Type.html#a17f4f9740c2ed84782a3949398967884">isPrimitiveType</a>()) ||
+<a name="l00245"></a>00245             <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa8e724092b0496fe3d16e29863b46c249" title="10: Arbitrary bit width integers">IntegerTyID</a> || <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaae68df805bc15b023748c2a78b80563ff" title="14: Pointers">PointerTyID</a> ||
+<a name="l00246"></a>00246             <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa1f19f6d0e474b9dce2d0574e12baec29" title="15: SIMD 'packed' format, or other vector type">VectorTyID</a>;
+<a name="l00247"></a>00247   }
+<a name="l00248"></a>00248 <span class="comment"></span>
+<a name="l00249"></a>00249 <span class="comment">  /// isAggregateType - Return true if the type is an aggregate type. This</span>
+<a name="l00250"></a>00250 <span class="comment">  /// means it is valid as the first operand of an insertvalue or</span>
+<a name="l00251"></a>00251 <span class="comment">  /// extractvalue instruction. This includes struct and array types, but</span>
+<a name="l00252"></a>00252 <span class="comment">  /// does not include vector types.</span>
+<a name="l00253"></a>00253 <span class="comment">  ///</span>
+<a name="l00254"></a><a class="code" href="classllvm_1_1Type.html#a0a32c2cb0342323dc78f6aa31d7e581e">00254</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a0a32c2cb0342323dc78f6aa31d7e581e">isAggregateType</a>()<span class="keyword"> const </span>{
+<a name="l00255"></a>00255     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa812a573d23fbb37aacd025e2a0588156" title="12: Structures">StructTyID</a> || <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa2989d3024a84b4dda9d77419b1648554" title="13: Arrays">ArrayTyID</a>;
+<a name="l00256"></a>00256   }
+<a name="l00257"></a>00257 <span class="comment"></span>
+<a name="l00258"></a>00258 <span class="comment">  /// isSized - Return true if it makes sense to take the size of this type.  To</span>
+<a name="l00259"></a>00259 <span class="comment">  /// get the actual size for a particular target, it is reasonable to use the</span>
+<a name="l00260"></a>00260 <span class="comment">  /// DataLayout subsystem to do this.</span>
+<a name="l00261"></a>00261 <span class="comment">  ///</span>
+<a name="l00262"></a><a class="code" href="classllvm_1_1Type.html#a9dc5111b1a9b1d5c4652d50f74fe850b">00262</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a9dc5111b1a9b1d5c4652d50f74fe850b">isSized</a>()<span class="keyword"> const </span>{
+<a name="l00263"></a>00263     <span class="comment">// If it's a primitive, it is always sized.</span>
+<a name="l00264"></a>00264     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa8e724092b0496fe3d16e29863b46c249" title="10: Arbitrary bit width integers">IntegerTyID</a> || <a class="code" href="classllvm_1_1Type.html#a40113570b0c52a18c34cabed8359e2c8">isFloatingPointTy</a>() ||
+<a name="l00265"></a>00265         <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaae68df805bc15b023748c2a78b80563ff" title="14: Pointers">PointerTyID</a> ||
+<a name="l00266"></a>00266         <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa03c8b7efa18059d752b525aceeadf1b9" title="9: MMX vectors (64 bits, X86 specific)">X86_MMXTyID</a>)
+<a name="l00267"></a>00267       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00268"></a>00268     <span class="comment">// If it is not something that can have a size (e.g. a function or label),</span>
+<a name="l00269"></a>00269     <span class="comment">// it doesn't have a size.</span>
+<a name="l00270"></a>00270     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() != <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa812a573d23fbb37aacd025e2a0588156" title="12: Structures">StructTyID</a> && <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() != <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa2989d3024a84b4dda9d77419b1648554" title="13: Arrays">ArrayTyID</a> &&
+<a name="l00271"></a>00271         <a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() != <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaa1f19f6d0e474b9dce2d0574e12baec29" title="15: SIMD 'packed' format, or other vector type">VectorTyID</a>)
+<a name="l00272"></a>00272       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00273"></a>00273     <span class="comment">// Otherwise we have to try harder to decide.</span>
+<a name="l00274"></a>00274     <span class="keywordflow">return</span> isSizedDerivedType();
+<a name="l00275"></a>00275   }
+<a name="l00276"></a>00276 <span class="comment"></span>
+<a name="l00277"></a>00277 <span class="comment">  /// getPrimitiveSizeInBits - Return the basic size of this type if it is a</span>
+<a name="l00278"></a>00278 <span class="comment">  /// primitive type.  These are fixed by LLVM and are not target dependent.</span>
+<a name="l00279"></a>00279 <span class="comment">  /// This will return zero if the type does not have a size or is not a</span>
+<a name="l00280"></a>00280 <span class="comment">  /// primitive type.</span>
+<a name="l00281"></a>00281 <span class="comment">  ///</span>
+<a name="l00282"></a>00282 <span class="comment">  /// Note that this may not reflect the size of memory allocated for an</span>
+<a name="l00283"></a>00283 <span class="comment">  /// instance of the type or the number of bytes that are written when an</span>
+<a name="l00284"></a>00284 <span class="comment">  /// instance of the type is stored to memory. The DataLayout class provides</span>
+<a name="l00285"></a>00285 <span class="comment">  /// additional query functions to provide this information.</span>
+<a name="l00286"></a>00286 <span class="comment">  ///</span>
+<a name="l00287"></a>00287 <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Type.html#a5a7cfa245af120b44ac8a86143bb9e57">getPrimitiveSizeInBits</a>() <span class="keyword">const</span>;
+<a name="l00288"></a>00288 <span class="comment"></span>
+<a name="l00289"></a>00289 <span class="comment">  /// getScalarSizeInBits - If this is a vector type, return the</span>
+<a name="l00290"></a>00290 <span class="comment">  /// getPrimitiveSizeInBits value for the element type. Otherwise return the</span>
+<a name="l00291"></a>00291 <span class="comment">  /// getPrimitiveSizeInBits value for this type.</span>
+<a name="l00292"></a>00292 <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Type.html#ad979b3c1bc975ee23810e3018ffe951b">getScalarSizeInBits</a>();
+<a name="l00293"></a>00293 <span class="comment"></span>
+<a name="l00294"></a>00294 <span class="comment">  /// getFPMantissaWidth - Return the width of the mantissa of this type.  This</span>
+<a name="l00295"></a>00295 <span class="comment">  /// is only valid on floating point types.  If the FP type does not</span>
+<a name="l00296"></a>00296 <span class="comment">  /// have a stable mantissa (e.g. ppc long double), this method returns -1.</span>
+<a name="l00297"></a>00297 <span class="comment"></span>  <span class="keywordtype">int</span> <a class="code" href="classllvm_1_1Type.html#afd69a04ba20c2085dec90d69fb9abe64">getFPMantissaWidth</a>() <span class="keyword">const</span>;
+<a name="l00298"></a>00298 <span class="comment"></span>
+<a name="l00299"></a>00299 <span class="comment">  /// getScalarType - If this is a vector type, return the element type,</span>
+<a name="l00300"></a>00300 <span class="comment">  /// otherwise return 'this'.</span>
+<a name="l00301"></a>00301 <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a8eafa71cf399da8f21b2af5549f3f9e7">getScalarType</a>() <span class="keyword">const</span>;
+<a name="l00302"></a>00302   <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a8eafa71cf399da8f21b2af5549f3f9e7">getScalarType</a>();
+<a name="l00303"></a>00303 
+<a name="l00304"></a>00304   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00305"></a>00305   <span class="comment">// Type Iteration support.</span>
+<a name="l00306"></a>00306   <span class="comment">//</span>
+<a name="l00307"></a><a class="code" href="classllvm_1_1Type.html#a10f976e78960c68188a4c2e35bc7db5e">00307</a>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1Type.html">Type</a> * <span class="keyword">const</span> *<a class="code" href="classllvm_1_1Type.html#a10f976e78960c68188a4c2e35bc7db5e">subtype_iterator</a>;
+<a name="l00308"></a><a class="code" href="classllvm_1_1Type.html#a0db4aa0df793963e228e0f2fced9b64f">00308</a>   <a class="code" href="classllvm_1_1Type.html#a10f976e78960c68188a4c2e35bc7db5e">subtype_iterator</a> <a class="code" href="classllvm_1_1Type.html#a0db4aa0df793963e228e0f2fced9b64f">subtype_begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a96d2037eb473457f3222e5cbe7ea22b5">ContainedTys</a>; }
+<a name="l00309"></a><a class="code" href="classllvm_1_1Type.html#a7a3010c777d1e7f59410234e7256918c">00309</a>   <a class="code" href="classllvm_1_1Type.html#a10f976e78960c68188a4c2e35bc7db5e">subtype_iterator</a> <a class="code" href="classllvm_1_1Type.html#a7a3010c777d1e7f59410234e7256918c">subtype_end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> &<a class="code" href="classllvm_1_1Type.html#a96d2037eb473457f3222e5cbe7ea22b5">ContainedTys</a>[<a class="code" href="classllvm_1_1Type.html#a679d8ea00092eb9cd392643bb2d1b7f9">NumContainedTys</a>];}
+<a name="l00310"></a>00310 <span class="comment"></span>
+<a name="l00311"></a>00311 <span class="comment">  /// getContainedType - This method is used to implement the type iterator</span>
+<a name="l00312"></a>00312 <span class="comment">  /// (defined a the end of the file).  For derived types, this returns the</span>
+<a name="l00313"></a>00313 <span class="comment">  /// types 'contained' in the derived type.</span>
+<a name="l00314"></a>00314 <span class="comment">  ///</span>
+<a name="l00315"></a><a class="code" href="classllvm_1_1Type.html#a1e2a8dc174c34596e7e8efc7ab7e08a0">00315</a> <span class="comment"></span>  <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a1e2a8dc174c34596e7e8efc7ab7e08a0">getContainedType</a>(<span class="keywordtype">unsigned</span> i)<span class="keyword"> const </span>{
+<a name="l00316"></a>00316     assert(i < <a class="code" href="classllvm_1_1Type.html#a679d8ea00092eb9cd392643bb2d1b7f9">NumContainedTys</a> && <span class="stringliteral">"Index out of range!"</span>);
+<a name="l00317"></a>00317     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a96d2037eb473457f3222e5cbe7ea22b5">ContainedTys</a>[i];
+<a name="l00318"></a>00318   }
+<a name="l00319"></a>00319 <span class="comment"></span>
+<a name="l00320"></a>00320 <span class="comment">  /// getNumContainedTypes - Return the number of types in the derived type.</span>
+<a name="l00321"></a>00321 <span class="comment">  ///</span>
+<a name="l00322"></a><a class="code" href="classllvm_1_1Type.html#ad083201ba4e1f8217bdc1f1ab05bd83d">00322</a> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Type.html#ad083201ba4e1f8217bdc1f1ab05bd83d">getNumContainedTypes</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#a679d8ea00092eb9cd392643bb2d1b7f9">NumContainedTys</a>; }
+<a name="l00323"></a>00323 
+<a name="l00324"></a>00324   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00325"></a>00325   <span class="comment">// Helper methods corresponding to subclass methods.  This forces a cast to</span>
+<a name="l00326"></a>00326   <span class="comment">// the specified subclass and calls its accessor.  "getVectorNumElements" (for</span>
+<a name="l00327"></a>00327   <span class="comment">// example) is shorthand for cast<VectorType>(Ty)->getNumElements().  This is</span>
+<a name="l00328"></a>00328   <span class="comment">// only intended to cover the core methods that are frequently used, helper</span>
+<a name="l00329"></a>00329   <span class="comment">// methods should not be added here.</span>
+<a name="l00330"></a>00330   
+<a name="l00331"></a>00331   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Type.html#a0519dc6e2f153aaed61eed17d965a9f0">getIntegerBitWidth</a>() <span class="keyword">const</span>;
+<a name="l00332"></a>00332 
+<a name="l00333"></a>00333   <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a5d069ea065fd31eabbfda5230af2982f">getFunctionParamType</a>(<span class="keywordtype">unsigned</span> i) <span class="keyword">const</span>;
+<a name="l00334"></a>00334   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Type.html#a97e29fcbb74b3e2a3c0d0278da8f508d">getFunctionNumParams</a>() <span class="keyword">const</span>;
+<a name="l00335"></a>00335   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Type.html#a6973f7c13bbe29dd7fa383345d22356a">isFunctionVarArg</a>() <span class="keyword">const</span>;
+<a name="l00336"></a>00336   
+<a name="l00337"></a>00337   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="classllvm_1_1Type.html#a24a8a2a653b9a0d498f98b37ead5d881">getStructName</a>() <span class="keyword">const</span>;
+<a name="l00338"></a>00338   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Type.html#a22271ff9847b517d891f7b3459568bfc">getStructNumElements</a>() <span class="keyword">const</span>;
+<a name="l00339"></a>00339   <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a846de40edede70fb1e3803e4b51b0ea1">getStructElementType</a>(<span class="keywordtype">unsigned</span> N) <span class="keyword">const</span>;
+<a name="l00340"></a>00340   
+<a name="l00341"></a>00341   <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#ab5847d298dfee18cf62a3653cfa02467">getSequentialElementType</a>() <span class="keyword">const</span>;
+<a name="l00342"></a>00342   
+<a name="l00343"></a>00343   uint64_t <a class="code" href="classllvm_1_1Type.html#aeaf73fee81cb53d8bb6136a3d0ad39f6">getArrayNumElements</a>() <span class="keyword">const</span>;
+<a name="l00344"></a><a class="code" href="classllvm_1_1Type.html#acae189c1d913af7e7f37a8b202070997">00344</a>   <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#acae189c1d913af7e7f37a8b202070997">getArrayElementType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#ab5847d298dfee18cf62a3653cfa02467">getSequentialElementType</a>(); }
+<a name="l00345"></a>00345 
+<a name="l00346"></a>00346   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Type.html#ad8f27f0b94a56abcd296b8461737a3af">getVectorNumElements</a>() <span class="keyword">const</span>;
+<a name="l00347"></a><a class="code" href="classllvm_1_1Type.html#a796aad3f26c8038305aed21e677fce58">00347</a>   <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a796aad3f26c8038305aed21e677fce58">getVectorElementType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#ab5847d298dfee18cf62a3653cfa02467">getSequentialElementType</a>(); }
+<a name="l00348"></a>00348 
+<a name="l00349"></a><a class="code" href="classllvm_1_1Type.html#a5c09d927a0079ad16e8367271efe9bc2">00349</a>   <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a5c09d927a0079ad16e8367271efe9bc2">getPointerElementType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Type.html#ab5847d298dfee18cf62a3653cfa02467">getSequentialElementType</a>(); }
+<a name="l00350"></a>00350 <span class="comment"></span>
+<a name="l00351"></a>00351 <span class="comment">  /// \brief Get the address space of this pointer or pointer vector type.</span>
+<a name="l00352"></a>00352 <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Type.html#a33f9fa1a7cb21319a30836fce847c3c4" title="Get the address space of this pointer or pointer vector type.">getPointerAddressSpace</a>() <span class="keyword">const</span>;
+<a name="l00353"></a>00353   
+<a name="l00354"></a>00354   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00355"></a>00355   <span class="comment">// Static members exported by the Type class itself.  Useful for getting</span>
+<a name="l00356"></a>00356   <span class="comment">// instances of Type.</span>
+<a name="l00357"></a>00357   <span class="comment">//</span>
+<a name="l00358"></a>00358 <span class="comment"></span>
+<a name="l00359"></a>00359 <span class="comment">  /// getPrimitiveType - Return a type based on an identifier.</span>
+<a name="l00360"></a>00360 <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a8afb3494f6f22e80508f1945a2466052" title="getPrimitiveType - Return a type based on an identifier.">getPrimitiveType</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbda">TypeID</a> IDNumber);
+<a name="l00361"></a>00361 
+<a name="l00362"></a>00362   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00363"></a>00363   <span class="comment">// These are the builtin types that are always available.</span>
+<a name="l00364"></a>00364   <span class="comment">//</span>
+<a name="l00365"></a>00365   <span class="keyword">static</span> <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a6e20e76960d952de088354cbcd14c3ab">getVoidTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00366"></a>00366   <span class="keyword">static</span> <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a4a17871a3bb12fd2b8e1e45454c3e1c3">getLabelTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00367"></a>00367   <span class="keyword">static</span> <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#ae550f2e9436b395b614b4377ba27007f">getHalfTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00368"></a>00368   <span class="keyword">static</span> <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#ad5e0fe0efdd88f98a5b5eb512d5351c2">getFloatTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00369"></a>00369   <span class="keyword">static</span> <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#acb145f988329d1d621f73abcafea21d8">getDoubleTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00370"></a>00370   <span class="keyword">static</span> <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a28fdf240b8220065bc60d6d1b1a2f174">getMetadataTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00371"></a>00371   <span class="keyword">static</span> <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#ace5611e40c0a2dbdc2c6cbc93bea180c">getX86_FP80Ty</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00372"></a>00372   <span class="keyword">static</span> <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a49f37835a410e050b960dd936a54dd05">getFP128Ty</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00373"></a>00373   <span class="keyword">static</span> <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a489d14cb1d049f4bcc5e3e9cdaf9c54d">getPPC_FP128Ty</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00374"></a>00374   <span class="keyword">static</span> <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Type.html#a73d3d86b6dbcd445906a50c1c4ccfa14">getX86_MMXTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00375"></a>00375   <span class="keyword">static</span> <a class="code" href="classllvm_1_1IntegerType.html" title="Integer representation type.">IntegerType</a> *<a class="code" href="classllvm_1_1Type.html#acaf8e4c3e40e01e848c1fad5f05b81cd">getIntNTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> N);
+<a name="l00376"></a>00376   <span class="keyword">static</span> <a class="code" href="classllvm_1_1IntegerType.html" title="Integer representation type.">IntegerType</a> *<a class="code" href="classllvm_1_1Type.html#aa75984a442f2379de0c66018201fa628">getInt1Ty</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00377"></a>00377   <span class="keyword">static</span> <a class="code" href="classllvm_1_1IntegerType.html" title="Integer representation type.">IntegerType</a> *<a class="code" href="classllvm_1_1Type.html#a7ba5de75f50bb4a4ba920698edf39b28">getInt8Ty</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00378"></a>00378   <span class="keyword">static</span> <a class="code" href="classllvm_1_1IntegerType.html" title="Integer representation type.">IntegerType</a> *<a class="code" href="classllvm_1_1Type.html#a87f56db834c58ca630624956ecf6972f">getInt16Ty</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00379"></a>00379   <span class="keyword">static</span> <a class="code" href="classllvm_1_1IntegerType.html" title="Integer representation type.">IntegerType</a> *<a class="code" href="classllvm_1_1Type.html#a30dd396c5b40cd86c1591872e574ccdf">getInt32Ty</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00380"></a>00380   <span class="keyword">static</span> <a class="code" href="classllvm_1_1IntegerType.html" title="Integer representation type.">IntegerType</a> *<a class="code" href="classllvm_1_1Type.html#a05186fa23e4d11b9855a9599ba87a4b7">getInt64Ty</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00381"></a>00381 
+<a name="l00382"></a>00382   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00383"></a>00383   <span class="comment">// Convenience methods for getting pointer types with one of the above builtin</span>
+<a name="l00384"></a>00384   <span class="comment">// types as pointee.</span>
+<a name="l00385"></a>00385   <span class="comment">//</span>
+<a name="l00386"></a>00386   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#ae7800967708e40cf158d997bdd636f40">getHalfPtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00387"></a>00387   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#a9ccf2e49963856d5b41950750207c248">getFloatPtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00388"></a>00388   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#a1ed0b43d9cae56ef1e6ad9ce7e04f63b">getDoublePtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00389"></a>00389   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#ab292fb045e93c4805533e639fbc096e7">getX86_FP80PtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00390"></a>00390   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#a94fbd5df2c28654157e58bffcfc9e78c">getFP128PtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00391"></a>00391   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#a20457c2fdbea542c57ee262734f7ee30">getPPC_FP128PtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00392"></a>00392   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#a13643e72c4f81b4aedebb505c75498af">getX86_MMXPtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00393"></a>00393   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#a86b2306c74ebe71deb8e5fa95926cc75">getIntNPtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> N, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00394"></a>00394   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#a2ee2de2efa05f2abb95007892fc559a4">getInt1PtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00395"></a>00395   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#a7fe9ccd4893f4e2caa826126c09545ea">getInt8PtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00396"></a>00396   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#a1abbd9773a33032886d2f8d3a306240b">getInt16PtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00397"></a>00397   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#a9b90764a470e0862114db285592af2b3">getInt32PtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00398"></a>00398   <span class="keyword">static</span> <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#a9739fda41ce7be4d43bb5b45bbd0e460">getInt64PtrTy</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> AS = 0);
+<a name="l00399"></a>00399 <span class="comment"></span>
+<a name="l00400"></a>00400 <span class="comment">  /// getPointerTo - Return a pointer to the current type.  This is equivalent</span>
+<a name="l00401"></a>00401 <span class="comment">  /// to PointerType::get(Foo, AddrSpace).</span>
+<a name="l00402"></a>00402 <span class="comment"></span>  <a class="code" href="classllvm_1_1PointerType.html">PointerType</a> *<a class="code" href="classllvm_1_1Type.html#ab6cc070c37c59589af100aab6f48ef4f">getPointerTo</a>(<span class="keywordtype">unsigned</span> AddrSpace = 0);
+<a name="l00403"></a>00403 
+<a name="l00404"></a>00404 <span class="keyword">private</span>:<span class="comment"></span>
+<a name="l00405"></a>00405 <span class="comment">  /// isSizedDerivedType - Derived types like structures and arrays are sized</span>
+<a name="l00406"></a>00406 <span class="comment">  /// iff all of the members of the type are sized as well.  Since asking for</span>
+<a name="l00407"></a>00407 <span class="comment">  /// their size is relatively uncommon, move this operation out of line.</span>
+<a name="l00408"></a>00408 <span class="comment"></span>  <span class="keywordtype">bool</span> isSizedDerivedType() <span class="keyword">const</span>;
+<a name="l00409"></a>00409 };
+<a name="l00410"></a>00410 
+<a name="l00411"></a>00411 <span class="comment">// Printing of types.</span>
+<a name="l00412"></a><a class="code" href="namespacellvm.html#a5ef747e8c748006d9516485e6c4a567f">00412</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &<a class="code" href="namespacellvm.html#a6a02d446812b76c3b271d9e3e3c77b49">operator<<</a>(<a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &OS, <a class="code" href="classllvm_1_1Type.html">Type</a> &T) {
+<a name="l00413"></a>00413   T.<a class="code" href="classllvm_1_1Type.html#a62d28926e76baaced13ab64ba6aa020d">print</a>(OS);
+<a name="l00414"></a>00414   <span class="keywordflow">return</span> OS;
+<a name="l00415"></a>00415 }
+<a name="l00416"></a>00416 
+<a name="l00417"></a>00417 <span class="comment">// allow isa<PointerType>(x) to work without DerivedTypes.h included.</span>
+<a name="l00418"></a><a class="code" href="structllvm_1_1isa__impl_3_01PointerType_00_01Type_01_4.html">00418</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isa__impl.html">isa_impl</a><<a class="code" href="classllvm_1_1PointerType.html">PointerType</a>, <a class="code" href="classllvm_1_1Type.html">Type</a>> {
+<a name="l00419"></a><a class="code" href="structllvm_1_1isa__impl_3_01PointerType_00_01Type_01_4.html#ad53aa20bf5354f375c9b2002e7823b9a">00419</a>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1isa__impl_3_01PointerType_00_01Type_01_4.html#ad53aa20bf5354f375c9b2002e7823b9a">doit</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Type.html">Type</a> &Ty) {
+<a name="l00420"></a>00420     <span class="keywordflow">return</span> Ty.<a class="code" href="classllvm_1_1Type.html#a8e08dfcb75ff1b4b38c352bc0d9db223">getTypeID</a>() == <a class="code" href="classllvm_1_1Type.html#a5e9e1c0dd93557be1b4ad72860f3cbdaae68df805bc15b023748c2a78b80563ff" title="14: Pointers">Type::PointerTyID</a>;
+<a name="l00421"></a>00421   }
+<a name="l00422"></a>00422 };
+<a name="l00423"></a>00423 
+<a name="l00424"></a>00424   
+<a name="l00425"></a>00425 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00426"></a>00426 <span class="comment">// Provide specializations of GraphTraits to be able to treat a type as a</span>
+<a name="l00427"></a>00427 <span class="comment">// graph of sub types.</span>
+<a name="l00428"></a>00428 
+<a name="l00429"></a>00429 
+<a name="l00430"></a><a class="code" href="structllvm_1_1GraphTraits_3_01Type_01_5_01_4.html">00430</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1GraphTraits.html">GraphTraits</a><<a class="code" href="classllvm_1_1Type.html">Type</a>*> {
+<a name="l00431"></a><a class="code" href="structllvm_1_1GraphTraits_3_01Type_01_5_01_4.html#a9e104f123c9f0dad265ca53602d3cfe4">00431</a>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1Type.html">Type</a> <a class="code" href="structllvm_1_1GraphTraits_3_01Type_01_5_01_4.html#a9e104f123c9f0dad265ca53602d3cfe4">NodeType</a>;
+<a name="l00432"></a><a class="code" href="structllvm_1_1GraphTraits_3_01Type_01_5_01_4.html#adc26764228554fa10501861705f95848">00432</a>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1Type.html#a10f976e78960c68188a4c2e35bc7db5e">Type::subtype_iterator</a> <a class="code" href="structllvm_1_1GraphTraits_3_01Type_01_5_01_4.html#adc26764228554fa10501861705f95848">ChildIteratorType</a>;
+<a name="l00433"></a>00433 
+<a name="l00434"></a><a class="code" href="structllvm_1_1GraphTraits_3_01Type_01_5_01_4.html#ac91d31a2a838d528b9f103880a4d70fc">00434</a>   <span class="keyword">static</span> <span class="keyword">inline</span> NodeType *<a class="code" href="structllvm_1_1GraphTraits_3_01Type_01_5_01_4.html#ac91d31a2a838d528b9f103880a4d70fc">getEntryNode</a>(<a class="code" href="classllvm_1_1Type.html">Type</a> *T) { <span class="keywordflow">return</span> T; }
+<a name="l00435"></a><a class="code" href="structllvm_1_1GraphTraits_3_01Type_01_5_01_4.html#a91986410b66be3de1e26223b8590442f">00435</a>   <span class="keyword">static</span> <span class="keyword">inline</span> ChildIteratorType <a class="code" href="structllvm_1_1GraphTraits_3_01Type_01_5_01_4.html#a91986410b66be3de1e26223b8590442f">child_begin</a>(NodeType *N) {
+<a name="l00436"></a>00436     <span class="keywordflow">return</span> N-><a class="code" href="classllvm_1_1Type.html#a0db4aa0df793963e228e0f2fced9b64f">subtype_begin</a>();
+<a name="l00437"></a>00437   }
+<a name="l00438"></a><a class="code" href="structllvm_1_1GraphTraits_3_01Type_01_5_01_4.html#aa74a8a9e4cf9378ce332a94933fedc73">00438</a>   <span class="keyword">static</span> <span class="keyword">inline</span> ChildIteratorType <a class="code" href="structllvm_1_1GraphTraits_3_01Type_01_5_01_4.html#aa74a8a9e4cf9378ce332a94933fedc73">child_end</a>(NodeType *N) {
+<a name="l00439"></a>00439     <span class="keywordflow">return</span> N-><a class="code" href="classllvm_1_1Type.html#a7a3010c777d1e7f59410234e7256918c">subtype_end</a>();
+<a name="l00440"></a>00440   }
+<a name="l00441"></a>00441 };
+<a name="l00442"></a>00442 
+<a name="l00443"></a><a class="code" href="structllvm_1_1GraphTraits_3_01const_01Type_01_5_01_4.html">00443</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1GraphTraits.html">GraphTraits</a><const <a class="code" href="classllvm_1_1Type.html">Type</a>*> {
+<a name="l00444"></a><a class="code" href="structllvm_1_1GraphTraits_3_01const_01Type_01_5_01_4.html#aeb55b2f9cd8c87849e17e00c3489566e">00444</a>   <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1Type.html">Type</a> <a class="code" href="structllvm_1_1GraphTraits_3_01const_01Type_01_5_01_4.html#aeb55b2f9cd8c87849e17e00c3489566e">NodeType</a>;
+<a name="l00445"></a><a class="code" href="structllvm_1_1GraphTraits_3_01const_01Type_01_5_01_4.html#aba6748c28a154dcb6bfd508fcf8604d1">00445</a>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1Type.html#a10f976e78960c68188a4c2e35bc7db5e">Type::subtype_iterator</a> <a class="code" href="structllvm_1_1GraphTraits_3_01const_01Type_01_5_01_4.html#aba6748c28a154dcb6bfd508fcf8604d1">ChildIteratorType</a>;
+<a name="l00446"></a>00446 
+<a name="l00447"></a><a class="code" href="structllvm_1_1GraphTraits_3_01const_01Type_01_5_01_4.html#afaa7695c873a0f6560c713bda4d8ec2e">00447</a>   <span class="keyword">static</span> <span class="keyword">inline</span> NodeType *<a class="code" href="structllvm_1_1GraphTraits_3_01const_01Type_01_5_01_4.html#afaa7695c873a0f6560c713bda4d8ec2e">getEntryNode</a>(NodeType *T) { <span class="keywordflow">return</span> T; }
+<a name="l00448"></a><a class="code" href="structllvm_1_1GraphTraits_3_01const_01Type_01_5_01_4.html#a3de0fd6dc7cb6a4c7a2fd8fb1fc883cc">00448</a>   <span class="keyword">static</span> <span class="keyword">inline</span> ChildIteratorType <a class="code" href="structllvm_1_1GraphTraits_3_01const_01Type_01_5_01_4.html#a3de0fd6dc7cb6a4c7a2fd8fb1fc883cc">child_begin</a>(NodeType *N) {
+<a name="l00449"></a>00449     <span class="keywordflow">return</span> N-><a class="code" href="classllvm_1_1Type.html#a0db4aa0df793963e228e0f2fced9b64f">subtype_begin</a>();
+<a name="l00450"></a>00450   }
+<a name="l00451"></a><a class="code" href="structllvm_1_1GraphTraits_3_01const_01Type_01_5_01_4.html#aaa80694c506ff065b45150f0b54d1c08">00451</a>   <span class="keyword">static</span> <span class="keyword">inline</span> ChildIteratorType <a class="code" href="structllvm_1_1GraphTraits_3_01const_01Type_01_5_01_4.html#aaa80694c506ff065b45150f0b54d1c08">child_end</a>(NodeType *N) {
+<a name="l00452"></a>00452     <span class="keywordflow">return</span> N-><a class="code" href="classllvm_1_1Type.html#a7a3010c777d1e7f59410234e7256918c">subtype_end</a>();
+<a name="l00453"></a>00453   }
+<a name="l00454"></a>00454 };
+<a name="l00455"></a>00455 
+<a name="l00456"></a>00456 } <span class="comment">// End llvm namespace</span>
+<a name="l00457"></a>00457 
+<a name="l00458"></a>00458 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:05 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/UnifyFunctionExitNodes_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/UnifyFunctionExitNodes_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/UnifyFunctionExitNodes_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/UnifyFunctionExitNodes_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="UnifyFunctionExitNodes.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="LinkAllPasses.h",height=0.2,width=0.4,color="black",URL="$LinkAllPasses_8h.html"];
+  Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="LowerSwitch.cpp",height=0.2,width=0.4,color="black",URL="$LowerSwitch_8cpp.html"];
+  Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="Mem2Reg.cpp",height=0.2,width=0.4,color="black",URL="$Mem2Reg_8cpp.html"];
+  Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="UnifyFunctionExitNodes.cpp",height=0.2,width=0.4,color="black",URL="$UnifyFunctionExitNodes_8cpp.html"];
+}

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

Added: www-releases/trunk/3.2/docs/doxygen/html/UniqueVector_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/UniqueVector_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/UniqueVector_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/UniqueVector_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,85 @@
+<!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: UniqueVector.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">UniqueVector.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include <cassert></code><br/>
+<code>#include <map></code><br/>
+<code>#include <vector></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for UniqueVector.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="UniqueVector_8h__incl.png" border="0" usemap="#UniqueVector_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="UniqueVector_8h__dep__incl.png" border="0" usemap="#UniqueVector_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="UniqueVector_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_1UniqueVector.html">llvm::UniqueVector< T ></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: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/UniqueVector_8h__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/UniqueVector_8h__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/UniqueVector_8h__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/UniqueVector_8h__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+d9a0f2636f6ce8986a112e39778b3e1d
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/Unix_2Memory_8inc_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Unix_2Memory_8inc_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Unix_2Memory_8inc_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Unix_2Memory_8inc_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,389 @@
+<!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: Memory.inc 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_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+      <li class="navelem"><a class="el" href="dir_9bfd0d32942a152553dfbba6cb23ecb5.html">Unix</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Unix/Memory.inc</div>  </div>
+</div>
+<div class="contents">
+<a href="Unix_2Memory_8inc.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- Unix/Memory.cpp - Generic UNIX System Configuration ------*- 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 some functions for various memory management utilities.</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="Unix_8h.html">Unix.h</a>"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="DataTypes_8h.html">llvm/Support/DataTypes.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="ErrorHandling_8h.html">llvm/Support/ErrorHandling.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="Process_8h.html">llvm/Support/Process.h</a>"</span>
+<a name="l00018"></a>00018 
+<a name="l00019"></a>00019 <span class="preprocessor">#ifdef HAVE_SYS_MMAN_H</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#include <sys/mman.h></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#endif</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#ifdef __APPLE__</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#include <mach/mach.h></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#endif</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#if defined(__mips__)</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#  if defined(__OpenBSD__)</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#    include <mips64/sysarch.h></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#  else</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#    include <sys/cachectl.h></span>
+<a name="l00032"></a>00032 <span class="preprocessor">#  endif</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span>
+<a name="l00035"></a>00035 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> <span class="keywordtype">void</span> sys_icache_invalidate(<span class="keyword">const</span> <span class="keywordtype">void</span> *Addr, <span class="keywordtype">size_t</span> len);
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 <span class="keyword">namespace </span>{
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039 <span class="keywordtype">int</span> getPosixProtectionFlags(<span class="keywordtype">unsigned</span> Flags) {
+<a name="l00040"></a>00040   <span class="keywordflow">switch</span> (Flags) {
+<a name="l00041"></a>00041   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#a548f317b89dc0bba738b89e5ce791395a02cae455b05abf1bfb1de69095e66417">llvm::sys::Memory::MF_READ</a>:
+<a name="l00042"></a>00042     <span class="keywordflow">return</span> PROT_READ;
+<a name="l00043"></a>00043   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#a548f317b89dc0bba738b89e5ce791395a83e34a8267f7acd88563e9d5a3ee7c25">llvm::sys::Memory::MF_WRITE</a>:
+<a name="l00044"></a>00044     <span class="keywordflow">return</span> PROT_WRITE;
+<a name="l00045"></a>00045   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#a548f317b89dc0bba738b89e5ce791395a02cae455b05abf1bfb1de69095e66417">llvm::sys::Memory::MF_READ</a>|<a class="code" href="classllvm_1_1sys_1_1Memory.html#a548f317b89dc0bba738b89e5ce791395a83e34a8267f7acd88563e9d5a3ee7c25">llvm::sys::Memory::MF_WRITE</a>:
+<a name="l00046"></a>00046     <span class="keywordflow">return</span> PROT_READ | PROT_WRITE;
+<a name="l00047"></a>00047   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#a548f317b89dc0bba738b89e5ce791395a02cae455b05abf1bfb1de69095e66417">llvm::sys::Memory::MF_READ</a>|<a class="code" href="classllvm_1_1sys_1_1Memory.html#a548f317b89dc0bba738b89e5ce791395a72200d7026f0978efe86fc34f4cba76e">llvm::sys::Memory::MF_EXEC</a>:
+<a name="l00048"></a>00048     <span class="keywordflow">return</span> PROT_READ | PROT_EXEC;
+<a name="l00049"></a>00049   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#a548f317b89dc0bba738b89e5ce791395a02cae455b05abf1bfb1de69095e66417">llvm::sys::Memory::MF_READ</a> |
+<a name="l00050"></a>00050    <a class="code" href="classllvm_1_1sys_1_1Memory.html#a548f317b89dc0bba738b89e5ce791395a83e34a8267f7acd88563e9d5a3ee7c25">llvm::sys::Memory::MF_WRITE</a> |
+<a name="l00051"></a>00051    <a class="code" href="classllvm_1_1sys_1_1Memory.html#a548f317b89dc0bba738b89e5ce791395a72200d7026f0978efe86fc34f4cba76e">llvm::sys::Memory::MF_EXEC</a>:
+<a name="l00052"></a>00052     <span class="keywordflow">return</span> PROT_READ | PROT_WRITE | PROT_EXEC;
+<a name="l00053"></a>00053   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#a548f317b89dc0bba738b89e5ce791395a72200d7026f0978efe86fc34f4cba76e">llvm::sys::Memory::MF_EXEC</a>:
+<a name="l00054"></a>00054     <span class="keywordflow">return</span> PROT_EXEC;
+<a name="l00055"></a>00055   <span class="keywordflow">default</span>:
+<a name="l00056"></a>00056     <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Illegal memory protection flag specified!"</span>);
+<a name="l00057"></a>00057   }
+<a name="l00058"></a>00058   <span class="comment">// Provide a default return value as required by some compilers.</span>
+<a name="l00059"></a>00059   <span class="keywordflow">return</span> PROT_NONE;
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062 } <span class="comment">// namespace</span>
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064 <span class="keyword">namespace </span>llvm {
+<a name="l00065"></a>00065 <span class="keyword">namespace </span>sys {
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067 MemoryBlock
+<a name="l00068"></a>00068 <a class="code" href="classllvm_1_1sys_1_1Memory.html#ae349d468ba5eb1c52e8fa72877337e8a" title="Allocate mapped memory.">Memory::allocateMappedMemory</a>(<span class="keywordtype">size_t</span> NumBytes,
+<a name="l00069"></a>00069                              <span class="keyword">const</span> MemoryBlock *<span class="keyword">const</span> NearBlock,
+<a name="l00070"></a>00070                              <span class="keywordtype">unsigned</span> PFlags,
+<a name="l00071"></a>00071                              error_code &EC) {
+<a name="l00072"></a>00072   EC = <a class="code" href="classllvm_1_1error__code.html#ab1dc74db82ce9421e6c5f5f4df574aa8">error_code::success</a>();
+<a name="l00073"></a>00073   <span class="keywordflow">if</span> (NumBytes == 0)
+<a name="l00074"></a>00074     <span class="keywordflow">return</span> MemoryBlock();
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> PageSize = <a class="code" href="classllvm_1_1sys_1_1Process.html#a353ba15e22ed1084a430e440dc14b756" title="Get the virtual memory page size.">Process::GetPageSize</a>();
+<a name="l00077"></a>00077   <span class="keyword">const</span> <span class="keywordtype">size_t</span> NumPages = (NumBytes+PageSize-1)/PageSize;
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079   <span class="keywordtype">int</span> fd = -1;
+<a name="l00080"></a>00080 <span class="preprocessor">#ifdef NEED_DEV_ZERO_FOR_MMAP</span>
+<a name="l00081"></a>00081 <span class="preprocessor"></span>  <span class="keyword">static</span> <span class="keywordtype">int</span> zero_fd = open(<span class="stringliteral">"/dev/zero"</span>, O_RDWR);
+<a name="l00082"></a>00082   <span class="keywordflow">if</span> (zero_fd == -1) {
+<a name="l00083"></a>00083     EC = error_code(errno, <a class="code" href="namespacellvm.html#a1e6576716f1c75095457eff6bca7239a">system_category</a>());
+<a name="l00084"></a>00084     <span class="keywordflow">return</span> MemoryBlock();
+<a name="l00085"></a>00085   }
+<a name="l00086"></a>00086   fd = zero_fd;
+<a name="l00087"></a>00087 <span class="preprocessor">#endif</span>
+<a name="l00088"></a>00088 <span class="preprocessor"></span>
+<a name="l00089"></a>00089   <span class="keywordtype">int</span> MMFlags = MAP_PRIVATE |
+<a name="l00090"></a>00090 <span class="preprocessor">#ifdef HAVE_MMAP_ANONYMOUS</span>
+<a name="l00091"></a>00091 <span class="preprocessor"></span>  MAP_ANONYMOUS
+<a name="l00092"></a>00092 <span class="preprocessor">#else</span>
+<a name="l00093"></a>00093 <span class="preprocessor"></span>  MAP_ANON
+<a name="l00094"></a>00094 <span class="preprocessor">#endif</span>
+<a name="l00095"></a>00095 <span class="preprocessor"></span>  ; <span class="comment">// Ends statement above</span>
+<a name="l00096"></a>00096 
+<a name="l00097"></a>00097   <span class="keywordtype">int</span> Protect = getPosixProtectionFlags(PFlags);
+<a name="l00098"></a>00098 
+<a name="l00099"></a>00099   <span class="comment">// Use any near hint and the page size to set a page-aligned starting address</span>
+<a name="l00100"></a>00100   uintptr_t Start = NearBlock ? <span class="keyword">reinterpret_cast<</span>uintptr_t<span class="keyword">></span>(NearBlock->base()) +
+<a name="l00101"></a>00101                                       NearBlock->size() : 0;
+<a name="l00102"></a>00102   <span class="keywordflow">if</span> (Start && Start % PageSize)
+<a name="l00103"></a>00103     Start += PageSize - Start % PageSize;
+<a name="l00104"></a>00104 
+<a name="l00105"></a>00105   <span class="keywordtype">void</span> *Addr = ::mmap(reinterpret_cast<void*>(Start), PageSize*NumPages,
+<a name="l00106"></a>00106                       Protect, MMFlags, fd, 0);
+<a name="l00107"></a>00107   <span class="keywordflow">if</span> (Addr == MAP_FAILED) {
+<a name="l00108"></a>00108     <span class="keywordflow">if</span> (NearBlock) <span class="comment">//Try again without a near hint</span>
+<a name="l00109"></a>00109       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#ae349d468ba5eb1c52e8fa72877337e8a" title="Allocate mapped memory.">allocateMappedMemory</a>(NumBytes, 0, PFlags, EC);
+<a name="l00110"></a>00110 
+<a name="l00111"></a>00111     EC = error_code(errno, <a class="code" href="namespacellvm.html#a1e6576716f1c75095457eff6bca7239a">system_category</a>());
+<a name="l00112"></a>00112     <span class="keywordflow">return</span> MemoryBlock();
+<a name="l00113"></a>00113   }
+<a name="l00114"></a>00114 
+<a name="l00115"></a>00115   MemoryBlock Result;
+<a name="l00116"></a>00116   Result.Address = Addr;
+<a name="l00117"></a>00117   Result.Size = NumPages*PageSize;
+<a name="l00118"></a>00118 
+<a name="l00119"></a>00119   <span class="keywordflow">if</span> (PFlags & <a class="code" href="classllvm_1_1sys_1_1Memory.html#a548f317b89dc0bba738b89e5ce791395a72200d7026f0978efe86fc34f4cba76e">MF_EXEC</a>)
+<a name="l00120"></a>00120     <a class="code" href="classllvm_1_1sys_1_1Memory.html#a5cfd4d2a8227a3f9ca0667f42f05f20b">Memory::InvalidateInstructionCache</a>(Result.Address, Result.Size);
+<a name="l00121"></a>00121 
+<a name="l00122"></a>00122   <span class="keywordflow">return</span> Result;
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125 error_code
+<a name="l00126"></a>00126 <a class="code" href="classllvm_1_1sys_1_1Memory.html#afd291382177a42501912689057b454e6" title="Release mapped memory.">Memory::releaseMappedMemory</a>(MemoryBlock &M) {
+<a name="l00127"></a>00127   <span class="keywordflow">if</span> (M.Address == 0 || M.Size == 0)
+<a name="l00128"></a>00128     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html#ab1dc74db82ce9421e6c5f5f4df574aa8">error_code::success</a>();
+<a name="l00129"></a>00129 
+<a name="l00130"></a>00130   <span class="keywordflow">if</span> (0 != ::munmap(M.Address, M.Size))
+<a name="l00131"></a>00131     <span class="keywordflow">return</span> error_code(errno, <a class="code" href="namespacellvm.html#a1e6576716f1c75095457eff6bca7239a">system_category</a>());
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133   M.Address = 0;
+<a name="l00134"></a>00134   M.Size = 0;
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html#ab1dc74db82ce9421e6c5f5f4df574aa8">error_code::success</a>();
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 
+<a name="l00139"></a>00139 error_code
+<a name="l00140"></a>00140 <a class="code" href="classllvm_1_1sys_1_1Memory.html#a48003fdbe4bfdd8f283e7c29c82aebb1" title="Set memory protection state.">Memory::protectMappedMemory</a>(<span class="keyword">const</span> MemoryBlock &M, <span class="keywordtype">unsigned</span> Flags) {
+<a name="l00141"></a>00141   <span class="keywordflow">if</span> (M.Address == 0 || M.Size == 0)
+<a name="l00142"></a>00142     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html#ab1dc74db82ce9421e6c5f5f4df574aa8">error_code::success</a>();
+<a name="l00143"></a>00143 
+<a name="l00144"></a>00144   <span class="keywordflow">if</span> (!Flags)
+<a name="l00145"></a>00145     <span class="keywordflow">return</span> error_code(EINVAL, <a class="code" href="namespacellvm.html#a1d8dc6cc5af15804cc75a8b5736b8d3e">generic_category</a>());
+<a name="l00146"></a>00146 
+<a name="l00147"></a>00147   <span class="keywordtype">int</span> Protect = getPosixProtectionFlags(Flags);
+<a name="l00148"></a>00148 
+<a name="l00149"></a>00149   <span class="keywordtype">int</span> Result = ::mprotect(M.Address, M.Size, Protect);
+<a name="l00150"></a>00150   <span class="keywordflow">if</span> (Result != 0)
+<a name="l00151"></a>00151     <span class="keywordflow">return</span> error_code(errno, <a class="code" href="namespacellvm.html#a1e6576716f1c75095457eff6bca7239a">system_category</a>());
+<a name="l00152"></a>00152 
+<a name="l00153"></a>00153   <span class="keywordflow">if</span> (Flags & <a class="code" href="classllvm_1_1sys_1_1Memory.html#a548f317b89dc0bba738b89e5ce791395a72200d7026f0978efe86fc34f4cba76e">MF_EXEC</a>)
+<a name="l00154"></a>00154     <a class="code" href="classllvm_1_1sys_1_1Memory.html#a5cfd4d2a8227a3f9ca0667f42f05f20b">Memory::InvalidateInstructionCache</a>(M.Address, M.Size);
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html#ab1dc74db82ce9421e6c5f5f4df574aa8">error_code::success</a>();
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 <span class="comment"></span>
+<a name="l00159"></a>00159 <span class="comment">/// AllocateRWX - Allocate a slab of memory with read/write/execute</span>
+<a name="l00160"></a>00160 <span class="comment">/// permissions.  This is typically used for JIT applications where we want</span>
+<a name="l00161"></a>00161 <span class="comment">/// to emit code to the memory then jump to it.  Getting this type of memory</span>
+<a name="l00162"></a>00162 <span class="comment">/// is very OS specific.</span>
+<a name="l00163"></a>00163 <span class="comment">///</span>
+<a name="l00164"></a>00164 <span class="comment"></span>MemoryBlock
+<a name="l00165"></a>00165 <a class="code" href="classllvm_1_1sys_1_1Memory.html#ae0f15a67f97c9432ee4170820360aab5" title="Allocate Read/Write/Execute memory.">Memory::AllocateRWX</a>(<span class="keywordtype">size_t</span> NumBytes, <span class="keyword">const</span> MemoryBlock* NearBlock,
+<a name="l00166"></a>00166                     std::string *ErrMsg) {
+<a name="l00167"></a>00167   <span class="keywordflow">if</span> (NumBytes == 0) <span class="keywordflow">return</span> MemoryBlock();
+<a name="l00168"></a>00168 
+<a name="l00169"></a>00169   <span class="keywordtype">size_t</span> pageSize = <a class="code" href="classllvm_1_1sys_1_1Process.html#a353ba15e22ed1084a430e440dc14b756" title="Get the virtual memory page size.">Process::GetPageSize</a>();
+<a name="l00170"></a>00170   <span class="keywordtype">size_t</span> NumPages = (NumBytes+pageSize-1)/pageSize;
+<a name="l00171"></a>00171 
+<a name="l00172"></a>00172   <span class="keywordtype">int</span> fd = -1;
+<a name="l00173"></a>00173 <span class="preprocessor">#ifdef NEED_DEV_ZERO_FOR_MMAP</span>
+<a name="l00174"></a>00174 <span class="preprocessor"></span>  <span class="keyword">static</span> <span class="keywordtype">int</span> zero_fd = open(<span class="stringliteral">"/dev/zero"</span>, O_RDWR);
+<a name="l00175"></a>00175   <span class="keywordflow">if</span> (zero_fd == -1) {
+<a name="l00176"></a>00176     <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"Can't open /dev/zero device"</span>);
+<a name="l00177"></a>00177     <span class="keywordflow">return</span> MemoryBlock();
+<a name="l00178"></a>00178   }
+<a name="l00179"></a>00179   fd = zero_fd;
+<a name="l00180"></a>00180 <span class="preprocessor">#endif</span>
+<a name="l00181"></a>00181 <span class="preprocessor"></span>
+<a name="l00182"></a>00182   <span class="keywordtype">int</span> flags = MAP_PRIVATE |
+<a name="l00183"></a>00183 <span class="preprocessor">#ifdef HAVE_MMAP_ANONYMOUS</span>
+<a name="l00184"></a>00184 <span class="preprocessor"></span>  MAP_ANONYMOUS
+<a name="l00185"></a>00185 <span class="preprocessor">#else</span>
+<a name="l00186"></a>00186 <span class="preprocessor"></span>  MAP_ANON
+<a name="l00187"></a>00187 <span class="preprocessor">#endif</span>
+<a name="l00188"></a>00188 <span class="preprocessor"></span>  ;
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190   <span class="keywordtype">void</span>* start = NearBlock ? (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)NearBlock->base() +
+<a name="l00191"></a>00191                             NearBlock->size() : 0;
+<a name="l00192"></a>00192 
+<a name="l00193"></a>00193 <span class="preprocessor">#if defined(__APPLE__) && defined(__arm__)</span>
+<a name="l00194"></a>00194 <span class="preprocessor"></span>  <span class="keywordtype">void</span> *pa = ::mmap(start, pageSize*NumPages, PROT_READ|PROT_EXEC,
+<a name="l00195"></a>00195                     flags, fd, 0);
+<a name="l00196"></a>00196 <span class="preprocessor">#else</span>
+<a name="l00197"></a>00197 <span class="preprocessor"></span>  <span class="keywordtype">void</span> *pa = ::mmap(start, pageSize*NumPages, PROT_READ|PROT_WRITE|PROT_EXEC,
+<a name="l00198"></a>00198                     flags, fd, 0);
+<a name="l00199"></a>00199 <span class="preprocessor">#endif</span>
+<a name="l00200"></a>00200 <span class="preprocessor"></span>  <span class="keywordflow">if</span> (pa == MAP_FAILED) {
+<a name="l00201"></a>00201     <span class="keywordflow">if</span> (NearBlock) <span class="comment">//Try again without a near hint</span>
+<a name="l00202"></a>00202       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#ae0f15a67f97c9432ee4170820360aab5" title="Allocate Read/Write/Execute memory.">AllocateRWX</a>(NumBytes, 0);
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204     <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"Can't allocate RWX Memory"</span>);
+<a name="l00205"></a>00205     <span class="keywordflow">return</span> MemoryBlock();
+<a name="l00206"></a>00206   }
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208 <span class="preprocessor">#if defined(__APPLE__) && defined(__arm__)</span>
+<a name="l00209"></a>00209 <span class="preprocessor"></span>  kern_return_t kr = vm_protect(mach_task_self(), (vm_address_t)pa,
+<a name="l00210"></a>00210                                 (vm_size_t)(pageSize*NumPages), 0,
+<a name="l00211"></a>00211                                 VM_PROT_READ | VM_PROT_EXECUTE | VM_PROT_COPY);
+<a name="l00212"></a>00212   <span class="keywordflow">if</span> (KERN_SUCCESS != kr) {
+<a name="l00213"></a>00213     <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"vm_protect max RX failed"</span>);
+<a name="l00214"></a>00214     <span class="keywordflow">return</span> MemoryBlock();
+<a name="l00215"></a>00215   }
+<a name="l00216"></a>00216 
+<a name="l00217"></a>00217   kr = vm_protect(mach_task_self(), (vm_address_t)pa,
+<a name="l00218"></a>00218                   (vm_size_t)(pageSize*NumPages), 0,
+<a name="l00219"></a>00219                   VM_PROT_READ | VM_PROT_WRITE);
+<a name="l00220"></a>00220   <span class="keywordflow">if</span> (KERN_SUCCESS != kr) {
+<a name="l00221"></a>00221     <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"vm_protect RW failed"</span>);
+<a name="l00222"></a>00222     <span class="keywordflow">return</span> MemoryBlock();
+<a name="l00223"></a>00223   }
+<a name="l00224"></a>00224 <span class="preprocessor">#endif</span>
+<a name="l00225"></a>00225 <span class="preprocessor"></span>
+<a name="l00226"></a>00226   MemoryBlock result;
+<a name="l00227"></a>00227   result.Address = pa;
+<a name="l00228"></a>00228   result.Size = NumPages*pageSize;
+<a name="l00229"></a>00229 
+<a name="l00230"></a>00230   <span class="keywordflow">return</span> result;
+<a name="l00231"></a>00231 }
+<a name="l00232"></a>00232 
+<a name="l00233"></a>00233 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#ae7de707667a8c7de391ab5cab789b5eb" title="Release Read/Write/Execute memory.">Memory::ReleaseRWX</a>(MemoryBlock &M, std::string *ErrMsg) {
+<a name="l00234"></a>00234   <span class="keywordflow">if</span> (M.Address == 0 || M.Size == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00235"></a>00235   <span class="keywordflow">if</span> (0 != ::munmap(M.Address, M.Size))
+<a name="l00236"></a>00236     <span class="keywordflow">return</span> <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"Can't release RWX Memory"</span>);
+<a name="l00237"></a>00237   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00238"></a>00238 }
+<a name="l00239"></a>00239 
+<a name="l00240"></a>00240 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#a9dee85d92a958b5b82049e9ed3afbd20">Memory::setWritable</a> (MemoryBlock &M, std::string *ErrMsg) {
+<a name="l00241"></a>00241 <span class="preprocessor">#if defined(__APPLE__) && defined(__arm__)</span>
+<a name="l00242"></a>00242 <span class="preprocessor"></span>  <span class="keywordflow">if</span> (M.Address == 0 || M.Size == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00243"></a>00243   <a class="code" href="classllvm_1_1sys_1_1Memory.html#a5cfd4d2a8227a3f9ca0667f42f05f20b">Memory::InvalidateInstructionCache</a>(M.Address, M.Size);
+<a name="l00244"></a>00244   kern_return_t kr = vm_protect(mach_task_self(), (vm_address_t)M.Address,
+<a name="l00245"></a>00245     (vm_size_t)M.Size, 0, VM_PROT_READ | VM_PROT_WRITE);
+<a name="l00246"></a>00246   <span class="keywordflow">return</span> KERN_SUCCESS == kr;
+<a name="l00247"></a>00247 <span class="preprocessor">#else</span>
+<a name="l00248"></a>00248 <span class="preprocessor"></span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00249"></a>00249 <span class="preprocessor">#endif</span>
+<a name="l00250"></a>00250 <span class="preprocessor"></span>}
+<a name="l00251"></a>00251 
+<a name="l00252"></a>00252 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#acf4d418979406a99e7230468647b4035">Memory::setExecutable</a> (MemoryBlock &M, std::string *ErrMsg) {
+<a name="l00253"></a>00253 <span class="preprocessor">#if defined(__APPLE__) && defined(__arm__)</span>
+<a name="l00254"></a>00254 <span class="preprocessor"></span>  <span class="keywordflow">if</span> (M.Address == 0 || M.Size == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00255"></a>00255   <a class="code" href="classllvm_1_1sys_1_1Memory.html#a5cfd4d2a8227a3f9ca0667f42f05f20b">Memory::InvalidateInstructionCache</a>(M.Address, M.Size);
+<a name="l00256"></a>00256   kern_return_t kr = vm_protect(mach_task_self(), (vm_address_t)M.Address,
+<a name="l00257"></a>00257     (vm_size_t)M.Size, 0, VM_PROT_READ | VM_PROT_EXECUTE | VM_PROT_COPY);
+<a name="l00258"></a>00258   <span class="keywordflow">return</span> KERN_SUCCESS == kr;
+<a name="l00259"></a>00259 <span class="preprocessor">#else</span>
+<a name="l00260"></a>00260 <span class="preprocessor"></span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
+<a name="l00262"></a>00262 <span class="preprocessor"></span>}
+<a name="l00263"></a>00263 
+<a name="l00264"></a>00264 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#af1a0518731f5ae975e8223c404752e8d">Memory::setRangeWritable</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *Addr, <span class="keywordtype">size_t</span> Size) {
+<a name="l00265"></a>00265 <span class="preprocessor">#if defined(__APPLE__) && defined(__arm__)</span>
+<a name="l00266"></a>00266 <span class="preprocessor"></span>  kern_return_t kr = vm_protect(mach_task_self(), (vm_address_t)Addr,
+<a name="l00267"></a>00267                                 (vm_size_t)Size, 0,
+<a name="l00268"></a>00268                                 VM_PROT_READ | VM_PROT_WRITE);
+<a name="l00269"></a>00269   <span class="keywordflow">return</span> KERN_SUCCESS == kr;
+<a name="l00270"></a>00270 <span class="preprocessor">#else</span>
+<a name="l00271"></a>00271 <span class="preprocessor"></span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00272"></a>00272 <span class="preprocessor">#endif</span>
+<a name="l00273"></a>00273 <span class="preprocessor"></span>}
+<a name="l00274"></a>00274 
+<a name="l00275"></a>00275 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#a398a20c2c6c86b43e3982b120bb454eb">Memory::setRangeExecutable</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *Addr, <span class="keywordtype">size_t</span> Size) {
+<a name="l00276"></a>00276 <span class="preprocessor">#if defined(__APPLE__) && defined(__arm__)</span>
+<a name="l00277"></a>00277 <span class="preprocessor"></span>  kern_return_t kr = vm_protect(mach_task_self(), (vm_address_t)Addr,
+<a name="l00278"></a>00278                                 (vm_size_t)Size, 0,
+<a name="l00279"></a>00279                                 VM_PROT_READ | VM_PROT_EXECUTE | VM_PROT_COPY);
+<a name="l00280"></a>00280   <span class="keywordflow">return</span> KERN_SUCCESS == kr;
+<a name="l00281"></a>00281 <span class="preprocessor">#else</span>
+<a name="l00282"></a>00282 <span class="preprocessor"></span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00283"></a>00283 <span class="preprocessor">#endif</span>
+<a name="l00284"></a>00284 <span class="preprocessor"></span>}
+<a name="l00285"></a>00285 <span class="comment"></span>
+<a name="l00286"></a>00286 <span class="comment">/// InvalidateInstructionCache - Before the JIT can run a block of code</span>
+<a name="l00287"></a>00287 <span class="comment">/// that has been emitted it must invalidate the instruction cache on some</span>
+<a name="l00288"></a>00288 <span class="comment">/// platforms.</span>
+<a name="l00289"></a>00289 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html#a5cfd4d2a8227a3f9ca0667f42f05f20b">Memory::InvalidateInstructionCache</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *Addr,
+<a name="l00290"></a>00290                                         <span class="keywordtype">size_t</span> Len) {
+<a name="l00291"></a>00291 
+<a name="l00292"></a>00292 <span class="comment">// icache invalidation for PPC and ARM.</span>
+<a name="l00293"></a>00293 <span class="preprocessor">#if defined(__APPLE__)</span>
+<a name="l00294"></a>00294 <span class="preprocessor"></span>
+<a name="l00295"></a>00295 <span class="preprocessor">#  if (defined(__POWERPC__) || defined (__ppc__) || \</span>
+<a name="l00296"></a>00296 <span class="preprocessor">     defined(_POWER) || defined(_ARCH_PPC)) || defined(__arm__)</span>
+<a name="l00297"></a>00297 <span class="preprocessor"></span>  sys_icache_invalidate(const_cast<void *>(Addr), Len);
+<a name="l00298"></a>00298 <span class="preprocessor">#  endif</span>
+<a name="l00299"></a>00299 <span class="preprocessor"></span>
+<a name="l00300"></a>00300 <span class="preprocessor">#else</span>
+<a name="l00301"></a>00301 <span class="preprocessor"></span>
+<a name="l00302"></a>00302 <span class="preprocessor">#  if (defined(__POWERPC__) || defined (__ppc__) || \</span>
+<a name="l00303"></a>00303 <span class="preprocessor">       defined(_POWER) || defined(_ARCH_PPC)) && defined(__GNUC__)</span>
+<a name="l00304"></a>00304 <span class="preprocessor"></span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> LineSize = 32;
+<a name="l00305"></a>00305 
+<a name="l00306"></a>00306   <span class="keyword">const</span> <a class="code" href="classintptr__t.html">intptr_t</a> Mask = ~(LineSize - 1);
+<a name="l00307"></a>00307   <span class="keyword">const</span> <a class="code" href="classintptr__t.html">intptr_t</a> StartLine = ((<a class="code" href="classintptr__t.html">intptr_t</a>) Addr) & Mask;
+<a name="l00308"></a>00308   <span class="keyword">const</span> <a class="code" href="classintptr__t.html">intptr_t</a> EndLine = ((<a class="code" href="classintptr__t.html">intptr_t</a>) Addr + Len + LineSize - 1) & Mask;
+<a name="l00309"></a>00309 
+<a name="l00310"></a>00310   <span class="keywordflow">for</span> (<a class="code" href="classintptr__t.html">intptr_t</a> Line = StartLine; Line < EndLine; Line += LineSize)
+<a name="l00311"></a>00311     <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">"dcbf 0, %0"</span> : : <span class="stringliteral">"r"</span>(Line));
+<a name="l00312"></a>00312   <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">"sync"</span>);
+<a name="l00313"></a>00313 
+<a name="l00314"></a>00314   <span class="keywordflow">for</span> (<a class="code" href="classintptr__t.html">intptr_t</a> Line = StartLine; Line < EndLine; Line += LineSize)
+<a name="l00315"></a>00315     <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">"icbi 0, %0"</span> : : <span class="stringliteral">"r"</span>(Line));
+<a name="l00316"></a>00316   <span class="keyword">asm</span> <span class="keyword">volatile</span>(<span class="stringliteral">"isync"</span>);
+<a name="l00317"></a>00317 <span class="preprocessor">#  elif defined(__arm__) && defined(__GNUC__)</span>
+<a name="l00318"></a>00318 <span class="preprocessor"></span>  <span class="comment">// FIXME: Can we safely always call this for __GNUC__ everywhere?</span>
+<a name="l00319"></a>00319   <span class="keyword">const</span> <span class="keywordtype">char</span> *Start = <span class="keyword">static_cast<</span><span class="keyword">const </span><span class="keywordtype">char</span> *<span class="keyword">></span>(Addr);
+<a name="l00320"></a>00320   <span class="keyword">const</span> <span class="keywordtype">char</span> *End = Start + Len;
+<a name="l00321"></a>00321   __clear_cache(const_cast<char *>(Start), const_cast<char *>(End));
+<a name="l00322"></a>00322 <span class="preprocessor">#  elif defined(__mips__)</span>
+<a name="l00323"></a>00323 <span class="preprocessor"></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *Start = <span class="keyword">static_cast<</span><span class="keyword">const </span><span class="keywordtype">char</span> *<span class="keyword">></span>(Addr);
+<a name="l00324"></a>00324   cacheflush(const_cast<char *>(Start), Len, BCACHE);
+<a name="l00325"></a>00325 <span class="preprocessor">#  endif</span>
+<a name="l00326"></a>00326 <span class="preprocessor"></span>
+<a name="l00327"></a>00327 <span class="preprocessor">#endif  // end apple</span>
+<a name="l00328"></a>00328 <span class="preprocessor"></span>
+<a name="l00329"></a>00329   <a class="code" href="namespacellvm_1_1sys.html#afa3960ac5c365a344036b4c068477468">ValgrindDiscardTranslations</a>(Addr, Len);
+<a name="l00330"></a>00330 }
+<a name="l00331"></a>00331 
+<a name="l00332"></a>00332 } <span class="comment">// namespace sys</span>
+<a name="l00333"></a>00333 } <span class="comment">// namespace llvm</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35: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/Unix_2Mutex_8inc_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Unix_2Mutex_8inc_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Unix_2Mutex_8inc_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Unix_2Mutex_8inc_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,99 @@
+<!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: Mutex.inc 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_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+      <li class="navelem"><a class="el" href="dir_9bfd0d32942a152553dfbba6cb23ecb5.html">Unix</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Unix/Mutex.inc</div>  </div>
+</div>
+<div class="contents">
+<a href="Unix_2Mutex_8inc.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- llvm/Support/Unix/Mutex.inc - Unix Mutex Implementation ---*- 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 implements the Unix specific (non-pthread) Mutex 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>00014 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00015"></a>00015 <span class="comment">//=== WARNING: Implementation here must contain only generic UNIX code that</span>
+<a name="l00016"></a>00016 <span class="comment">//===          is guaranteed to work on *all* UNIX variants.</span>
+<a name="l00017"></a>00017 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00018"></a>00018 
+<a name="l00019"></a>00019 <span class="keyword">namespace </span>llvm
+<a name="l00020"></a>00020 {
+<a name="l00021"></a>00021 <span class="keyword">using namespace </span>sys;
+<a name="l00022"></a>00022 
+<a name="l00023"></a>00023 <a class="code" href="classllvm_1_1sys_1_1MutexImpl.html#a848c4f6df1536cf80f4412994e778256" title="Default Constructor.">MutexImpl::MutexImpl</a>( <span class="keywordtype">bool</span> recursive)
+<a name="l00024"></a>00024 {
+<a name="l00025"></a>00025 }
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <a class="code" href="classllvm_1_1sys_1_1MutexImpl.html#a80a3bdc474894007f1db51408adaeec7" title="Destructor.">MutexImpl::~MutexImpl</a>()
+<a name="l00028"></a>00028 {
+<a name="l00029"></a>00029 }
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031 <span class="keywordtype">bool</span>
+<a name="l00032"></a>00032 <a class="code" href="classllvm_1_1sys_1_1MutexImpl.html#ae49a820a8bff477763a731f0f12a06a3" title="Unconditionally release the lock.">MutexImpl::release</a>()
+<a name="l00033"></a>00033 {
+<a name="l00034"></a>00034   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 <span class="keywordtype">bool</span>
+<a name="l00038"></a>00038 <a class="code" href="classllvm_1_1sys_1_1MutexImpl.html#adb5ad188814198aea0129b872045fb13" title="Try to acquire the lock.">MutexImpl::tryacquire</a>( <span class="keywordtype">void</span> )
+<a name="l00039"></a>00039 {
+<a name="l00040"></a>00040   <span class="keywordflow">return</span> <span class="keyword">true</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:36:16 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/Unix_2Process_8inc_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Unix_2Process_8inc_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Unix_2Process_8inc_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Unix_2Process_8inc_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,390 @@
+<!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: Process.inc 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_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+      <li class="navelem"><a class="el" href="dir_9bfd0d32942a152553dfbba6cb23ecb5.html">Unix</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Unix/Process.inc</div>  </div>
+</div>
+<div class="contents">
+<a href="Unix_2Process_8inc.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- Unix/Process.cpp - Unix Process Implementation --------- -*- 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 provides the generic Unix implementation of the Process 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>00014 <span class="preprocessor">#include "<a class="code" href="Unix_8h.html">Unix.h</a>"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="Hashing_8h.html">llvm/ADT/Hashing.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="TimeValue_8h.html">llvm/Support/TimeValue.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#ifdef HAVE_SYS_TIME_H</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#include <sys/time.h></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#endif</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#ifdef HAVE_SYS_RESOURCE_H</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#include <sys/resource.h></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#endif</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="comment">// DragonFlyBSD, OpenBSD, and Bitrig have deprecated <malloc.h> for</span>
+<a name="l00024"></a>00024 <span class="comment">// <stdlib.h> instead. Unix.h includes this for us already.</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#if defined(HAVE_MALLOC_H) && !defined(__DragonFly__) && \</span>
+<a name="l00026"></a>00026 <span class="preprocessor">    !defined(__OpenBSD__) && !defined(__Bitrig__)</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include <malloc.h></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#endif</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#ifdef HAVE_MALLOC_MALLOC_H</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include <malloc/malloc.h></span>
+<a name="l00031"></a>00031 <span class="preprocessor">#endif</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#ifdef HAVE_SYS_IOCTL_H</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#  include <sys/ioctl.h></span>
+<a name="l00034"></a>00034 <span class="preprocessor">#endif</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#ifdef HAVE_TERMIOS_H</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor">#  include <termios.h></span>
+<a name="l00037"></a>00037 <span class="preprocessor">#endif</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span>
+<a name="l00039"></a>00039 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00040"></a>00040 <span class="comment">//=== WARNING: Implementation here must contain only generic UNIX code that</span>
+<a name="l00041"></a>00041 <span class="comment">//===          is guaranteed to work on *all* UNIX variants.</span>
+<a name="l00042"></a>00042 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044 <span class="keyword">using namespace </span>llvm;
+<a name="l00045"></a>00045 <span class="keyword">using namespace </span>sys;
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047 <span class="keywordtype">unsigned</span>
+<a name="l00048"></a>00048 <a class="code" href="classllvm_1_1sys_1_1Process.html#a353ba15e22ed1084a430e440dc14b756" title="Get the virtual memory page size.">Process::GetPageSize</a>()
+<a name="l00049"></a>00049 {
+<a name="l00050"></a>00050 <span class="preprocessor">#if defined(__CYGWIN__)</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span>  <span class="comment">// On Cygwin, getpagesize() returns 64k but the page size for the purposes of</span>
+<a name="l00052"></a>00052   <span class="comment">// memory protection and mmap() is 4k.</span>
+<a name="l00053"></a>00053   <span class="comment">// See http://www.cygwin.com/ml/cygwin/2009-01/threads.html#00492</span>
+<a name="l00054"></a>00054   <span class="keyword">const</span> <span class="keywordtype">int</span> page_size = 0x1000;
+<a name="l00055"></a>00055 <span class="preprocessor">#elif defined(HAVE_GETPAGESIZE)</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span>  <span class="keyword">const</span> <span class="keywordtype">int</span> page_size = ::getpagesize();
+<a name="l00057"></a>00057 <span class="preprocessor">#elif defined(HAVE_SYSCONF)</span>
+<a name="l00058"></a>00058 <span class="preprocessor"></span>  <span class="keywordtype">long</span> page_size = ::sysconf(_SC_PAGE_SIZE);
+<a name="l00059"></a>00059 <span class="preprocessor">#else</span>
+<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="preprocessor">#warning Cannot get the page size on this machine</span>
+<a name="l00061"></a>00061 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00062"></a>00062 <span class="preprocessor"></span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span><span class="keyword">></span>(page_size);
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065 <span class="keywordtype">size_t</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#aefb2b72e3e500a8b559e5d8c265b40e6" title="Return process memory usage.">Process::GetMallocUsage</a>() {
+<a name="l00066"></a>00066 <span class="preprocessor">#if defined(HAVE_MALLINFO)</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span>  <span class="keyword">struct </span>mallinfo mi;
+<a name="l00068"></a>00068   mi = ::mallinfo();
+<a name="l00069"></a>00069   <span class="keywordflow">return</span> mi.uordblks;
+<a name="l00070"></a>00070 <span class="preprocessor">#elif defined(HAVE_MALLOC_ZONE_STATISTICS) && defined(HAVE_MALLOC_MALLOC_H)</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span>  malloc_statistics_t <a class="code" href="MachineBlockPlacement_8cpp.html#a086f939e29b718dc5a01e4bcfe6af2a1">Stats</a>;
+<a name="l00072"></a>00072   malloc_zone_statistics(malloc_default_zone(), &Stats);
+<a name="l00073"></a>00073   <span class="keywordflow">return</span> Stats.size_in_use;   <span class="comment">// darwin</span>
+<a name="l00074"></a>00074 <span class="preprocessor">#elif defined(HAVE_SBRK)</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span>  <span class="comment">// Note this is only an approximation and more closely resembles</span>
+<a name="l00076"></a>00076   <span class="comment">// the value returned by mallinfo in the arena field.</span>
+<a name="l00077"></a>00077   <span class="keyword">static</span> <span class="keywordtype">char</span> *StartOfMemory = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(::sbrk(0));
+<a name="l00078"></a>00078   <span class="keywordtype">char</span> *EndOfMemory = (<span class="keywordtype">char</span>*)sbrk(0);
+<a name="l00079"></a>00079   <span class="keywordflow">if</span> (EndOfMemory != ((<span class="keywordtype">char</span>*)-1) && StartOfMemory != ((<span class="keywordtype">char</span>*)-1))
+<a name="l00080"></a>00080     <span class="keywordflow">return</span> EndOfMemory - StartOfMemory;
+<a name="l00081"></a>00081   <span class="keywordflow">else</span>
+<a name="l00082"></a>00082     <span class="keywordflow">return</span> 0;
+<a name="l00083"></a>00083 <span class="preprocessor">#else</span>
+<a name="l00084"></a>00084 <span class="preprocessor"></span><span class="preprocessor">#warning Cannot get malloc info on this platform</span>
+<a name="l00085"></a>00085 <span class="preprocessor"></span>  <span class="keywordflow">return</span> 0;
+<a name="l00086"></a>00086 <span class="preprocessor">#endif</span>
+<a name="l00087"></a>00087 <span class="preprocessor"></span>}
+<a name="l00088"></a>00088 
+<a name="l00089"></a>00089 <span class="keywordtype">size_t</span>
+<a name="l00090"></a>00090 <a class="code" href="classllvm_1_1sys_1_1Process.html#acc1cfba7bc95c5576a50a811379491e4">Process::GetTotalMemoryUsage</a>()
+<a name="l00091"></a>00091 {
+<a name="l00092"></a>00092 <span class="preprocessor">#if defined(HAVE_MALLINFO)</span>
+<a name="l00093"></a>00093 <span class="preprocessor"></span>  <span class="keyword">struct </span>mallinfo mi = ::mallinfo();
+<a name="l00094"></a>00094   <span class="keywordflow">return</span> mi.uordblks + mi.hblkhd;
+<a name="l00095"></a>00095 <span class="preprocessor">#elif defined(HAVE_MALLOC_ZONE_STATISTICS) && defined(HAVE_MALLOC_MALLOC_H)</span>
+<a name="l00096"></a>00096 <span class="preprocessor"></span>  malloc_statistics_t <a class="code" href="MachineBlockPlacement_8cpp.html#a086f939e29b718dc5a01e4bcfe6af2a1">Stats</a>;
+<a name="l00097"></a>00097   malloc_zone_statistics(malloc_default_zone(), &Stats);
+<a name="l00098"></a>00098   <span class="keywordflow">return</span> Stats.size_allocated;   <span class="comment">// darwin</span>
+<a name="l00099"></a>00099 <span class="preprocessor">#elif defined(HAVE_GETRUSAGE) && !defined(__HAIKU__)</span>
+<a name="l00100"></a>00100 <span class="preprocessor"></span>  <span class="keyword">struct </span>rusage usage;
+<a name="l00101"></a>00101   ::getrusage(RUSAGE_SELF, &usage);
+<a name="l00102"></a>00102   <span class="keywordflow">return</span> usage.ru_maxrss;
+<a name="l00103"></a>00103 <span class="preprocessor">#else</span>
+<a name="l00104"></a>00104 <span class="preprocessor"></span><span class="preprocessor">#warning Cannot get total memory size on this platform</span>
+<a name="l00105"></a>00105 <span class="preprocessor"></span>  <span class="keywordflow">return</span> 0;
+<a name="l00106"></a>00106 <span class="preprocessor">#endif</span>
+<a name="l00107"></a>00107 <span class="preprocessor"></span>}
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109 <span class="keywordtype">void</span>
+<a name="l00110"></a>00110 <a class="code" href="classllvm_1_1sys_1_1Process.html#a6b2b01689088d887452341a4e053bf4c">Process::GetTimeUsage</a>(TimeValue& elapsed, TimeValue& user_time,
+<a name="l00111"></a>00111                       TimeValue& sys_time)
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113   elapsed = <a class="code" href="classllvm_1_1sys_1_1TimeValue.html#a15e2f7fb19eb0cd78ca161247eb38fba" title="Creates a TimeValue with the current time (UTC).">TimeValue::now</a>();
+<a name="l00114"></a>00114 <span class="preprocessor">#if defined(HAVE_GETRUSAGE)</span>
+<a name="l00115"></a>00115 <span class="preprocessor"></span>  <span class="keyword">struct </span>rusage usage;
+<a name="l00116"></a>00116   ::getrusage(RUSAGE_SELF, &usage);
+<a name="l00117"></a>00117   user_time = TimeValue(
+<a name="l00118"></a>00118     static_cast<TimeValue::SecondsType>( usage.ru_utime.tv_sec ),
+<a name="l00119"></a>00119     static_cast<TimeValue::NanoSecondsType>( usage.ru_utime.tv_usec *
+<a name="l00120"></a>00120       <a class="code" href="classllvm_1_1sys_1_1TimeValue.html#a3db964c7a5ccab6109c9e29842927ff9ad80545c0a7b3422494512c1ec804239e" title="One Thousand.">TimeValue::NANOSECONDS_PER_MICROSECOND</a> ) );
+<a name="l00121"></a>00121   sys_time = TimeValue(
+<a name="l00122"></a>00122     static_cast<TimeValue::SecondsType>( usage.ru_stime.tv_sec ),
+<a name="l00123"></a>00123     static_cast<TimeValue::NanoSecondsType>( usage.ru_stime.tv_usec *
+<a name="l00124"></a>00124       <a class="code" href="classllvm_1_1sys_1_1TimeValue.html#a3db964c7a5ccab6109c9e29842927ff9ad80545c0a7b3422494512c1ec804239e" title="One Thousand.">TimeValue::NANOSECONDS_PER_MICROSECOND</a> ) );
+<a name="l00125"></a>00125 <span class="preprocessor">#else</span>
+<a name="l00126"></a>00126 <span class="preprocessor"></span><span class="preprocessor">#warning Cannot get usage times on this platform</span>
+<a name="l00127"></a>00127 <span class="preprocessor"></span>  user_time.seconds(0);
+<a name="l00128"></a>00128   user_time.microseconds(0);
+<a name="l00129"></a>00129   sys_time.seconds(0);
+<a name="l00130"></a>00130   sys_time.microseconds(0);
+<a name="l00131"></a>00131 <span class="preprocessor">#endif</span>
+<a name="l00132"></a>00132 <span class="preprocessor"></span>}
+<a name="l00133"></a>00133 
+<a name="l00134"></a>00134 <span class="keywordtype">int</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a4ce2751c1c37eb7572008244d5b991f5">Process::GetCurrentUserId</a>() {
+<a name="l00135"></a>00135   <span class="keywordflow">return</span> getuid();
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137 
+<a name="l00138"></a>00138 <span class="keywordtype">int</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a05221d78a0e6e6867ab236974d728fb4">Process::GetCurrentGroupId</a>() {
+<a name="l00139"></a>00139   <span class="keywordflow">return</span> getgid();
+<a name="l00140"></a>00140 }
+<a name="l00141"></a>00141 
+<a name="l00142"></a>00142 <span class="preprocessor">#if defined(HAVE_MACH_MACH_H) && !defined(__GNU__)</span>
+<a name="l00143"></a>00143 <span class="preprocessor"></span><span class="preprocessor">#include <mach/mach.h></span>
+<a name="l00144"></a>00144 <span class="preprocessor">#endif</span>
+<a name="l00145"></a>00145 <span class="preprocessor"></span>
+<a name="l00146"></a>00146 <span class="comment">// Some LLVM programs such as bugpoint produce core files as a normal part of</span>
+<a name="l00147"></a>00147 <span class="comment">// their operation. To prevent the disk from filling up, this function</span>
+<a name="l00148"></a>00148 <span class="comment">// does what's necessary to prevent their generation.</span>
+<a name="l00149"></a>00149 <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a044be33f2a65605a957e19d5e8d549a5" title="Prevent core file generation.">Process::PreventCoreFiles</a>() {
+<a name="l00150"></a>00150 <span class="preprocessor">#if HAVE_SETRLIMIT</span>
+<a name="l00151"></a>00151 <span class="preprocessor"></span>  <span class="keyword">struct </span>rlimit rlim;
+<a name="l00152"></a>00152   rlim.rlim_cur = rlim.rlim_max = 0;
+<a name="l00153"></a>00153   setrlimit(RLIMIT_CORE, &rlim);
+<a name="l00154"></a>00154 <span class="preprocessor">#endif</span>
+<a name="l00155"></a>00155 <span class="preprocessor"></span>
+<a name="l00156"></a>00156 <span class="preprocessor">#if defined(HAVE_MACH_MACH_H) && !defined(__GNU__)</span>
+<a name="l00157"></a>00157 <span class="preprocessor"></span>  <span class="comment">// Disable crash reporting on Mac OS X 10.0-10.4</span>
+<a name="l00158"></a>00158 
+<a name="l00159"></a>00159   <span class="comment">// get information about the original set of exception ports for the task</span>
+<a name="l00160"></a>00160   mach_msg_type_number_t Count = 0;
+<a name="l00161"></a>00161   exception_mask_t OriginalMasks[EXC_TYPES_COUNT];
+<a name="l00162"></a>00162   exception_port_t OriginalPorts[EXC_TYPES_COUNT];
+<a name="l00163"></a>00163   exception_behavior_t OriginalBehaviors[EXC_TYPES_COUNT];
+<a name="l00164"></a>00164   thread_state_flavor_t OriginalFlavors[EXC_TYPES_COUNT];
+<a name="l00165"></a>00165   kern_return_t err =
+<a name="l00166"></a>00166     task_get_exception_ports(mach_task_self(), EXC_MASK_ALL, OriginalMasks,
+<a name="l00167"></a>00167                              &Count, OriginalPorts, OriginalBehaviors,
+<a name="l00168"></a>00168                              OriginalFlavors);
+<a name="l00169"></a>00169   <span class="keywordflow">if</span> (err == KERN_SUCCESS) {
+<a name="l00170"></a>00170     <span class="comment">// replace each with MACH_PORT_NULL.</span>
+<a name="l00171"></a>00171     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != Count; ++i)
+<a name="l00172"></a>00172       task_set_exception_ports(mach_task_self(), OriginalMasks[i],
+<a name="l00173"></a>00173                                MACH_PORT_NULL, OriginalBehaviors[i],
+<a name="l00174"></a>00174                                OriginalFlavors[i]);
+<a name="l00175"></a>00175   }
+<a name="l00176"></a>00176 
+<a name="l00177"></a>00177   <span class="comment">// Disable crash reporting on Mac OS X 10.5</span>
+<a name="l00178"></a>00178   signal(SIGABRT, _exit);
+<a name="l00179"></a>00179   signal(SIGILL,  _exit);
+<a name="l00180"></a>00180   signal(SIGFPE,  _exit);
+<a name="l00181"></a>00181   signal(SIGSEGV, _exit);
+<a name="l00182"></a>00182   signal(SIGBUS,  _exit);
+<a name="l00183"></a>00183 <span class="preprocessor">#endif</span>
+<a name="l00184"></a>00184 <span class="preprocessor"></span>}
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#ad2aac231a0752ab9d6c3d7bae48f7adc">Process::StandardInIsUserInput</a>() {
+<a name="l00187"></a>00187   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a2bd9c876be050d32ff622ef5b562bb4e">FileDescriptorIsDisplayed</a>(STDIN_FILENO);
+<a name="l00188"></a>00188 }
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#ab2af58ec26c804a6836864d970c78df1">Process::StandardOutIsDisplayed</a>() {
+<a name="l00191"></a>00191   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a2bd9c876be050d32ff622ef5b562bb4e">FileDescriptorIsDisplayed</a>(STDOUT_FILENO);
+<a name="l00192"></a>00192 }
+<a name="l00193"></a>00193 
+<a name="l00194"></a>00194 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a30f5096a2364f58d967775a553c1143b">Process::StandardErrIsDisplayed</a>() {
+<a name="l00195"></a>00195   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a2bd9c876be050d32ff622ef5b562bb4e">FileDescriptorIsDisplayed</a>(STDERR_FILENO);
+<a name="l00196"></a>00196 }
+<a name="l00197"></a>00197 
+<a name="l00198"></a>00198 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a2bd9c876be050d32ff622ef5b562bb4e">Process::FileDescriptorIsDisplayed</a>(<span class="keywordtype">int</span> fd) {
+<a name="l00199"></a>00199 <span class="preprocessor">#if HAVE_ISATTY</span>
+<a name="l00200"></a>00200 <span class="preprocessor"></span>  <span class="keywordflow">return</span> isatty(fd);
+<a name="l00201"></a>00201 <span class="preprocessor">#else</span>
+<a name="l00202"></a>00202 <span class="preprocessor"></span>  <span class="comment">// If we don't have isatty, just return false.</span>
+<a name="l00203"></a>00203   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00204"></a>00204 <span class="preprocessor">#endif</span>
+<a name="l00205"></a>00205 <span class="preprocessor"></span>}
+<a name="l00206"></a>00206 
+<a name="l00207"></a>00207 <span class="keyword">static</span> <span class="keywordtype">unsigned</span> getColumns(<span class="keywordtype">int</span> FileID) {
+<a name="l00208"></a>00208   <span class="comment">// If COLUMNS is defined in the environment, wrap to that many columns.</span>
+<a name="l00209"></a>00209   <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keywordtype">char</span> *ColumnsStr = std::getenv(<span class="stringliteral">"COLUMNS"</span>)) {
+<a name="l00210"></a>00210     <span class="keywordtype">int</span> Columns = std::atoi(ColumnsStr);
+<a name="l00211"></a>00211     <span class="keywordflow">if</span> (Columns > 0)
+<a name="l00212"></a>00212       <span class="keywordflow">return</span> Columns;
+<a name="l00213"></a>00213   }
+<a name="l00214"></a>00214 
+<a name="l00215"></a>00215   <span class="keywordtype">unsigned</span> Columns = 0;
+<a name="l00216"></a>00216 
+<a name="l00217"></a>00217 <span class="preprocessor">#if defined(HAVE_SYS_IOCTL_H) && defined(HAVE_TERMIOS_H)</span>
+<a name="l00218"></a>00218 <span class="preprocessor"></span>  <span class="comment">// Try to determine the width of the terminal.</span>
+<a name="l00219"></a>00219   <span class="keyword">struct </span>winsize ws;
+<a name="l00220"></a>00220   <span class="keywordflow">if</span> (ioctl(FileID, TIOCGWINSZ, &ws) == 0)
+<a name="l00221"></a>00221     Columns = ws.ws_col;
+<a name="l00222"></a>00222 <span class="preprocessor">#endif</span>
+<a name="l00223"></a>00223 <span class="preprocessor"></span>
+<a name="l00224"></a>00224   <span class="keywordflow">return</span> Columns;
+<a name="l00225"></a>00225 }
+<a name="l00226"></a>00226 
+<a name="l00227"></a>00227 <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#ab21a24de36e15ce39ddb32192ff723ef">Process::StandardOutColumns</a>() {
+<a name="l00228"></a>00228   <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1sys_1_1Process.html#ab2af58ec26c804a6836864d970c78df1">StandardOutIsDisplayed</a>())
+<a name="l00229"></a>00229     <span class="keywordflow">return</span> 0;
+<a name="l00230"></a>00230 
+<a name="l00231"></a>00231   <span class="keywordflow">return</span> getColumns(1);
+<a name="l00232"></a>00232 }
+<a name="l00233"></a>00233 
+<a name="l00234"></a>00234 <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a89927683c57b686c4694bbc0ee822653">Process::StandardErrColumns</a>() {
+<a name="l00235"></a>00235   <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1sys_1_1Process.html#a30f5096a2364f58d967775a553c1143b">StandardErrIsDisplayed</a>())
+<a name="l00236"></a>00236     <span class="keywordflow">return</span> 0;
+<a name="l00237"></a>00237 
+<a name="l00238"></a>00238   <span class="keywordflow">return</span> getColumns(2);
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240 
+<a name="l00241"></a>00241 <span class="keyword">static</span> <span class="keywordtype">bool</span> terminalHasColors() {
+<a name="l00242"></a>00242   <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keywordtype">char</span> *term = std::getenv(<span class="stringliteral">"TERM"</span>)) {
+<a name="l00243"></a>00243     <span class="comment">// Most modern terminals support ANSI escape sequences for colors.</span>
+<a name="l00244"></a>00244     <span class="comment">// We could check terminfo, or have a list of known terms that support</span>
+<a name="l00245"></a>00245     <span class="comment">// colors, but that would be overkill.</span>
+<a name="l00246"></a>00246     <span class="comment">// The user can always ask for no colors by setting TERM to dumb, or</span>
+<a name="l00247"></a>00247     <span class="comment">// using a commandline flag.</span>
+<a name="l00248"></a>00248     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa8574b01ba1bbc031cb5dd73572783e94" title="int strcmp(const char *s1, const char *s2);">strcmp</a>(term, <span class="stringliteral">"dumb"</span>) != 0;
+<a name="l00249"></a>00249   }
+<a name="l00250"></a>00250   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252 
+<a name="l00253"></a>00253 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a6c753dc2ccb8b41c097dee19f3690e0d">Process::FileDescriptorHasColors</a>(<span class="keywordtype">int</span> fd) {
+<a name="l00254"></a>00254   <span class="comment">// A file descriptor has colors if it is displayed and the terminal has</span>
+<a name="l00255"></a>00255   <span class="comment">// colors.</span>
+<a name="l00256"></a>00256   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a2bd9c876be050d32ff622ef5b562bb4e">FileDescriptorIsDisplayed</a>(fd) && terminalHasColors();
+<a name="l00257"></a>00257 }
+<a name="l00258"></a>00258 
+<a name="l00259"></a>00259 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a2512fe676260dcee1c2ba5e917dad4aa">Process::StandardOutHasColors</a>() {
+<a name="l00260"></a>00260   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a6c753dc2ccb8b41c097dee19f3690e0d">FileDescriptorHasColors</a>(STDOUT_FILENO);
+<a name="l00261"></a>00261 }
+<a name="l00262"></a>00262 
+<a name="l00263"></a>00263 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#aae619d8f1ff7ce90bd18ee54d504b126">Process::StandardErrHasColors</a>() {
+<a name="l00264"></a>00264   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a6c753dc2ccb8b41c097dee19f3690e0d">FileDescriptorHasColors</a>(STDERR_FILENO);
+<a name="l00265"></a>00265 }
+<a name="l00266"></a>00266 
+<a name="l00267"></a>00267 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#ae688bc9ea544596962674ee94437ec00">Process::ColorNeedsFlush</a>() {
+<a name="l00268"></a>00268   <span class="comment">// No, we use ANSI escape sequences.</span>
+<a name="l00269"></a>00269   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00270"></a>00270 }
+<a name="l00271"></a>00271 
+<a name="l00272"></a>00272 <span class="preprocessor">#define COLOR(FGBG, CODE, BOLD) "\033[0;" BOLD FGBG CODE "m"</span>
+<a name="l00273"></a>00273 <span class="preprocessor"></span>
+<a name="l00274"></a>00274 <span class="preprocessor">#define ALLCOLORS(FGBG,BOLD) {\</span>
+<a name="l00275"></a>00275 <span class="preprocessor">    COLOR(FGBG, "0", BOLD),\</span>
+<a name="l00276"></a>00276 <span class="preprocessor">    COLOR(FGBG, "1", BOLD),\</span>
+<a name="l00277"></a>00277 <span class="preprocessor">    COLOR(FGBG, "2", BOLD),\</span>
+<a name="l00278"></a>00278 <span class="preprocessor">    COLOR(FGBG, "3", BOLD),\</span>
+<a name="l00279"></a>00279 <span class="preprocessor">    COLOR(FGBG, "4", BOLD),\</span>
+<a name="l00280"></a>00280 <span class="preprocessor">    COLOR(FGBG, "5", BOLD),\</span>
+<a name="l00281"></a>00281 <span class="preprocessor">    COLOR(FGBG, "6", BOLD),\</span>
+<a name="l00282"></a>00282 <span class="preprocessor">    COLOR(FGBG, "7", BOLD)\</span>
+<a name="l00283"></a>00283 <span class="preprocessor">  }</span>
+<a name="l00284"></a>00284 <span class="preprocessor"></span>
+<a name="l00285"></a>00285 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> colorcodes[2][2][8][10] = {
+<a name="l00286"></a>00286  { ALLCOLORS(<span class="stringliteral">"3"</span>,<span class="stringliteral">""</span>), ALLCOLORS(<span class="stringliteral">"3"</span>,<span class="stringliteral">"1;"</span>) },
+<a name="l00287"></a>00287  { ALLCOLORS(<span class="stringliteral">"4"</span>,<span class="stringliteral">""</span>), ALLCOLORS(<span class="stringliteral">"4"</span>,<span class="stringliteral">"1;"</span>) }
+<a name="l00288"></a>00288 };
+<a name="l00289"></a>00289 
+<a name="l00290"></a>00290 <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classllvm_1_1sys_1_1Process.html#a7d2238691760553f386411487e0db844">Process::OutputColor</a>(<span class="keywordtype">char</span> code, <span class="keywordtype">bool</span> bold, <span class="keywordtype">bool</span> bg) {
+<a name="l00291"></a>00291   <span class="keywordflow">return</span> colorcodes[bg?1:0][bold?1:0][code&7];
+<a name="l00292"></a>00292 }
+<a name="l00293"></a>00293 
+<a name="l00294"></a>00294 <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classllvm_1_1sys_1_1Process.html#ade3729c00ce63236e357eef613ea88fa" title="Same as OutputColor, but only enables the bold attribute.">Process::OutputBold</a>(<span class="keywordtype">bool</span> bg) {
+<a name="l00295"></a>00295   <span class="keywordflow">return</span> <span class="stringliteral">"\033[1m"</span>;
+<a name="l00296"></a>00296 }
+<a name="l00297"></a>00297 
+<a name="l00298"></a>00298 <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classllvm_1_1sys_1_1Process.html#a59ce5f725a85d10ff56bfa6128c5c2bc">Process::OutputReverse</a>() {
+<a name="l00299"></a>00299   <span class="keywordflow">return</span> <span class="stringliteral">"\033[7m"</span>;
+<a name="l00300"></a>00300 }
+<a name="l00301"></a>00301 
+<a name="l00302"></a>00302 <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classllvm_1_1sys_1_1Process.html#a99e59876b30e646fcb8907f5ea548b2f" title="Resets the terminals colors, or returns an escape sequence to do so.">Process::ResetColor</a>() {
+<a name="l00303"></a>00303   <span class="keywordflow">return</span> <span class="stringliteral">"\033[0m"</span>;
+<a name="l00304"></a>00304 }
+<a name="l00305"></a>00305 
+<a name="l00306"></a>00306 <span class="preprocessor">#if !defined(HAVE_ARC4RANDOM)</span>
+<a name="l00307"></a>00307 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">unsigned</span> GetRandomNumberSeed() {
+<a name="l00308"></a>00308   <span class="comment">// Attempt to get the initial seed from /dev/urandom, if possible.</span>
+<a name="l00309"></a>00309   <span class="keywordflow">if</span> (FILE *RandomSource = ::fopen(<span class="stringliteral">"/dev/urandom"</span>, <span class="stringliteral">"r"</span>)) {
+<a name="l00310"></a>00310     <span class="keywordtype">unsigned</span> seed;
+<a name="l00311"></a>00311     <span class="keywordtype">int</span> count = ::fread((<span class="keywordtype">void</span> *)&seed, <span class="keyword">sizeof</span>(seed), 1, RandomSource);
+<a name="l00312"></a>00312     ::fclose(RandomSource);
+<a name="l00313"></a>00313 
+<a name="l00314"></a>00314     <span class="comment">// Return the seed if the read was successful.</span>
+<a name="l00315"></a>00315     <span class="keywordflow">if</span> (count == 1)
+<a name="l00316"></a>00316       <span class="keywordflow">return</span> seed;
+<a name="l00317"></a>00317   }
+<a name="l00318"></a>00318 
+<a name="l00319"></a>00319   <span class="comment">// Otherwise, swizzle the current time and the process ID to form a reasonable</span>
+<a name="l00320"></a>00320   <span class="comment">// seed.</span>
+<a name="l00321"></a>00321   TimeValue Now = <a class="code" href="classllvm_1_1sys_1_1TimeValue.html#a15e2f7fb19eb0cd78ca161247eb38fba" title="Creates a TimeValue with the current time (UTC).">llvm::TimeValue::now</a>();
+<a name="l00322"></a>00322   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a2b33f2166f38124ec3081c2fd59672f7">hash_combine</a>(Now.seconds(), Now.nanoseconds(), ::getpid());
+<a name="l00323"></a>00323 }
+<a name="l00324"></a>00324 <span class="preprocessor">#endif</span>
+<a name="l00325"></a>00325 <span class="preprocessor"></span>
+<a name="l00326"></a>00326 <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1sys_1_1Process.html#a92b058c34d04f6d0adf6eac3060343c6">llvm::sys::Process::GetRandomNumber</a>() {
+<a name="l00327"></a>00327 <span class="preprocessor">#if defined(HAVE_ARC4RANDOM)</span>
+<a name="l00328"></a>00328 <span class="preprocessor"></span>  <span class="keywordflow">return</span> arc4random();
+<a name="l00329"></a>00329 <span class="preprocessor">#else</span>
+<a name="l00330"></a>00330 <span class="preprocessor"></span>  <span class="keyword">static</span> <span class="keywordtype">int</span> x = (::srand(GetRandomNumberSeed()), 0);
+<a name="l00331"></a>00331   (void)x;
+<a name="l00332"></a>00332   return ::rand();
+<a name="l00333"></a>00333 <span class="preprocessor">#endif</span>
+<a name="l00334"></a>00334 <span class="preprocessor"></span>}
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:36:58 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/Unix_2Program_8inc.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Unix_2Program_8inc.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Unix_2Program_8inc.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Unix_2Program_8inc.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,77 @@
+<!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: Program.inc 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_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+      <li class="navelem"><a class="el" href="dir_9bfd0d32942a152553dfbba6cb23ecb5.html">Unix</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Unix/Program.inc File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include <<a class="el" href="config_8h_source.html">llvm/Config/config.h</a>></code><br/>
+<code>#include "<a class="el" href="FileSystem_8h_source.html">llvm/Support/FileSystem.h</a>"</code><br/>
+<code>#include "<a class="el" href="Unix_8h_source.html">Unix.h</a>"</code><br/>
+<code>#include <sys/stat.h></code><br/>
+<code>#include <sys/resource.h></code><br/>
+<code>#include <signal.h></code><br/>
+<code>#include <fcntl.h></code><br/>
+<code>#include <spawn.h></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Unix/Program.inc:</div>
+<div class="dyncontent">
+<div class="center"><img src="Unix_2Program_8inc__incl.png" border="0" usemap="#Program_8inc" 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="Unix_2Program_8inc__dep__incl.png" border="0" usemap="#Program_8incdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="Unix_2Program_8inc_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:38 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/Unix_2Program_8inc__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Unix_2Program_8inc__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Unix_2Program_8inc__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Unix_2Program_8inc__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+6fe94235f363f7a76a09a2b7f59aa8ff
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/Unix_2Program_8inc__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Unix_2Program_8inc__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Unix_2Program_8inc__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Unix_2Program_8inc__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,140 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="Program.inc",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/Config/config.h",height=0.2,width=0.4,color="black",URL="$config_8h.html"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Support/FileSystem.h",height=0.2,width=0.4,color="black",URL="$FileSystem_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/ADT/IntrusiveRefCntPtr.h",height=0.2,width=0.4,color="black",URL="$IntrusiveRefCntPtr_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/Support/Casting.h",height=0.2,width=0.4,color="black",URL="$Casting_8h.html"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node4 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="memory",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/ADT/OwningPtr.h",height=0.2,width=0.4,color="black",URL="$OwningPtr_8h.html"];
+  Node17 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/ADT/SmallString.h",height=0.2,width=0.4,color="black",URL="$SmallString_8h.html"];
+  Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="black",URL="$SmallVector_8h.html"];
+  Node19 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_8h.html"];
+  Node20 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node19 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node19 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node19 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node19 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="black",URL="$StringRef_8h.html"];
+  Node25 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="limits",height=0.2,width=0.4,color="grey75"];
+  Node25 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node25 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="black",URL="$Twine_8h.html"];
+  Node28 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8h.html"];
+  Node29 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/Support/system_error.h",height=0.2,width=0.4,color="black",URL="$system__error_8h.html"];
+  Node30 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Config/llvm-config.h",height=0.2,width=0.4,color="black",URL="$llvm-config_8h.html"];
+  Node30 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="cerrno",height=0.2,width=0.4,color="grey75"];
+  Node30 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="ctime",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="stack",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="Unix.h",height=0.2,width=0.4,color="black",URL="$Unix_8h.html"];
+  Node36 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/Support/Errno.h",height=0.2,width=0.4,color="black",URL="$Errno_8h.html"];
+  Node37 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="cstdio",height=0.2,width=0.4,color="grey75"];
+  Node36 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="unistd.h",height=0.2,width=0.4,color="grey75"];
+  Node36 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="sys/param.h",height=0.2,width=0.4,color="grey75"];
+  Node36 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="assert.h",height=0.2,width=0.4,color="grey75"];
+  Node36 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="sys/time.h",height=0.2,width=0.4,color="grey75"];
+  Node36 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="time.h",height=0.2,width=0.4,color="grey75"];
+  Node36 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="sys/wait.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="sys/stat.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="sys/resource.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="signal.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="fcntl.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="spawn.h",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Unix_2TimeValue_8inc.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Unix_2TimeValue_8inc.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Unix_2TimeValue_8inc.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Unix_2TimeValue_8inc.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,57 @@
+<!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: TimeValue.inc 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_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+      <li class="navelem"><a class="el" href="dir_9bfd0d32942a152553dfbba6cb23ecb5.html">Unix</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Unix/TimeValue.inc File Reference</div>  </div>
+</div>
+<div class="contents">
+
+<p><a href="Unix_2TimeValue_8inc_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:54 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/Unix_2system__error_8inc__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Unix_2system__error_8inc__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Unix_2system__error_8inc__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Unix_2system__error_8inc__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,9 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="system_error.inc",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="system_error.cpp",height=0.2,width=0.4,color="black",URL="$system__error_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Unix_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Unix_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Unix_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Unix_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,23 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="Unix.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="Memory.inc",height=0.2,width=0.4,color="black",URL="$Unix_2Memory_8inc.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="Memory.cpp",height=0.2,width=0.4,color="black",URL="$Memory_8cpp.html"];
+  Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="Path.inc",height=0.2,width=0.4,color="black",URL="$Unix_2Path_8inc.html"];
+  Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="Path.cpp",height=0.2,width=0.4,color="black",URL="$Path_8cpp.html"];
+  Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="PathV2.inc",height=0.2,width=0.4,color="black",URL="$Unix_2PathV2_8inc.html"];
+  Node6 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="PathV2.cpp",height=0.2,width=0.4,color="black",URL="$PathV2_8cpp.html"];
+  Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="Program.inc",height=0.2,width=0.4,color="black",URL="$Unix_2Program_8inc.html"];
+  Node8 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="Program.cpp",height=0.2,width=0.4,color="black",URL="$Program_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Use_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Use_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Use_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Use_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,132 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="Use.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="Value.h",height=0.2,width=0.4,color="black",URL="$Value_8h.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="ValueHandle.h",height=0.2,width=0.4,color="red",URL="$ValueHandle_8h.html"];
+  Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="ValueMap.h",height=0.2,width=0.4,color="red",URL="$ValueMap_8h.html"];
+  Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="ExecutionEngine.h",height=0.2,width=0.4,color="red",URL="$ExecutionEngine_2ExecutionEngine_8h.html"];
+  Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="ExecutionEngine.cpp",height=0.2,width=0.4,color="black",URL="$ExecutionEngine_8cpp.html"];
+  Node5 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="JIT.h",height=0.2,width=0.4,color="red",URL="$lib_2ExecutionEngine_2JIT_2JIT_8h.html"];
+  Node7 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="JITEmitter.cpp",height=0.2,width=0.4,color="black",URL="$JITEmitter_8cpp.html"];
+  Node4 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="Cloning.h",height=0.2,width=0.4,color="red",URL="$Cloning_8h.html"];
+  Node4 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="AliasSetTracker.h",height=0.2,width=0.4,color="red",URL="$AliasSetTracker_8h.html"];
+  Node10 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="LoopVectorize.cpp",height=0.2,width=0.4,color="black",URL="$LoopVectorize_8cpp.html"];
+  Node3 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="CallGraph.h",height=0.2,width=0.4,color="red",URL="$CallGraph_8h.html"];
+  Node3 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="IVUsers.h",height=0.2,width=0.4,color="red",URL="$IVUsers_8h.html"];
+  Node13 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="LoopStrengthReduce.cpp",height=0.2,width=0.4,color="black",URL="$LoopStrengthReduce_8cpp.html"];
+  Node3 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="MemoryBuiltins.h",height=0.2,width=0.4,color="red",URL="$MemoryBuiltins_8h.html"];
+  Node15 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="InstructionCombining.cpp",height=0.2,width=0.4,color="black",URL="$InstructionCombining_8cpp.html"];
+  Node3 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="MemoryDependenceAnalysis.h",height=0.2,width=0.4,color="red",URL="$MemoryDependenceAnalysis_8h.html"];
+  Node3 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="ScalarEvolution.h",height=0.2,width=0.4,color="red",URL="$ScalarEvolution_8h.html"];
+  Node18 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="ScalarEvolutionExpander.h",height=0.2,width=0.4,color="red",URL="$ScalarEvolutionExpander_8h.html"];
+  Node19 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="LexicalScopes.h",height=0.2,width=0.4,color="red",URL="$LexicalScopes_8h.html"];
+  Node20 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="LiveDebugVariables.cpp",height=0.2,width=0.4,color="black",URL="$LiveDebugVariables_8cpp.html"];
+  Node3 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="MachineModuleInfo.h",height=0.2,width=0.4,color="red",URL="$MachineModuleInfo_8h.html"];
+  Node22 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="DwarfDebug.cpp",height=0.2,width=0.4,color="black",URL="$DwarfDebug_8cpp.html"];
+  Node22 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="MachineInstr.cpp",height=0.2,width=0.4,color="black",URL="$MachineInstr_8cpp.html"];
+  Node22 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="SimplifyIndVar.h",height=0.2,width=0.4,color="red",URL="$SimplifyIndVar_8h.html"];
+  Node3 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="SSAUpdaterImpl.h",height=0.2,width=0.4,color="red",URL="$SSAUpdaterImpl_8h.html"];
+  Node3 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="InstructionSimplify.cpp",height=0.2,width=0.4,color="black",URL="$InstructionSimplify_8cpp.html"];
+  Node3 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="LazyValueInfo.cpp",height=0.2,width=0.4,color="black",URL="$LazyValueInfo_8cpp.html"];
+  Node3 -> Node29 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="LLParser.h",height=0.2,width=0.4,color="red",URL="$LLParser_8h.html"];
+  Node3 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="BitcodeReader.h",height=0.2,width=0.4,color="red",URL="$BitcodeReader_8h.html"];
+  Node3 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node31 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="EventListenerCommon.h",height=0.2,width=0.4,color="red",URL="$EventListenerCommon_8h.html"];
+  Node31 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="IntelJITEventListener.cpp",height=0.2,width=0.4,color="black",URL="$IntelJITEventListener_8cpp.html"];
+  Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node33 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="MergeFunctions.cpp",height=0.2,width=0.4,color="black",URL="$MergeFunctions_8cpp.html"];
+  Node3 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="CodeGenPrepare.cpp",height=0.2,width=0.4,color="black",URL="$CodeGenPrepare_8cpp.html"];
+  Node3 -> Node35 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="JumpThreading.cpp",height=0.2,width=0.4,color="black",URL="$JumpThreading_8cpp.html"];
+  Node3 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node36 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="Reassociate.cpp",height=0.2,width=0.4,color="black",URL="$Reassociate_8cpp.html"];
+  Node2 -> Node37 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="User.h",height=0.2,width=0.4,color="red",URL="$User_8h.html"];
+  Node2 -> Node38 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="InlineAsm.h",height=0.2,width=0.4,color="red",URL="$InlineAsm_8h.html"];
+  Node38 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node33 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node39 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="Argument.h",height=0.2,width=0.4,color="red",URL="$Argument_8h.html"];
+  Node2 -> Node40 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="Metadata.h",height=0.2,width=0.4,color="red",URL="$Metadata_8h.html"];
+  Node40 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node31 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node41 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="PseudoSourceValue.h",height=0.2,width=0.4,color="red",URL="$PseudoSourceValue_8h.html"];
+  Node41 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node42 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="ValueSymbolTable.h",height=0.2,width=0.4,color="red",URL="$ValueSymbolTable_8h.html"];
+  Node2 -> Node43 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="CostModel.cpp",height=0.2,width=0.4,color="black",URL="$CostModel_8cpp.html"];
+  Node2 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node44 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="LiveIntervalAnalysis.cpp",height=0.2,width=0.4,color="black",URL="$LiveIntervalAnalysis_8cpp.html"];
+  Node2 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node45 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="RegisterCoalescer.cpp",height=0.2,width=0.4,color="black",URL="$RegisterCoalescer_8cpp.html"];
+  Node2 -> Node46 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="NVPTX.h",height=0.2,width=0.4,color="red",URL="$NVPTX_8h.html"];
+  Node2 -> Node47 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="NVPTXUtilities.h",height=0.2,width=0.4,color="red",URL="$NVPTXUtilities_8h.html"];
+  Node2 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node48 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="LeaksContext.h",height=0.2,width=0.4,color="red",URL="$LeaksContext_8h.html"];
+  Node2 -> Node49 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="LeakDetector.cpp",height=0.2,width=0.4,color="black",URL="$LeakDetector_8cpp.html"];
+  Node2 -> Node50 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="Use.cpp",height=0.2,width=0.4,color="black",URL="$Use_8cpp.html"];
+}

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

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





More information about the llvm-commits mailing list