[llvm-commits] [www-releases] r170845 [20/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/MachineMemOperand_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineMemOperand_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineMemOperand_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineMemOperand_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,3 @@
+<map id="G" name="G">
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="107,84,291,111"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineMemOperand_8h__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineMemOperand_8h__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MachineMemOperand_8h__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,37 @@
+<map id="G" name="G">
+<area shape="rect" href="$MachineModuleInfoImpls_8h.html" title="llvm/CodeGen/MachineModuleInfoImpls.h" alt="" coords="891,84,1173,111"/>
+<area shape="rect" href="$MCSymbol_8h.html" title="llvm/MC/MCSymbol.h" alt="" coords="93,393,248,420"/>
+<area shape="rect" href="$MachineModuleInfo_8h.html" title="llvm/CodeGen/MachineModuleInfo.h" alt="" coords="1756,161,2004,188"/>
+<area shape="rect" href="$Pass_8h.html" title="llvm/Pass.h" alt="" coords="181,239,272,265"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="1175,393,1343,420"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="2461,625,2645,652"/>
+<area shape="rect" href="$GlobalValue_8h.html" title="llvm/GlobalValue.h" alt="" coords="2567,239,2705,265"/>
+<area shape="rect" href="$Metadata_8h.html" title="llvm/Metadata.h" alt="" coords="829,239,952,265"/>
+<area shape="rect" href="$MachineLocation_8h.html" title="llvm/MC/MachineLocation.h" alt="" coords="1367,393,1561,420"/>
+<area shape="rect" href="$MCContext_8h.html" title="llvm/MC/MCContext.h" alt="" coords="1440,239,1597,265"/>
+<area shape="rect" href="$Dwarf_8h.html" title="llvm/Support/Dwarf.h" alt="" coords="1585,393,1737,420"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="1863,393,2023,420"/>
+<area shape="rect" href="$DebugLoc_8h.html" title="llvm/Support/DebugLoc.h" alt="" coords="2729,239,2911,265"/>
+<area shape="rect" href="$ValueHandle_8h.html" title="llvm/Support/ValueHandle.h" alt="" coords="2047,393,2244,420"/>
+<area shape="rect" href="$PointerIntPair_8h.html" title="llvm/ADT/PointerIntPair.h" alt="" coords="2864,471,3040,497"/>
+<area shape="rect" href="$SmallPtrSet_8h.html" title="llvm/ADT/SmallPtrSet.h" alt="" coords="2571,471,2739,497"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="673,548,847,575"/>
+<area shape="rect" href="$PassSupport_8h.html" title="llvm/PassSupport.h" alt="" coords="155,316,299,343"/>
+<area shape="rect" href="$PassAnalysisSupport_8h.html" title="llvm/PassAnalysisSupport.h" alt="" coords="600,316,795,343"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="875,471,1024,497"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="1453,471,1616,497"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="1149,548,1336,575"/>
+<area shape="rect" href="$Constant_8h.html" title="llvm/Constant.h" alt="" coords="2576,316,2696,343"/>
+<area shape="rect" href="$Value_8h.html" title="llvm/Value.h" alt="" coords="600,471,699,497"/>
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="819,316,963,343"/>
+<area shape="rect" href="$FoldingSet_8h.html" title="llvm/ADT/FoldingSet.h" alt="" coords="1253,316,1413,343"/>
+<area shape="rect" href="$ilist__node_8h.html" title="llvm/ADT/ilist_node.h" alt="" coords="373,316,525,343"/>
+<area shape="rect" href="$SectionKind_8h.html" title="llvm/MC/SectionKind.h" alt="" coords="1437,316,1600,343"/>
+<area shape="rect" href="$MCDwarf_8h.html" title="llvm/MC/MCDwarf.h" alt="" coords="1037,316,1179,343"/>
+<area shape="rect" href="$raw__ostream_8h.html" title="llvm/Support/raw_ostream.h" alt="" coords="849,393,1049,420"/>
+<area shape="rect" href="$StringMap_8h.html" title="llvm/ADT/StringMap.h" alt="" coords="1776,316,1933,343"/>
+<area shape="rect" href="$Allocator_8h.html" title="llvm/Support/Allocator.h" alt="" coords="2268,393,2441,420"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="2307,471,2496,497"/>
+<area shape="rect" href="$PointerLikeTypeTraits_8h.html" title="llvm/Support/PointerLikeTypeTraits.h" alt="" coords="2591,548,2839,575"/>
+<area shape="rect" href="$DenseMapInfo_8h.html" title="llvm/ADT/DenseMapInfo.h" alt="" coords="2099,471,2283,497"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_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="MachineModuleInfoImpls.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="MachineModuleInfoImpls.cpp",height=0.2,width=0.4,color="black",URL="$MachineModuleInfoImpls_8cpp.html"];
+  Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="TargetLoweringObjectFileImpl.cpp",height=0.2,width=0.4,color="black",URL="$TargetLoweringObjectFileImpl_8cpp.html"];
+  Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="ARMAsmPrinter.cpp",height=0.2,width=0.4,color="black",URL="$ARMAsmPrinter_8cpp.html"];
+  Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="PPCAsmPrinter.cpp",height=0.2,width=0.4,color="black",URL="$PPCAsmPrinter_8cpp.html"];
+  Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="PPCMCInstLower.cpp",height=0.2,width=0.4,color="black",URL="$PPCMCInstLower_8cpp.html"];
+  Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="X86AsmPrinter.cpp",height=0.2,width=0.4,color="black",URL="$X86AsmPrinter_8cpp.html"];
+  Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="X86MCInstLower.cpp",height=0.2,width=0.4,color="black",URL="$X86MCInstLower_8cpp.html"];
+  Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="X86TargetObjectFile.cpp",height=0.2,width=0.4,color="black",URL="$X86TargetObjectFile_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,35 @@
+<map id="G" name="G">
+<area shape="rect" href="$MachineModuleInfo_8h.html" title="llvm/CodeGen/MachineModuleInfo.h" alt="" coords="1791,84,2039,111"/>
+<area shape="rect" href="$Pass_8h.html" title="llvm/Pass.h" alt="" coords="333,161,424,188"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="1492,316,1660,343"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="2509,471,2693,497"/>
+<area shape="rect" href="$GlobalValue_8h.html" title="llvm/GlobalValue.h" alt="" coords="84,161,223,188"/>
+<area shape="rect" href="$Metadata_8h.html" title="llvm/Metadata.h" alt="" coords="1280,161,1403,188"/>
+<area shape="rect" href="$MachineLocation_8h.html" title="llvm/MC/MachineLocation.h" alt="" coords="371,316,565,343"/>
+<area shape="rect" href="$MCContext_8h.html" title="llvm/MC/MCContext.h" alt="" coords="1667,161,1824,188"/>
+<area shape="rect" href="$Dwarf_8h.html" title="llvm/Support/Dwarf.h" alt="" coords="600,316,752,343"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="2133,239,2293,265"/>
+<area shape="rect" href="$DebugLoc_8h.html" title="llvm/Support/DebugLoc.h" alt="" coords="2368,161,2549,188"/>
+<area shape="rect" href="$ValueHandle_8h.html" title="llvm/Support/ValueHandle.h" alt="" coords="2633,239,2831,265"/>
+<area shape="rect" href="$PointerIntPair_8h.html" title="llvm/ADT/PointerIntPair.h" alt="" coords="2943,316,3119,343"/>
+<area shape="rect" href="$SmallPtrSet_8h.html" title="llvm/ADT/SmallPtrSet.h" alt="" coords="2441,316,2609,343"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="961,471,1135,497"/>
+<area shape="rect" href="$PassSupport_8h.html" title="llvm/PassSupport.h" alt="" coords="200,239,344,265"/>
+<area shape="rect" href="$PassAnalysisSupport_8h.html" title="llvm/PassAnalysisSupport.h" alt="" coords="891,239,1085,265"/>
+<area shape="rect" href="$PassRegistry_8h.html" title="llvm/PassRegistry.h" alt="" coords="203,316,341,343"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="1372,393,1535,420"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="2639,393,2825,420"/>
+<area shape="rect" href="$Constant_8h.html" title="llvm/Constant.h" alt="" coords="5,239,125,265"/>
+<area shape="rect" href="$Value_8h.html" title="llvm/Value.h" alt="" coords="1167,316,1265,343"/>
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="1109,239,1253,265"/>
+<area shape="rect" href="$FoldingSet_8h.html" title="llvm/ADT/FoldingSet.h" alt="" coords="1480,239,1640,265"/>
+<area shape="rect" href="$ilist__node_8h.html" title="llvm/ADT/ilist_node.h" alt="" coords="549,239,701,265"/>
+<area shape="rect" href="$SectionKind_8h.html" title="llvm/MC/SectionKind.h" alt="" coords="1664,239,1827,265"/>
+<area shape="rect" href="$MCDwarf_8h.html" title="llvm/MC/MCDwarf.h" alt="" coords="725,239,867,265"/>
+<area shape="rect" href="$raw__ostream_8h.html" title="llvm/Support/raw_ostream.h" alt="" coords="948,393,1148,420"/>
+<area shape="rect" href="$StringMap_8h.html" title="llvm/ADT/StringMap.h" alt="" coords="1952,239,2109,265"/>
+<area shape="rect" href="$Allocator_8h.html" title="llvm/Support/Allocator.h" alt="" coords="1735,316,1908,343"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="1903,393,2092,420"/>
+<area shape="rect" href="$PointerLikeTypeTraits_8h.html" title="llvm/Support/PointerLikeTypeTraits.h" alt="" coords="2849,393,3097,420"/>
+<area shape="rect" href="$DenseMapInfo_8h.html" title="llvm/ADT/DenseMapInfo.h" alt="" coords="2684,316,2868,343"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8h__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8h__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfoImpls_8h__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfo_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfo_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfo_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfo_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,631 @@
+<!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: MachineModuleInfo.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">MachineModuleInfo.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="MachineModuleInfo_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- llvm/CodeGen/MachineModuleInfo.cpp ----------------------*- 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 
+<a name="l00010"></a>00010 <span class="preprocessor">#include "<a class="code" href="MachineModuleInfo_8h.html">llvm/CodeGen/MachineModuleInfo.h</a>"</span>
+<a name="l00011"></a>00011 
+<a name="l00012"></a>00012 <span class="preprocessor">#include "<a class="code" href="Constants_8h.html">llvm/Constants.h</a>"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include "<a class="code" href="DerivedTypes_8h.html">llvm/DerivedTypes.h</a>"</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include "<a class="code" href="GlobalVariable_8h.html">llvm/GlobalVariable.h</a>"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="Module_8h.html">llvm/Module.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="ValueTracking_8h.html">llvm/Analysis/ValueTracking.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="MachineFunctionPass_8h.html">llvm/CodeGen/MachineFunctionPass.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="MachineFunction_8h.html">llvm/CodeGen/MachineFunction.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="CodeGen_2Passes_8h.html">llvm/CodeGen/Passes.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="MCObjectFileInfo_8h.html">llvm/MC/MCObjectFileInfo.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="MCSymbol_8h.html">llvm/MC/MCSymbol.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="PointerUnion_8h.html">llvm/ADT/PointerUnion.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="Dwarf_8h.html">llvm/Support/Dwarf.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="ErrorHandling_8h.html">llvm/Support/ErrorHandling.h</a>"</span>
+<a name="l00025"></a>00025 <span class="keyword">using namespace </span>llvm;
+<a name="l00026"></a>00026 <span class="keyword">using namespace </span>llvm::dwarf;
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="comment">// Handle the Pass registration stuff necessary to use DataLayout's.</span>
+<a name="l00029"></a>00029 <a class="code" href="PassSupport_8h.html#af807c9595d50b45c0008924c4679c85c">INITIALIZE_PASS</a>(<a class="code" href="classllvm_1_1MachineModuleInfo.html">MachineModuleInfo</a>, <span class="stringliteral">"machinemoduleinfo"</span>,
+<a name="l00030"></a>00030                 <span class="stringliteral">"Machine Module Information"</span>, <span class="keyword">false</span>, <span class="keyword">false</span>)
+<a name="l00031"></a>00031 <a class="code" href="classchar.html">char</a> <a class="code" href="classllvm_1_1MachineModuleInfo.html">MachineModuleInfo</a>::<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a> = 0;
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033 <span class="comment">// Out of line virtual method.</span>
+<a name="l00034"></a>00034 <a class="code" href="classllvm_1_1MachineModuleInfoImpl.html">MachineModuleInfoImpl</a>::~<a class="code" href="classllvm_1_1MachineModuleInfoImpl.html">MachineModuleInfoImpl</a>() {}
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036 <span class="keyword">namespace </span>llvm {
+<a name="l00037"></a><a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html">00037</a> <span class="keyword">class </span><a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html">MMIAddrLabelMapCallbackPtr</a> : <a class="code" href="classllvm_1_1CallbackVH.html">CallbackVH</a> {
+<a name="l00038"></a>00038   <a class="code" href="classllvm_1_1MMIAddrLabelMap.html">MMIAddrLabelMap</a> *Map;
+<a name="l00039"></a>00039 <span class="keyword">public</span>:
+<a name="l00040"></a><a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html#a91608aecbda06685b505585c7332939c">00040</a>   <a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html#a91608aecbda06685b505585c7332939c">MMIAddrLabelMapCallbackPtr</a>() : Map(0) {}
+<a name="l00041"></a><a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html#a47812247e3ba2bdbb034928752c7537a">00041</a>   <a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html#a47812247e3ba2bdbb034928752c7537a">MMIAddrLabelMapCallbackPtr</a>(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V) : <a class="code" href="classllvm_1_1CallbackVH.html">CallbackVH</a>(V), Map(0) {}
+<a name="l00042"></a>00042 
+<a name="l00043"></a><a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html#afc52c5666c2f4727f4ec6e462166f67c">00043</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html#afc52c5666c2f4727f4ec6e462166f67c">setPtr</a>(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB) {
+<a name="l00044"></a>00044     <a class="code" href="classllvm_1_1ValueHandleBase.html#afd0083214cefc788e4ccd3b404078711">ValueHandleBase::operator=</a>(BB);
+<a name="l00045"></a>00045   }
+<a name="l00046"></a>00046 
+<a name="l00047"></a><a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html#a81f17bf096eb3574e21793987e7b7f6e">00047</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html#a81f17bf096eb3574e21793987e7b7f6e">setMap</a>(<a class="code" href="classllvm_1_1MMIAddrLabelMap.html">MMIAddrLabelMap</a> *map) { Map = map; }
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049   <span class="keyword">virtual</span> <span class="keywordtype">void</span> deleted();
+<a name="l00050"></a>00050   <span class="keyword">virtual</span> <span class="keywordtype">void</span> allUsesReplacedWith(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="namespacellvm_1_1NVPTX_1_1PTXLdStInstCode.html#a91119cbee2be000c528a690252aee07ca24244a27b634ef3e256ab3c64c6fecd4">V2</a>);
+<a name="l00051"></a>00051 };
+<a name="l00052"></a>00052 
+<a name="l00053"></a><a class="code" href="classllvm_1_1MMIAddrLabelMap.html">00053</a> <span class="keyword">class </span><a class="code" href="classllvm_1_1MMIAddrLabelMap.html">MMIAddrLabelMap</a> {
+<a name="l00054"></a>00054   <a class="code" href="classllvm_1_1MCContext.html">MCContext</a> &Context;
+<a name="l00055"></a>00055   <span class="keyword">struct </span>AddrLabelSymEntry {<span class="comment"></span>
+<a name="l00056"></a>00056 <span class="comment">    /// Symbols - The symbols for the label.  This is a pointer union that is</span>
+<a name="l00057"></a>00057 <span class="comment">    /// either one symbol (the common case) or a list of symbols.</span>
+<a name="l00058"></a>00058 <span class="comment"></span>    <a class="code" href="classllvm_1_1PointerUnion.html">PointerUnion<MCSymbol *, std::vector<MCSymbol*></a>*> Symbols;
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060     <a class="code" href="classllvm_1_1Function.html">Function</a> *Fn;   <span class="comment">// The containing function of the BasicBlock.</span>
+<a name="l00061"></a>00061     <span class="keywordtype">unsigned</span> Index; <span class="comment">// The index in BBCallbacks for the BasicBlock.</span>
+<a name="l00062"></a>00062   };
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064   <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<AssertingVH<BasicBlock></a>, AddrLabelSymEntry> AddrLabelSymbols;
+<a name="l00065"></a>00065 <span class="comment"></span>
+<a name="l00066"></a>00066 <span class="comment">  /// BBCallbacks - Callbacks for the BasicBlock's that we have entries for.  We</span>
+<a name="l00067"></a>00067 <span class="comment">  /// use this so we get notified if a block is deleted or RAUWd.</span>
+<a name="l00068"></a>00068 <span class="comment"></span>  std::vector<MMIAddrLabelMapCallbackPtr> BBCallbacks;
+<a name="l00069"></a>00069 <span class="comment"></span>
+<a name="l00070"></a>00070 <span class="comment">  /// DeletedAddrLabelsNeedingEmission - This is a per-function list of symbols</span>
+<a name="l00071"></a>00071 <span class="comment">  /// whose corresponding BasicBlock got deleted.  These symbols need to be</span>
+<a name="l00072"></a>00072 <span class="comment">  /// emitted at some point in the file, so AsmPrinter emits them after the</span>
+<a name="l00073"></a>00073 <span class="comment">  /// function body.</span>
+<a name="l00074"></a>00074 <span class="comment"></span>  <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<AssertingVH<Function></a>, std::vector<MCSymbol*> >
+<a name="l00075"></a>00075     DeletedAddrLabelsNeedingEmission;
+<a name="l00076"></a>00076 <span class="keyword">public</span>:
+<a name="l00077"></a>00077 
+<a name="l00078"></a><a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a8d5793992aeaf35143e8f3759d1ce59e">00078</a>   <a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a8d5793992aeaf35143e8f3759d1ce59e">MMIAddrLabelMap</a>(<a class="code" href="classllvm_1_1MCContext.html">MCContext</a> &context) : Context(context) {}
+<a name="l00079"></a><a class="code" href="classllvm_1_1MMIAddrLabelMap.html#aa8983f98caf0d11c140dd44d52697fa0">00079</a>   <a class="code" href="classllvm_1_1MMIAddrLabelMap.html#aa8983f98caf0d11c140dd44d52697fa0">~MMIAddrLabelMap</a>() {
+<a name="l00080"></a>00080     assert(DeletedAddrLabelsNeedingEmission.empty() &&
+<a name="l00081"></a>00081            <span class="stringliteral">"Some labels for deleted blocks never got emitted"</span>);
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083     <span class="comment">// Deallocate any of the 'list of symbols' case.</span>
+<a name="l00084"></a>00084     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1DenseMap.html">DenseMap</a><<a class="code" href="classllvm_1_1AssertingVH.html">AssertingVH<BasicBlock></a>, AddrLabelSymEntry>::<a class="code" href="classstd_1_1iterator.html">iterator</a>
+<a name="l00085"></a>00085          <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = AddrLabelSymbols.begin(), E = AddrLabelSymbols.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="l00086"></a>00086       <span class="keywordflow">if</span> (<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>->second.Symbols.is<std::vector<MCSymbol*>*>())
+<a name="l00087"></a>00087         <span class="keyword">delete</span> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>->second.Symbols.get<std::vector<MCSymbol*>*>();
+<a name="l00088"></a>00088   }
+<a name="l00089"></a>00089 
+<a name="l00090"></a>00090   <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *getAddrLabelSymbol(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB);
+<a name="l00091"></a>00091   std::vector<MCSymbol*> getAddrLabelSymbolToEmit(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB);
+<a name="l00092"></a>00092 
+<a name="l00093"></a>00093   <span class="keywordtype">void</span> takeDeletedSymbolsForFunction(<a class="code" href="classllvm_1_1Function.html">Function</a> *<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>,
+<a name="l00094"></a>00094                                      std::vector<MCSymbol*> &Result);
+<a name="l00095"></a>00095 
+<a name="l00096"></a>00096   <span class="keywordtype">void</span> UpdateForDeletedBlock(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB);
+<a name="l00097"></a>00097   <span class="keywordtype">void</span> UpdateForRAUWBlock(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Old, <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *New);
+<a name="l00098"></a>00098 };
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100 
+<a name="l00101"></a><a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a805ceed5bde3fb6a1e639ddeff19b848">00101</a> <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *<a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a805ceed5bde3fb6a1e639ddeff19b848">MMIAddrLabelMap::getAddrLabelSymbol</a>(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB) {
+<a name="l00102"></a>00102   assert(BB-><a class="code" href="classllvm_1_1BasicBlock.html#a12fd03c41b1697fca070c12317794400">hasAddressTaken</a>() &&
+<a name="l00103"></a>00103          <span class="stringliteral">"Shouldn't get label for block without address taken"</span>);
+<a name="l00104"></a>00104   AddrLabelSymEntry &Entry = AddrLabelSymbols[BB];
+<a name="l00105"></a>00105 
+<a name="l00106"></a>00106   <span class="comment">// If we already had an entry for this block, just return it.</span>
+<a name="l00107"></a>00107   <span class="keywordflow">if</span> (!Entry.Symbols.isNull()) {
+<a name="l00108"></a>00108     assert(BB-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>() == Entry.Fn && <span class="stringliteral">"Parent changed"</span>);
+<a name="l00109"></a>00109     <span class="keywordflow">if</span> (Entry.Symbols.is<<a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a>*>())
+<a name="l00110"></a>00110       <span class="keywordflow">return</span> Entry.Symbols.get<<a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a>*>();
+<a name="l00111"></a>00111     <span class="keywordflow">return</span> (*Entry.Symbols.get<std::vector<MCSymbol*>*>())[0];
+<a name="l00112"></a>00112   }
+<a name="l00113"></a>00113 
+<a name="l00114"></a>00114   <span class="comment">// Otherwise, this is a new entry, create a new symbol for it and add an</span>
+<a name="l00115"></a>00115   <span class="comment">// entry to BBCallbacks so we can be notified if the BB is deleted or RAUWd.</span>
+<a name="l00116"></a>00116   BBCallbacks.push_back(BB);
+<a name="l00117"></a>00117   BBCallbacks.back().setMap(<span class="keyword">this</span>);
+<a name="l00118"></a>00118   Entry.Index = BBCallbacks.size()-1;
+<a name="l00119"></a>00119   Entry.Fn = BB-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>();
+<a name="l00120"></a>00120   <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Result = Context.CreateTempSymbol();
+<a name="l00121"></a>00121   Entry.Symbols = Result;
+<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 std::vector<MCSymbol*>
+<a name="l00126"></a><a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a0bee6c4662f8d6efbc4dace47dd02db5">00126</a> <a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a0bee6c4662f8d6efbc4dace47dd02db5">MMIAddrLabelMap::getAddrLabelSymbolToEmit</a>(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB) {
+<a name="l00127"></a>00127   assert(BB-><a class="code" href="classllvm_1_1BasicBlock.html#a12fd03c41b1697fca070c12317794400">hasAddressTaken</a>() &&
+<a name="l00128"></a>00128          <span class="stringliteral">"Shouldn't get label for block without address taken"</span>);
+<a name="l00129"></a>00129   AddrLabelSymEntry &Entry = AddrLabelSymbols[BB];
+<a name="l00130"></a>00130 
+<a name="l00131"></a>00131   std::vector<MCSymbol*> Result;
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133   <span class="comment">// If we already had an entry for this block, just return it.</span>
+<a name="l00134"></a>00134   <span class="keywordflow">if</span> (Entry.Symbols.isNull())
+<a name="l00135"></a>00135     Result.push_back(getAddrLabelSymbol(BB));
+<a name="l00136"></a>00136   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = Entry.Symbols.dyn_cast<<a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a>*>())
+<a name="l00137"></a>00137     Result.push_back(Sym);
+<a name="l00138"></a>00138   <span class="keywordflow">else</span>
+<a name="l00139"></a>00139     Result = *Entry.Symbols.get<std::vector<MCSymbol*>*>();
+<a name="l00140"></a>00140   <span class="keywordflow">return</span> Result;
+<a name="l00141"></a>00141 }
+<a name="l00142"></a>00142 
+<a name="l00143"></a>00143 <span class="comment"></span>
+<a name="l00144"></a>00144 <span class="comment">/// takeDeletedSymbolsForFunction - If we have any deleted symbols for F, return</span>
+<a name="l00145"></a>00145 <span class="comment">/// them.</span>
+<a name="l00146"></a>00146 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a4507aaf7fc7d20f19398d3e30984b7c5">MMIAddrLabelMap::</a>
+<a name="l00147"></a><a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a4507aaf7fc7d20f19398d3e30984b7c5">00147</a> <a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a4507aaf7fc7d20f19398d3e30984b7c5">takeDeletedSymbolsForFunction</a>(<a class="code" href="classllvm_1_1Function.html">Function</a> *<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>, std::vector<MCSymbol*> &Result) {
+<a name="l00148"></a>00148   <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<AssertingVH<Function></a>, std::vector<MCSymbol*> ><a class="code" href="classstd_1_1iterator.html">::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> =
+<a name="l00149"></a>00149     DeletedAddrLabelsNeedingEmission.find(F);
+<a name="l00150"></a>00150 
+<a name="l00151"></a>00151   <span class="comment">// If there are no entries for the function, just return.</span>
+<a name="l00152"></a>00152   <span class="keywordflow">if</span> (I == DeletedAddrLabelsNeedingEmission.<a class="code" href="classllvm_1_1DenseMapBase.html#a321e37d79af8b4287f8a1dcf9aff9c01">end</a>()) <span class="keywordflow">return</span>;
+<a name="l00153"></a>00153 
+<a name="l00154"></a>00154   <span class="comment">// Otherwise, take the list.</span>
+<a name="l00155"></a>00155   <a class="code" href="namespacellvm.html#a39bdaf6372ed2ef16d951fc0f6d54dd4">std::swap</a>(Result, I->second);
+<a name="l00156"></a>00156   DeletedAddrLabelsNeedingEmission.erase(I);
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 
+<a name="l00159"></a>00159 
+<a name="l00160"></a><a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a2165d3fea85e8a446d920966328d05f6">00160</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a2165d3fea85e8a446d920966328d05f6">MMIAddrLabelMap::UpdateForDeletedBlock</a>(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB) {
+<a name="l00161"></a>00161   <span class="comment">// If the block got deleted, there is no need for the symbol.  If the symbol</span>
+<a name="l00162"></a>00162   <span class="comment">// was already emitted, we can just forget about it, otherwise we need to</span>
+<a name="l00163"></a>00163   <span class="comment">// queue it up for later emission when the function is output.</span>
+<a name="l00164"></a>00164   AddrLabelSymEntry Entry = AddrLabelSymbols[BB];
+<a name="l00165"></a>00165   AddrLabelSymbols.erase(BB);
+<a name="l00166"></a>00166   assert(!Entry.Symbols.isNull() && <span class="stringliteral">"Didn't have a symbol, why a callback?"</span>);
+<a name="l00167"></a>00167   BBCallbacks[Entry.Index] = 0;  <span class="comment">// Clear the callback.</span>
+<a name="l00168"></a>00168 
+<a name="l00169"></a>00169   assert((BB-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>() == 0 || BB-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>() == Entry.Fn) &&
+<a name="l00170"></a>00170          <span class="stringliteral">"Block/parent mismatch"</span>);
+<a name="l00171"></a>00171 
+<a name="l00172"></a>00172   <span class="comment">// Handle both the single and the multiple symbols cases.</span>
+<a name="l00173"></a>00173   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = Entry.Symbols.dyn_cast<<a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a>*>()) {
+<a name="l00174"></a>00174     <span class="keywordflow">if</span> (Sym->isDefined())
+<a name="l00175"></a>00175       <span class="keywordflow">return</span>;
+<a name="l00176"></a>00176 
+<a name="l00177"></a>00177     <span class="comment">// If the block is not yet defined, we need to emit it at the end of the</span>
+<a name="l00178"></a>00178     <span class="comment">// function.  Add the symbol to the DeletedAddrLabelsNeedingEmission list</span>
+<a name="l00179"></a>00179     <span class="comment">// for the containing Function.  Since the block is being deleted, its</span>
+<a name="l00180"></a>00180     <span class="comment">// parent may already be removed, we have to get the function from 'Entry'.</span>
+<a name="l00181"></a>00181     DeletedAddrLabelsNeedingEmission[Entry.Fn].push_back(Sym);
+<a name="l00182"></a>00182   } <span class="keywordflow">else</span> {
+<a name="l00183"></a>00183     std::vector<MCSymbol*> *Syms = Entry.Symbols.get<std::vector<MCSymbol*>*>();
+<a name="l00184"></a>00184 
+<a name="l00185"></a>00185     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Syms->size(); i != e; ++i) {
+<a name="l00186"></a>00186       <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = (*Syms)[i];
+<a name="l00187"></a>00187       <span class="keywordflow">if</span> (Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a4249ad589d761f07be96a0c314de5ad2">isDefined</a>()) <span class="keywordflow">continue</span>;  <span class="comment">// Ignore already emitted labels.</span>
+<a name="l00188"></a>00188 
+<a name="l00189"></a>00189       <span class="comment">// If the block is not yet defined, we need to emit it at the end of the</span>
+<a name="l00190"></a>00190       <span class="comment">// function.  Add the symbol to the DeletedAddrLabelsNeedingEmission list</span>
+<a name="l00191"></a>00191       <span class="comment">// for the containing Function.  Since the block is being deleted, its</span>
+<a name="l00192"></a>00192       <span class="comment">// parent may already be removed, we have to get the function from</span>
+<a name="l00193"></a>00193       <span class="comment">// 'Entry'.</span>
+<a name="l00194"></a>00194       DeletedAddrLabelsNeedingEmission[Entry.Fn].push_back(Sym);
+<a name="l00195"></a>00195     }
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197     <span class="comment">// The entry is deleted, free the memory associated with the symbol list.</span>
+<a name="l00198"></a>00198     <span class="keyword">delete</span> Syms;
+<a name="l00199"></a>00199   }
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201 
+<a name="l00202"></a><a class="code" href="classllvm_1_1MMIAddrLabelMap.html#ae1f66a3975a4ae9d28d5365d6118b388">00202</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MMIAddrLabelMap.html#ae1f66a3975a4ae9d28d5365d6118b388">MMIAddrLabelMap::UpdateForRAUWBlock</a>(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Old, <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *New) {
+<a name="l00203"></a>00203   <span class="comment">// Get the entry for the RAUW'd block and remove it from our map.</span>
+<a name="l00204"></a>00204   AddrLabelSymEntry OldEntry = AddrLabelSymbols[Old];
+<a name="l00205"></a>00205   AddrLabelSymbols.erase(Old);
+<a name="l00206"></a>00206   assert(!OldEntry.Symbols.isNull() && <span class="stringliteral">"Didn't have a symbol, why a callback?"</span>);
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208   AddrLabelSymEntry &NewEntry = AddrLabelSymbols[New];
+<a name="l00209"></a>00209 
+<a name="l00210"></a>00210   <span class="comment">// If New is not address taken, just move our symbol over to it.</span>
+<a name="l00211"></a>00211   <span class="keywordflow">if</span> (NewEntry.Symbols.isNull()) {
+<a name="l00212"></a>00212     BBCallbacks[OldEntry.Index].setPtr(New);    <span class="comment">// Update the callback.</span>
+<a name="l00213"></a>00213     NewEntry = OldEntry;     <span class="comment">// Set New's entry.</span>
+<a name="l00214"></a>00214     <span class="keywordflow">return</span>;
+<a name="l00215"></a>00215   }
+<a name="l00216"></a>00216 
+<a name="l00217"></a>00217   BBCallbacks[OldEntry.Index] = 0;    <span class="comment">// Update the callback.</span>
+<a name="l00218"></a>00218 
+<a name="l00219"></a>00219   <span class="comment">// Otherwise, we need to add the old symbol to the new block's set.  If it is</span>
+<a name="l00220"></a>00220   <span class="comment">// just a single entry, upgrade it to a symbol list.</span>
+<a name="l00221"></a>00221   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *PrevSym = NewEntry.Symbols.dyn_cast<<a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a>*>()) {
+<a name="l00222"></a>00222     std::vector<MCSymbol*> *SymList = <span class="keyword">new</span> std::vector<MCSymbol*>();
+<a name="l00223"></a>00223     SymList->push_back(PrevSym);
+<a name="l00224"></a>00224     NewEntry.Symbols = SymList;
+<a name="l00225"></a>00225   }
+<a name="l00226"></a>00226 
+<a name="l00227"></a>00227   std::vector<MCSymbol*> *SymList =
+<a name="l00228"></a>00228     NewEntry.Symbols.get<std::vector<MCSymbol*>*>();
+<a name="l00229"></a>00229 
+<a name="l00230"></a>00230   <span class="comment">// If the old entry was a single symbol, add it.</span>
+<a name="l00231"></a>00231   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = OldEntry.Symbols.dyn_cast<<a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a>*>()) {
+<a name="l00232"></a>00232     SymList->push_back(Sym);
+<a name="l00233"></a>00233     <span class="keywordflow">return</span>;
+<a name="l00234"></a>00234   }
+<a name="l00235"></a>00235 
+<a name="l00236"></a>00236   <span class="comment">// Otherwise, concatenate the list.</span>
+<a name="l00237"></a>00237   std::vector<MCSymbol*> *Syms =OldEntry.Symbols.get<std::vector<MCSymbol*>*>();
+<a name="l00238"></a>00238   SymList->insert(SymList->end(), Syms->begin(), Syms->end());
+<a name="l00239"></a>00239   <span class="keyword">delete</span> Syms;
+<a name="l00240"></a>00240 }
+<a name="l00241"></a>00241 
+<a name="l00242"></a>00242 
+<a name="l00243"></a><a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html#a152f36307766172fce4c97145f36cbf4">00243</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html#a152f36307766172fce4c97145f36cbf4">MMIAddrLabelMapCallbackPtr::deleted</a>() {
+<a name="l00244"></a>00244   Map->UpdateForDeletedBlock(cast<BasicBlock>(getValPtr()));
+<a name="l00245"></a>00245 }
+<a name="l00246"></a>00246 
+<a name="l00247"></a><a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html#a98be38cf63d91c5812f1db2612b132b9">00247</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MMIAddrLabelMapCallbackPtr.html#a98be38cf63d91c5812f1db2612b132b9">MMIAddrLabelMapCallbackPtr::allUsesReplacedWith</a>(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="namespacellvm_1_1NVPTX_1_1PTXLdStInstCode.html#a91119cbee2be000c528a690252aee07ca24244a27b634ef3e256ab3c64c6fecd4">V2</a>) {
+<a name="l00248"></a>00248   Map->UpdateForRAUWBlock(cast<BasicBlock>(getValPtr()), cast<BasicBlock>(V2));
+<a name="l00249"></a>00249 }
+<a name="l00250"></a>00250 
+<a name="l00251"></a>00251 
+<a name="l00252"></a>00252 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00253"></a>00253 
+<a name="l00254"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#afc16c6c78f6141900d27f5868feaee48">00254</a> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a723ba3bf37dbeb160e3659562c42b615">MachineModuleInfo::MachineModuleInfo</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCAsmInfo.html">MCAsmInfo</a> &MAI,
+<a name="l00255"></a>00255                                      <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCRegisterInfo.html">MCRegisterInfo</a> &MRI,
+<a name="l00256"></a>00256                                      <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCObjectFileInfo.html">MCObjectFileInfo</a> *MOFI)
+<a name="l00257"></a>00257   : <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>), Context(MAI, MRI, MOFI),
+<a name="l00258"></a>00258     ObjFileMMI(0), CompactUnwindEncoding(0), CurCallSite(0), CallsEHReturn(0),
+<a name="l00259"></a>00259     CallsUnwindInit(0), DbgInfoAvailable(<a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>),
+<a name="l00260"></a>00260     UsesVAFloatArgument(<a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>) {
+<a name="l00261"></a>00261   <a class="code" href="namespacellvm.html#aa0a9047f43bbeedb563db32d5476013e">initializeMachineModuleInfoPass</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00262"></a>00262   <span class="comment">// Always emit some info, by default "no personality" info.</span>
+<a name="l00263"></a>00263   Personalities.push_back(NULL);
+<a name="l00264"></a>00264   AddrLabelSymbols = 0;
+<a name="l00265"></a>00265   TheModule = 0;
+<a name="l00266"></a>00266 }
+<a name="l00267"></a>00267 
+<a name="l00268"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a723ba3bf37dbeb160e3659562c42b615">00268</a> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a723ba3bf37dbeb160e3659562c42b615">MachineModuleInfo::MachineModuleInfo</a>()
+<a name="l00269"></a>00269   : <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="l00270"></a>00270     Context(*(<a class="code" href="classllvm_1_1MCAsmInfo.html">MCAsmInfo</a>*)0, *(<a class="code" href="classllvm_1_1MCRegisterInfo.html">MCRegisterInfo</a>*)0, (<a class="code" href="classllvm_1_1MCObjectFileInfo.html">MCObjectFileInfo</a>*)0) {
+<a name="l00271"></a>00271   <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"This MachineModuleInfo constructor should never be called, "</span>
+<a name="l00272"></a>00272                    <span class="stringliteral">"MMI should always be explicitly constructed by "</span>
+<a name="l00273"></a>00273                    <span class="stringliteral">"LLVMTargetMachine"</span>);
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275 
+<a name="l00276"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a9167fd88b6fe11fe044d4303a837a9f5">00276</a> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a9167fd88b6fe11fe044d4303a837a9f5">MachineModuleInfo::~MachineModuleInfo</a>() {
+<a name="l00277"></a>00277   <span class="keyword">delete</span> ObjFileMMI;
+<a name="l00278"></a>00278 
+<a name="l00279"></a>00279   <span class="comment">// FIXME: Why isn't doFinalization being called??</span>
+<a name="l00280"></a>00280   <span class="comment">//assert(AddrLabelSymbols == 0 && "doFinalization not called");</span>
+<a name="l00281"></a>00281   <span class="keyword">delete</span> AddrLabelSymbols;
+<a name="l00282"></a>00282   AddrLabelSymbols = 0;
+<a name="l00283"></a>00283 }
+<a name="l00284"></a>00284 <span class="comment"></span>
+<a name="l00285"></a>00285 <span class="comment">/// doInitialization - Initialize the state for a new module.</span>
+<a name="l00286"></a>00286 <span class="comment">///</span>
+<a name="l00287"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a1d067a318501e7609eb8edd36d7748fd">00287</a> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a1d067a318501e7609eb8edd36d7748fd">MachineModuleInfo::doInitialization</a>() {
+<a name="l00288"></a>00288   assert(AddrLabelSymbols == 0 && <span class="stringliteral">"Improperly initialized"</span>);
+<a name="l00289"></a>00289   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00290"></a>00290 }
+<a name="l00291"></a>00291 <span class="comment"></span>
+<a name="l00292"></a>00292 <span class="comment">/// doFinalization - Tear down the state after completion of a module.</span>
+<a name="l00293"></a>00293 <span class="comment">///</span>
+<a name="l00294"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a2852d100d692ddb6306b259e4b654a25">00294</a> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a2852d100d692ddb6306b259e4b654a25">MachineModuleInfo::doFinalization</a>() {
+<a name="l00295"></a>00295   <span class="keyword">delete</span> AddrLabelSymbols;
+<a name="l00296"></a>00296   AddrLabelSymbols = 0;
+<a name="l00297"></a>00297   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00298"></a>00298 }
+<a name="l00299"></a>00299 <span class="comment"></span>
+<a name="l00300"></a>00300 <span class="comment">/// EndFunction - Discard function meta information.</span>
+<a name="l00301"></a>00301 <span class="comment">///</span>
+<a name="l00302"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#af2276296154b5ff16b62c373b1fb7959">00302</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#af2276296154b5ff16b62c373b1fb7959">MachineModuleInfo::EndFunction</a>() {
+<a name="l00303"></a>00303   <span class="comment">// Clean up frame info.</span>
+<a name="l00304"></a>00304   FrameMoves.clear();
+<a name="l00305"></a>00305 
+<a name="l00306"></a>00306   <span class="comment">// Clean up exception info.</span>
+<a name="l00307"></a>00307   LandingPads.clear();
+<a name="l00308"></a>00308   CallSiteMap.<a class="code" href="classllvm_1_1DenseMapBase.html#a6467bd6bb128c8b69a478548fc17351c">clear</a>();
+<a name="l00309"></a>00309   TypeInfos.clear();
+<a name="l00310"></a>00310   FilterIds.clear();
+<a name="l00311"></a>00311   FilterEnds.clear();
+<a name="l00312"></a>00312   CallsEHReturn = 0;
+<a name="l00313"></a>00313   CallsUnwindInit = 0;
+<a name="l00314"></a>00314   CompactUnwindEncoding = 0;
+<a name="l00315"></a>00315   <a class="code" href="classllvm_1_1MachineModuleInfo.html#a821a3bc4e5177da935231766e16a661b">VariableDbgInfo</a>.<a class="code" href="classllvm_1_1SmallVectorImpl.html#aac0ea55010b7b1a301e65a0baea057aa">clear</a>();
+<a name="l00316"></a>00316 }
+<a name="l00317"></a>00317 <span class="comment"></span>
+<a name="l00318"></a>00318 <span class="comment">/// AnalyzeModule - Scan the module for global debug information.</span>
+<a name="l00319"></a>00319 <span class="comment">///</span>
+<a name="l00320"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a72fe0883c329d3a520e99dfeefedd480">00320</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a72fe0883c329d3a520e99dfeefedd480">MachineModuleInfo::AnalyzeModule</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Module.html" title="The main container class for the LLVM Intermediate Representation.">Module</a> &M) {
+<a name="l00321"></a>00321   <span class="comment">// Insert functions in the llvm.used array (but not llvm.compiler.used) into</span>
+<a name="l00322"></a>00322   <span class="comment">// UsedFunctions.</span>
+<a name="l00323"></a>00323   <span class="keyword">const</span> <a class="code" href="classllvm_1_1GlobalVariable.html">GlobalVariable</a> *GV = M.<a class="code" href="classllvm_1_1Module.html#a497332fee1b70dcef5dda11dc62be1c6">getGlobalVariable</a>(<span class="stringliteral">"llvm.used"</span>);
+<a name="l00324"></a>00324   <span class="keywordflow">if</span> (!GV || !GV-><a class="code" href="classllvm_1_1GlobalVariable.html#a0d94a4e78681b58ae3b2dbbd0627a847">hasInitializer</a>()) <span class="keywordflow">return</span>;
+<a name="l00325"></a>00325 
+<a name="l00326"></a>00326   <span class="comment">// Should be an array of 'i8*'.</span>
+<a name="l00327"></a>00327   <span class="keyword">const</span> <a class="code" href="classllvm_1_1ConstantArray.html">ConstantArray</a> *InitList = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1ConstantArray.html">ConstantArray</a>>(GV-><a class="code" href="classllvm_1_1GlobalVariable.html#aa4d95acdd770e27036d21edb3cad65e1">getInitializer</a>());
+<a name="l00328"></a>00328   <span class="keywordflow">if</span> (InitList == 0) <span class="keywordflow">return</span>;
+<a name="l00329"></a>00329 
+<a name="l00330"></a>00330   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = InitList-><a class="code" href="classllvm_1_1User.html#a2f81e0c1fc6554df7ad2eafabf5fc5a5">getNumOperands</a>(); i != e; ++i)
+<a name="l00331"></a>00331     <span class="keywordflow">if</span> (<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="l00332"></a>00332           dyn_cast<Function>(InitList-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(i)-><a class="code" href="classllvm_1_1Value.html#a38ea12c04523d63adda732b9c5d6da0a">stripPointerCasts</a>()))
+<a name="l00333"></a>00333       UsedFunctions.<a class="code" href="classllvm_1_1SmallPtrSet.html#a9b6dd0fc7a648a939e571246045b673e">insert</a>(<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>);
+<a name="l00334"></a>00334 }
+<a name="l00335"></a>00335 
+<a name="l00336"></a>00336 <span class="comment">//===- Address of Block Management ----------------------------------------===//</span>
+<a name="l00337"></a>00337 
+<a name="l00338"></a>00338 <span class="comment"></span>
+<a name="l00339"></a>00339 <span class="comment">/// getAddrLabelSymbol - Return the symbol to be used for the specified basic</span>
+<a name="l00340"></a>00340 <span class="comment">/// block when its address is taken.  This cannot be its normal LBB label</span>
+<a name="l00341"></a>00341 <span class="comment">/// because the block may be accessed outside its containing function.</span>
+<a name="l00342"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a2f83b389e4fc4a94d5b6c28e7b807cdd">00342</a> <span class="comment"></span><a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *<a class="code" href="classllvm_1_1MachineModuleInfo.html#a2f83b389e4fc4a94d5b6c28e7b807cdd">MachineModuleInfo::getAddrLabelSymbol</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB) {
+<a name="l00343"></a>00343   <span class="comment">// Lazily create AddrLabelSymbols.</span>
+<a name="l00344"></a>00344   <span class="keywordflow">if</span> (AddrLabelSymbols == 0)
+<a name="l00345"></a>00345     AddrLabelSymbols = <span class="keyword">new</span> <a class="code" href="classllvm_1_1MMIAddrLabelMap.html">MMIAddrLabelMap</a>(Context);
+<a name="l00346"></a>00346   <span class="keywordflow">return</span> AddrLabelSymbols-><a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a805ceed5bde3fb6a1e639ddeff19b848">getAddrLabelSymbol</a>(const_cast<BasicBlock*>(BB));
+<a name="l00347"></a>00347 }
+<a name="l00348"></a>00348 <span class="comment"></span>
+<a name="l00349"></a>00349 <span class="comment">/// getAddrLabelSymbolToEmit - Return the symbol to be used for the specified</span>
+<a name="l00350"></a>00350 <span class="comment">/// basic block when its address is taken.  If other blocks were RAUW'd to</span>
+<a name="l00351"></a>00351 <span class="comment">/// this one, we may have to emit them as well, return the whole set.</span>
+<a name="l00352"></a>00352 <span class="comment"></span>std::vector<MCSymbol*> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a438ba2755905ebcd9b87a8630f32a419">MachineModuleInfo::</a>
+<a name="l00353"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a438ba2755905ebcd9b87a8630f32a419">00353</a> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a438ba2755905ebcd9b87a8630f32a419">getAddrLabelSymbolToEmit</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB) {
+<a name="l00354"></a>00354   <span class="comment">// Lazily create AddrLabelSymbols.</span>
+<a name="l00355"></a>00355   <span class="keywordflow">if</span> (AddrLabelSymbols == 0)
+<a name="l00356"></a>00356     AddrLabelSymbols = <span class="keyword">new</span> <a class="code" href="classllvm_1_1MMIAddrLabelMap.html">MMIAddrLabelMap</a>(Context);
+<a name="l00357"></a>00357  <span class="keywordflow">return</span> AddrLabelSymbols-><a class="code" href="classllvm_1_1MMIAddrLabelMap.html#a0bee6c4662f8d6efbc4dace47dd02db5">getAddrLabelSymbolToEmit</a>(const_cast<BasicBlock*>(BB));
+<a name="l00358"></a>00358 }
+<a name="l00359"></a>00359 
+<a name="l00360"></a>00360 <span class="comment"></span>
+<a name="l00361"></a>00361 <span class="comment">/// takeDeletedSymbolsForFunction - If the specified function has had any</span>
+<a name="l00362"></a>00362 <span class="comment">/// references to address-taken blocks generated, but the block got deleted,</span>
+<a name="l00363"></a>00363 <span class="comment">/// return the symbol now so we can emit it.  This prevents emitting a</span>
+<a name="l00364"></a>00364 <span class="comment">/// reference to a symbol that has no definition.</span>
+<a name="l00365"></a>00365 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#aff1c619ad216aeecedc5c55bc4afa7bc">MachineModuleInfo::</a>
+<a name="l00366"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#aff1c619ad216aeecedc5c55bc4afa7bc">00366</a> <a class="code" href="classllvm_1_1MachineModuleInfo.html#aff1c619ad216aeecedc5c55bc4afa7bc">takeDeletedSymbolsForFunction</a>(<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="l00367"></a>00367                               std::vector<MCSymbol*> &Result) {
+<a name="l00368"></a>00368   <span class="comment">// If no blocks have had their addresses taken, we're done.</span>
+<a name="l00369"></a>00369   <span class="keywordflow">if</span> (AddrLabelSymbols == 0) <span class="keywordflow">return</span>;
+<a name="l00370"></a>00370   <span class="keywordflow">return</span> AddrLabelSymbols->
+<a name="l00371"></a>00371      <a class="code" href="classllvm_1_1MachineModuleInfo.html#aff1c619ad216aeecedc5c55bc4afa7bc">takeDeletedSymbolsForFunction</a>(const_cast<Function*>(F), Result);
+<a name="l00372"></a>00372 }
+<a name="l00373"></a>00373 
+<a name="l00374"></a>00374 <span class="comment">//===- EH -----------------------------------------------------------------===//</span>
+<a name="l00375"></a>00375 <span class="comment"></span>
+<a name="l00376"></a>00376 <span class="comment">/// getOrCreateLandingPadInfo - Find or create an LandingPadInfo for the</span>
+<a name="l00377"></a>00377 <span class="comment">/// specified MachineBasicBlock.</span>
+<a name="l00378"></a>00378 <span class="comment"></span><a class="code" href="structllvm_1_1LandingPadInfo.html">LandingPadInfo</a> &<a class="code" href="classllvm_1_1MachineModuleInfo.html#a4c862ecd65627774f2aacaf4680f0c9c">MachineModuleInfo::getOrCreateLandingPadInfo</a>
+<a name="l00379"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a4c862ecd65627774f2aacaf4680f0c9c">00379</a>     (<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *LandingPad) {
+<a name="l00380"></a>00380   <span class="keywordtype">unsigned</span> <a class="code" href="regcomp_8c.html#a0240ac851181b84ac374872dc5434ee4">N</a> = LandingPads.size();
+<a name="l00381"></a>00381   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < N; ++i) {
+<a name="l00382"></a>00382     <a class="code" href="structllvm_1_1LandingPadInfo.html">LandingPadInfo</a> &LP = LandingPads[i];
+<a name="l00383"></a>00383     <span class="keywordflow">if</span> (LP.<a class="code" href="structllvm_1_1LandingPadInfo.html#ace429031aa5069231e56f832839c400e">LandingPadBlock</a> == LandingPad)
+<a name="l00384"></a>00384       <span class="keywordflow">return</span> LP;
+<a name="l00385"></a>00385   }
+<a name="l00386"></a>00386 
+<a name="l00387"></a>00387   LandingPads.push_back(<a class="code" href="structllvm_1_1LandingPadInfo.html">LandingPadInfo</a>(LandingPad));
+<a name="l00388"></a>00388   <span class="keywordflow">return</span> LandingPads[N];
+<a name="l00389"></a>00389 }
+<a name="l00390"></a>00390 <span class="comment"></span>
+<a name="l00391"></a>00391 <span class="comment">/// addInvoke - Provide the begin and end labels of an invoke style call and</span>
+<a name="l00392"></a>00392 <span class="comment">/// associate it with a try landing pad block.</span>
+<a name="l00393"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#aa22734cd3bdceb7635db22d87ba2a35c">00393</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#aa22734cd3bdceb7635db22d87ba2a35c">MachineModuleInfo::addInvoke</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *LandingPad,
+<a name="l00394"></a>00394                                   <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *BeginLabel, <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *EndLabel) {
+<a name="l00395"></a>00395   <a class="code" href="structllvm_1_1LandingPadInfo.html">LandingPadInfo</a> &LP = <a class="code" href="classllvm_1_1MachineModuleInfo.html#a4c862ecd65627774f2aacaf4680f0c9c">getOrCreateLandingPadInfo</a>(LandingPad);
+<a name="l00396"></a>00396   LP.<a class="code" href="structllvm_1_1LandingPadInfo.html#aeb33c4dc059fdbe7cd2e5f16c12aa5d3">BeginLabels</a>.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(BeginLabel);
+<a name="l00397"></a>00397   LP.<a class="code" href="structllvm_1_1LandingPadInfo.html#a1494fc9f00b1d3b5d883886c16ece4a1">EndLabels</a>.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(EndLabel);
+<a name="l00398"></a>00398 }
+<a name="l00399"></a>00399 <span class="comment"></span>
+<a name="l00400"></a>00400 <span class="comment">/// addLandingPad - Provide the label of a try LandingPad block.</span>
+<a name="l00401"></a>00401 <span class="comment">///</span>
+<a name="l00402"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#ac504b93158e311edcdf423930b998bc9">00402</a> <span class="comment"></span><a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *<a class="code" href="classllvm_1_1MachineModuleInfo.html#ac504b93158e311edcdf423930b998bc9">MachineModuleInfo::addLandingPad</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *LandingPad) {
+<a name="l00403"></a>00403   <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *LandingPadLabel = Context.<a class="code" href="classllvm_1_1MCContext.html#af0efba8326e35ce320f4d2fd346cea3f">CreateTempSymbol</a>();
+<a name="l00404"></a>00404   <a class="code" href="structllvm_1_1LandingPadInfo.html">LandingPadInfo</a> &LP = <a class="code" href="classllvm_1_1MachineModuleInfo.html#a4c862ecd65627774f2aacaf4680f0c9c">getOrCreateLandingPadInfo</a>(LandingPad);
+<a name="l00405"></a>00405   LP.<a class="code" href="structllvm_1_1LandingPadInfo.html#a1197e6ef704b54459dcb2586cf4d5ba2">LandingPadLabel</a> = LandingPadLabel;
+<a name="l00406"></a>00406   <span class="keywordflow">return</span> LandingPadLabel;
+<a name="l00407"></a>00407 }
+<a name="l00408"></a>00408 <span class="comment"></span>
+<a name="l00409"></a>00409 <span class="comment">/// addPersonality - Provide the personality function for the exception</span>
+<a name="l00410"></a>00410 <span class="comment">/// information.</span>
+<a name="l00411"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a04129f05b579afbe8dfb542550a514df">00411</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a04129f05b579afbe8dfb542550a514df">MachineModuleInfo::addPersonality</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *LandingPad,
+<a name="l00412"></a>00412                                        <span class="keyword">const</span> <a class="code" href="classllvm_1_1Function.html">Function</a> *Personality) {
+<a name="l00413"></a>00413   <a class="code" href="structllvm_1_1LandingPadInfo.html">LandingPadInfo</a> &LP = <a class="code" href="classllvm_1_1MachineModuleInfo.html#a4c862ecd65627774f2aacaf4680f0c9c">getOrCreateLandingPadInfo</a>(LandingPad);
+<a name="l00414"></a>00414   LP.<a class="code" href="structllvm_1_1LandingPadInfo.html#a1637635a9bee0f19067f956054b7ce00">Personality</a> = Personality;
+<a name="l00415"></a>00415 
+<a name="l00416"></a>00416   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < Personalities.size(); ++i)
+<a name="l00417"></a>00417     <span class="keywordflow">if</span> (Personalities[i] == Personality)
+<a name="l00418"></a>00418       <span class="keywordflow">return</span>;
+<a name="l00419"></a>00419 
+<a name="l00420"></a>00420   <span class="comment">// If this is the first personality we're adding go</span>
+<a name="l00421"></a>00421   <span class="comment">// ahead and add it at the beginning.</span>
+<a name="l00422"></a>00422   <span class="keywordflow">if</span> (Personalities[0] == NULL)
+<a name="l00423"></a>00423     Personalities[0] = Personality;
+<a name="l00424"></a>00424   <span class="keywordflow">else</span>
+<a name="l00425"></a>00425     Personalities.push_back(Personality);
+<a name="l00426"></a>00426 }
+<a name="l00427"></a>00427 <span class="comment"></span>
+<a name="l00428"></a>00428 <span class="comment">/// addCatchTypeInfo - Provide the catch typeinfo for a landing pad.</span>
+<a name="l00429"></a>00429 <span class="comment">///</span>
+<a name="l00430"></a>00430 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a1f2d862730db92c66efb1f497351b3ea">MachineModuleInfo::</a>
+<a name="l00431"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a1f2d862730db92c66efb1f497351b3ea">00431</a> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a1f2d862730db92c66efb1f497351b3ea">addCatchTypeInfo</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *LandingPad,
+<a name="l00432"></a>00432                  <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<const GlobalVariable *></a> TyInfo) {
+<a name="l00433"></a>00433   <a class="code" href="structllvm_1_1LandingPadInfo.html">LandingPadInfo</a> &LP = <a class="code" href="classllvm_1_1MachineModuleInfo.html#a4c862ecd65627774f2aacaf4680f0c9c">getOrCreateLandingPadInfo</a>(LandingPad);
+<a name="l00434"></a>00434   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <a class="code" href="regcomp_8c.html#a0240ac851181b84ac374872dc5434ee4">N</a> = TyInfo.<a class="code" href="classllvm_1_1ArrayRef.html#a76878250107ee24ef7339870bdda4bcf" title="size - Get the array size.">size</a>(); <a class="code" href="regcomp_8c.html#a0240ac851181b84ac374872dc5434ee4">N</a>; --<a class="code" href="regcomp_8c.html#a0240ac851181b84ac374872dc5434ee4">N</a>)
+<a name="l00435"></a>00435     LP.<a class="code" href="structllvm_1_1LandingPadInfo.html#af8df3c441f1b6d7b8606a1604d5c29e3">TypeIds</a>.push_back(<a class="code" href="classllvm_1_1MachineModuleInfo.html#a7fe29ab1f57bbc1da9e12ce8f8d38bcc">getTypeIDFor</a>(TyInfo[<a class="code" href="regcomp_8c.html#a0240ac851181b84ac374872dc5434ee4">N</a> - 1]));
+<a name="l00436"></a>00436 }
+<a name="l00437"></a>00437 <span class="comment"></span>
+<a name="l00438"></a>00438 <span class="comment">/// addFilterTypeInfo - Provide the filter typeinfo for a landing pad.</span>
+<a name="l00439"></a>00439 <span class="comment">///</span>
+<a name="l00440"></a>00440 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a4a3edd7e0e6c2d7e43e6779e400d7fa0">MachineModuleInfo::</a>
+<a name="l00441"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a4a3edd7e0e6c2d7e43e6779e400d7fa0">00441</a> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a4a3edd7e0e6c2d7e43e6779e400d7fa0">addFilterTypeInfo</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *LandingPad,
+<a name="l00442"></a>00442                   <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<const GlobalVariable *></a> TyInfo) {
+<a name="l00443"></a>00443   <a class="code" href="structllvm_1_1LandingPadInfo.html">LandingPadInfo</a> &LP = <a class="code" href="classllvm_1_1MachineModuleInfo.html#a4c862ecd65627774f2aacaf4680f0c9c">getOrCreateLandingPadInfo</a>(LandingPad);
+<a name="l00444"></a>00444   std::vector<unsigned> IdsInFilter(TyInfo.<a class="code" href="classllvm_1_1ArrayRef.html#a76878250107ee24ef7339870bdda4bcf" title="size - Get the array size.">size</a>());
+<a name="l00445"></a>00445   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = 0, E = TyInfo.<a class="code" href="classllvm_1_1ArrayRef.html#a76878250107ee24ef7339870bdda4bcf" title="size - Get the array size.">size</a>(); <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)
+<a name="l00446"></a>00446     IdsInFilter[<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>] = <a class="code" href="classllvm_1_1MachineModuleInfo.html#a7fe29ab1f57bbc1da9e12ce8f8d38bcc">getTypeIDFor</a>(TyInfo[<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>]);
+<a name="l00447"></a>00447   LP.<a class="code" href="structllvm_1_1LandingPadInfo.html#af8df3c441f1b6d7b8606a1604d5c29e3">TypeIds</a>.push_back(<a class="code" href="classllvm_1_1MachineModuleInfo.html#a6fb28d186567cbadb2a450bfb59e8100">getFilterIDFor</a>(IdsInFilter));
+<a name="l00448"></a>00448 }
+<a name="l00449"></a>00449 <span class="comment"></span>
+<a name="l00450"></a>00450 <span class="comment">/// addCleanup - Add a cleanup action for a landing pad.</span>
+<a name="l00451"></a>00451 <span class="comment">///</span>
+<a name="l00452"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a8fd626638370506d5e500902ad56cdc5">00452</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a8fd626638370506d5e500902ad56cdc5">MachineModuleInfo::addCleanup</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *LandingPad) {
+<a name="l00453"></a>00453   <a class="code" href="structllvm_1_1LandingPadInfo.html">LandingPadInfo</a> &LP = <a class="code" href="classllvm_1_1MachineModuleInfo.html#a4c862ecd65627774f2aacaf4680f0c9c">getOrCreateLandingPadInfo</a>(LandingPad);
+<a name="l00454"></a>00454   LP.<a class="code" href="structllvm_1_1LandingPadInfo.html#af8df3c441f1b6d7b8606a1604d5c29e3">TypeIds</a>.push_back(0);
+<a name="l00455"></a>00455 }
+<a name="l00456"></a>00456 <span class="comment"></span>
+<a name="l00457"></a>00457 <span class="comment">/// TidyLandingPads - Remap landing pad labels and remove any deleted landing</span>
+<a name="l00458"></a>00458 <span class="comment">/// pads.</span>
+<a name="l00459"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a6466d3283d5c434a7e72e5ef264452a8">00459</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a6466d3283d5c434a7e72e5ef264452a8">MachineModuleInfo::TidyLandingPads</a>(<a class="code" href="classllvm_1_1DenseMap.html">DenseMap<MCSymbol*, uintptr_t></a> *LPMap) {
+<a name="l00460"></a>00460   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != LandingPads.size(); ) {
+<a name="l00461"></a>00461     <a class="code" href="structllvm_1_1LandingPadInfo.html">LandingPadInfo</a> &LandingPad = LandingPads[i];
+<a name="l00462"></a>00462     <span class="keywordflow">if</span> (LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#a1197e6ef704b54459dcb2586cf4d5ba2">LandingPadLabel</a> &&
+<a name="l00463"></a>00463         !LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#a1197e6ef704b54459dcb2586cf4d5ba2">LandingPadLabel</a>-><a class="code" href="classllvm_1_1MCSymbol.html#a4249ad589d761f07be96a0c314de5ad2">isDefined</a>() &&
+<a name="l00464"></a>00464         (!LPMap || (*LPMap)[LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#a1197e6ef704b54459dcb2586cf4d5ba2">LandingPadLabel</a>] == 0))
+<a name="l00465"></a>00465       LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#a1197e6ef704b54459dcb2586cf4d5ba2">LandingPadLabel</a> = 0;
+<a name="l00466"></a>00466 
+<a name="l00467"></a>00467     <span class="comment">// Special case: we *should* emit LPs with null LP MBB. This indicates</span>
+<a name="l00468"></a>00468     <span class="comment">// "nounwind" case.</span>
+<a name="l00469"></a>00469     <span class="keywordflow">if</span> (!LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#a1197e6ef704b54459dcb2586cf4d5ba2">LandingPadLabel</a> && LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#ace429031aa5069231e56f832839c400e">LandingPadBlock</a>) {
+<a name="l00470"></a>00470       LandingPads.erase(LandingPads.begin() + i);
+<a name="l00471"></a>00471       <span class="keywordflow">continue</span>;
+<a name="l00472"></a>00472     }
+<a name="l00473"></a>00473 
+<a name="l00474"></a>00474     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0, e = LandingPads[i].BeginLabels.size(); j != e; ++j) {
+<a name="l00475"></a>00475       <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *BeginLabel = LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#aeb33c4dc059fdbe7cd2e5f16c12aa5d3">BeginLabels</a>[j];
+<a name="l00476"></a>00476       <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *EndLabel = LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#a1494fc9f00b1d3b5d883886c16ece4a1">EndLabels</a>[j];
+<a name="l00477"></a>00477       <span class="keywordflow">if</span> ((BeginLabel-><a class="code" href="classllvm_1_1MCSymbol.html#a4249ad589d761f07be96a0c314de5ad2">isDefined</a>() ||
+<a name="l00478"></a>00478            (LPMap && (*LPMap)[BeginLabel] != 0)) &&
+<a name="l00479"></a>00479           (EndLabel-><a class="code" href="classllvm_1_1MCSymbol.html#a4249ad589d761f07be96a0c314de5ad2">isDefined</a>() ||
+<a name="l00480"></a>00480            (LPMap && (*LPMap)[EndLabel] != 0))) <span class="keywordflow">continue</span>;
+<a name="l00481"></a>00481 
+<a name="l00482"></a>00482       LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#aeb33c4dc059fdbe7cd2e5f16c12aa5d3">BeginLabels</a>.<a class="code" href="classllvm_1_1SmallVectorImpl.html#a18c110c35e9133222a37b28d30f8a90f">erase</a>(LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#aeb33c4dc059fdbe7cd2e5f16c12aa5d3">BeginLabels</a>.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a8a045d250952c0867382a9840ee18fdf">begin</a>() + j);
+<a name="l00483"></a>00483       LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#a1494fc9f00b1d3b5d883886c16ece4a1">EndLabels</a>.<a class="code" href="classllvm_1_1SmallVectorImpl.html#a18c110c35e9133222a37b28d30f8a90f">erase</a>(LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#a1494fc9f00b1d3b5d883886c16ece4a1">EndLabels</a>.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a8a045d250952c0867382a9840ee18fdf">begin</a>() + j);
+<a name="l00484"></a>00484       --j, --e;
+<a name="l00485"></a>00485     }
+<a name="l00486"></a>00486 
+<a name="l00487"></a>00487     <span class="comment">// Remove landing pads with no try-ranges.</span>
+<a name="l00488"></a>00488     <span class="keywordflow">if</span> (LandingPads[i].BeginLabels.empty()) {
+<a name="l00489"></a>00489       LandingPads.erase(LandingPads.begin() + i);
+<a name="l00490"></a>00490       <span class="keywordflow">continue</span>;
+<a name="l00491"></a>00491     }
+<a name="l00492"></a>00492 
+<a name="l00493"></a>00493     <span class="comment">// If there is no landing pad, ensure that the list of typeids is empty.</span>
+<a name="l00494"></a>00494     <span class="comment">// If the only typeid is a cleanup, this is the same as having no typeids.</span>
+<a name="l00495"></a>00495     <span class="keywordflow">if</span> (!LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#ace429031aa5069231e56f832839c400e">LandingPadBlock</a> ||
+<a name="l00496"></a>00496         (LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#af8df3c441f1b6d7b8606a1604d5c29e3">TypeIds</a>.size() == 1 && !LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#af8df3c441f1b6d7b8606a1604d5c29e3">TypeIds</a>[0]))
+<a name="l00497"></a>00497       LandingPad.<a class="code" href="structllvm_1_1LandingPadInfo.html#af8df3c441f1b6d7b8606a1604d5c29e3">TypeIds</a>.clear();
+<a name="l00498"></a>00498     ++i;
+<a name="l00499"></a>00499   }
+<a name="l00500"></a>00500 }
+<a name="l00501"></a>00501 <span class="comment"></span>
+<a name="l00502"></a>00502 <span class="comment">/// setCallSiteLandingPad - Map the landing pad's EH symbol to the call site</span>
+<a name="l00503"></a>00503 <span class="comment">/// indexes.</span>
+<a name="l00504"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a1c2f69d218d1271947ae1e618cccb34b">00504</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a1c2f69d218d1271947ae1e618cccb34b">MachineModuleInfo::setCallSiteLandingPad</a>(<a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym,
+<a name="l00505"></a>00505                                               <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<unsigned></a> Sites) {
+<a name="l00506"></a>00506   LPadToCallSiteMap[Sym].append(Sites.<a class="code" href="classllvm_1_1ArrayRef.html#a836367b39ed630bf14db99923c22740e">begin</a>(), Sites.<a class="code" href="classllvm_1_1ArrayRef.html#a38ed8cc3c342ad6910e8c869d3e2b9cf">end</a>());
+<a name="l00507"></a>00507 }
+<a name="l00508"></a>00508 <span class="comment"></span>
+<a name="l00509"></a>00509 <span class="comment">/// getTypeIDFor - Return the type id for the specified typeinfo.  This is</span>
+<a name="l00510"></a>00510 <span class="comment">/// function wide.</span>
+<a name="l00511"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a7fe29ab1f57bbc1da9e12ce8f8d38bcc">00511</a> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a7fe29ab1f57bbc1da9e12ce8f8d38bcc">MachineModuleInfo::getTypeIDFor</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1GlobalVariable.html">GlobalVariable</a> *TI) {
+<a name="l00512"></a>00512   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, <a class="code" href="regcomp_8c.html#a0240ac851181b84ac374872dc5434ee4">N</a> = TypeInfos.size(); i != <a class="code" href="regcomp_8c.html#a0240ac851181b84ac374872dc5434ee4">N</a>; ++i)
+<a name="l00513"></a>00513     <span class="keywordflow">if</span> (TypeInfos[i] == TI) <span class="keywordflow">return</span> i + 1;
+<a name="l00514"></a>00514 
+<a name="l00515"></a>00515   TypeInfos.push_back(TI);
+<a name="l00516"></a>00516   <span class="keywordflow">return</span> TypeInfos.size();
+<a name="l00517"></a>00517 }
+<a name="l00518"></a>00518 <span class="comment"></span>
+<a name="l00519"></a>00519 <span class="comment">/// getFilterIDFor - Return the filter id for the specified typeinfos.  This is</span>
+<a name="l00520"></a>00520 <span class="comment">/// function wide.</span>
+<a name="l00521"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#a6fb28d186567cbadb2a450bfb59e8100">00521</a> <span class="comment"></span><span class="keywordtype">int</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#a6fb28d186567cbadb2a450bfb59e8100">MachineModuleInfo::getFilterIDFor</a>(std::vector<unsigned> &TyIds) {
+<a name="l00522"></a>00522   <span class="comment">// If the new filter coincides with the tail of an existing filter, then</span>
+<a name="l00523"></a>00523   <span class="comment">// re-use the existing filter.  Folding filters more than this requires</span>
+<a name="l00524"></a>00524   <span class="comment">// re-ordering filters and/or their elements - probably not worth it.</span>
+<a name="l00525"></a>00525   <span class="keywordflow">for</span> (std::vector<unsigned>::iterator <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = FilterEnds.begin(),
+<a name="l00526"></a>00526        E = FilterEnds.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="l00527"></a>00527     <span class="keywordtype">unsigned</span> i = *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>, j = TyIds.size();
+<a name="l00528"></a>00528 
+<a name="l00529"></a>00529     <span class="keywordflow">while</span> (i && j)
+<a name="l00530"></a>00530       <span class="keywordflow">if</span> (FilterIds[--i] != TyIds[--j])
+<a name="l00531"></a>00531         <span class="keywordflow">goto</span> try_next;
+<a name="l00532"></a>00532 
+<a name="l00533"></a>00533     <span class="keywordflow">if</span> (!j)
+<a name="l00534"></a>00534       <span class="comment">// The new filter coincides with range [i, end) of the existing filter.</span>
+<a name="l00535"></a>00535       <span class="keywordflow">return</span> -(1 + i);
+<a name="l00536"></a>00536 
+<a name="l00537"></a>00537 try_next:;
+<a name="l00538"></a>00538   }
+<a name="l00539"></a>00539 
+<a name="l00540"></a>00540   <span class="comment">// Add the new filter.</span>
+<a name="l00541"></a>00541   <span class="keywordtype">int</span> FilterID = -(1 + FilterIds.size());
+<a name="l00542"></a>00542   FilterIds.reserve(FilterIds.size() + TyIds.size() + 1);
+<a name="l00543"></a>00543   FilterIds.insert(FilterIds.end(), TyIds.begin(), TyIds.end());
+<a name="l00544"></a>00544   FilterEnds.push_back(FilterIds.size());
+<a name="l00545"></a>00545   FilterIds.push_back(0); <span class="comment">// terminator</span>
+<a name="l00546"></a>00546   <span class="keywordflow">return</span> FilterID;
+<a name="l00547"></a>00547 }
+<a name="l00548"></a>00548 <span class="comment"></span>
+<a name="l00549"></a>00549 <span class="comment">/// getPersonality - Return the personality function for the current function.</span>
+<a name="l00550"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#ab89d137ad4c976de7bb003dffbb06147">00550</a> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classllvm_1_1Function.html">Function</a> *<a class="code" href="classllvm_1_1MachineModuleInfo.html#ab89d137ad4c976de7bb003dffbb06147" title="getPersonality - Return the personality function for the current function.">MachineModuleInfo::getPersonality</a>()<span class="keyword"> const </span>{
+<a name="l00551"></a>00551   <span class="comment">// FIXME: Until PR1414 will be fixed, we're using 1 personality function per</span>
+<a name="l00552"></a>00552   <span class="comment">// function</span>
+<a name="l00553"></a>00553   <span class="keywordflow">return</span> !LandingPads.empty() ? LandingPads[0].Personality : NULL;
+<a name="l00554"></a>00554 }
+<a name="l00555"></a>00555 <span class="comment"></span>
+<a name="l00556"></a>00556 <span class="comment">/// getPersonalityIndex - Return unique index for current personality</span>
+<a name="l00557"></a>00557 <span class="comment">/// function. NULL/first personality function should always get zero index.</span>
+<a name="l00558"></a><a class="code" href="classllvm_1_1MachineModuleInfo.html#afe57e9df218ac37ea4538bd6f5ec05ff">00558</a> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MachineModuleInfo.html#afe57e9df218ac37ea4538bd6f5ec05ff">MachineModuleInfo::getPersonalityIndex</a>()<span class="keyword"> const </span>{
+<a name="l00559"></a>00559   <span class="keyword">const</span> <a class="code" href="classllvm_1_1Function.html">Function</a>* Personality = NULL;
+<a name="l00560"></a>00560 
+<a name="l00561"></a>00561   <span class="comment">// Scan landing pads. If there is at least one non-NULL personality - use it.</span>
+<a name="l00562"></a>00562   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = LandingPads.size(); i != e; ++i)
+<a name="l00563"></a>00563     <span class="keywordflow">if</span> (LandingPads[i].Personality) {
+<a name="l00564"></a>00564       Personality = LandingPads[i].Personality;
+<a name="l00565"></a>00565       <span class="keywordflow">break</span>;
+<a name="l00566"></a>00566     }
+<a name="l00567"></a>00567 
+<a name="l00568"></a>00568   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Personalities.size(); i < e; ++i) {
+<a name="l00569"></a>00569     <span class="keywordflow">if</span> (Personalities[i] == Personality)
+<a name="l00570"></a>00570       <span class="keywordflow">return</span> i;
+<a name="l00571"></a>00571   }
+<a name="l00572"></a>00572 
+<a name="l00573"></a>00573   <span class="comment">// This will happen if the current personality function is</span>
+<a name="l00574"></a>00574   <span class="comment">// in the zero index.</span>
+<a name="l00575"></a>00575   <span class="keywordflow">return</span> 0;
+<a name="l00576"></a>00576 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:36 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/MachineModuleInfo_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfo_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfo_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfo_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,91 @@
+<!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: MachineModuleInfo.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+      <li class="navelem"><a class="el" href="dir_33f9015af551a3c03ac5a968f2023d57.html">CodeGen</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a>  </div>
+  <div class="headertitle">
+<div class="title">MachineModuleInfo.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Pass_8h_source.html">llvm/Pass.h</a>"</code><br/>
+<code>#include "<a class="el" href="GlobalValue_8h_source.html">llvm/GlobalValue.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="MachineLocation_8h_source.html">llvm/MC/MachineLocation.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCContext_8h_source.html">llvm/MC/MCContext.h</a>"</code><br/>
+<code>#include "<a class="el" href="Dwarf_8h_source.html">llvm/Support/Dwarf.h</a>"</code><br/>
+<code>#include "<a class="el" href="DebugLoc_8h_source.html">llvm/Support/DebugLoc.h</a>"</code><br/>
+<code>#include "<a class="el" href="ValueHandle_8h_source.html">llvm/Support/ValueHandle.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="DenseMap_8h_source.html">llvm/ADT/DenseMap.h</a>"</code><br/>
+<code>#include "<a class="el" href="PointerIntPair_8h_source.html">llvm/ADT/PointerIntPair.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallPtrSet_8h_source.html">llvm/ADT/SmallPtrSet.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallVector_8h_source.html">llvm/ADT/SmallVector.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for MachineModuleInfo.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="MachineModuleInfo_8h__incl.png" border="0" usemap="#MachineModuleInfo_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="MachineModuleInfo_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_1LandingPadInfo.html">llvm::LandingPadInfo</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1MachineModuleInfoImpl.html">llvm::MachineModuleInfoImpl</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1MachineModuleInfo.html">llvm::MachineModuleInfo</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:31 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/MachineModuleInfo_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfo_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfo_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineModuleInfo_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,162 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="MachineModuleInfo.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/Pass.h",height=0.2,width=0.4,color="black",URL="$Pass_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="string",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/PassSupport.h",height=0.2,width=0.4,color="red",URL="$PassSupport_8h.html"];
+  Node5 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/PassRegistry.h",height=0.2,width=0.4,color="red",URL="$PassRegistry_8h.html"];
+  Node5 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/InitializePasses.h",height=0.2,width=0.4,color="black",URL="$InitializePasses_8h.html"];
+  Node5 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/PassAnalysisSupport.h",height=0.2,width=0.4,color="red",URL="$PassAnalysisSupport_8h.html"];
+  Node9 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="black",URL="$SmallVector_8h.html"];
+  Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_8h.html"];
+  Node11 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node13 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node14 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node14 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node14 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node13 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="memory",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/GlobalValue.h",height=0.2,width=0.4,color="black",URL="$GlobalValue_8h.html"];
+  Node26 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/Constant.h",height=0.2,width=0.4,color="red",URL="$Constant_8h.html"];
+  Node1 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Metadata.h",height=0.2,width=0.4,color="black",URL="$Metadata_8h.html"];
+  Node28 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Value.h",height=0.2,width=0.4,color="red",URL="$Value_8h.html"];
+  Node29 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="black",URL="$ArrayRef_8h.html"];
+  Node30 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/ADT/FoldingSet.h",height=0.2,width=0.4,color="red",URL="$FoldingSet_8h.html"];
+  Node31 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/ADT/ilist_node.h",height=0.2,width=0.4,color="black",URL="$ilist__node_8h.html"];
+  Node1 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/MC/MachineLocation.h",height=0.2,width=0.4,color="black",URL="$MachineLocation_8h.html"];
+  Node1 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/MC/MCContext.h",height=0.2,width=0.4,color="black",URL="$MCContext_8h.html"];
+  Node34 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/MC/SectionKind.h",height=0.2,width=0.4,color="black",URL="$SectionKind_8h.html"];
+  Node34 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/MC/MCDwarf.h",height=0.2,width=0.4,color="red",URL="$MCDwarf_8h.html"];
+  Node36 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="red",URL="$raw__ostream_8h.html"];
+  Node37 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/Support/Dwarf.h",height=0.2,width=0.4,color="black",URL="$Dwarf_8h.html"];
+  Node36 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="black",URL="$DenseMap_8h.html"];
+  Node39 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="red",URL="$MathExtras_8h.html"];
+  Node39 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/Support/PointerLikeTypeTraits.h",height=0.2,width=0.4,color="black",URL="$PointerLikeTypeTraits_8h.html"];
+  Node41 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/ADT/DenseMapInfo.h",height=0.2,width=0.4,color="black",URL="$DenseMapInfo_8h.html"];
+  Node42 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="new",height=0.2,width=0.4,color="grey75"];
+  Node39 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node39 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/ADT/StringMap.h",height=0.2,width=0.4,color="red",URL="$StringMap_8h.html"];
+  Node45 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/Support/Allocator.h",height=0.2,width=0.4,color="black",URL="$Allocator_8h.html"];
+  Node46 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Support/DebugLoc.h",height=0.2,width=0.4,color="black",URL="$DebugLoc_8h.html"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Support/ValueHandle.h",height=0.2,width=0.4,color="black",URL="$ValueHandle_8h.html"];
+  Node48 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/ADT/PointerIntPair.h",height=0.2,width=0.4,color="black",URL="$PointerIntPair_8h.html"];
+  Node49 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="black",URL="$SmallPtrSet_8h.html"];
+  Node50 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineOperand_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineOperand_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineOperand_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineOperand_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,751 @@
+<!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: MachineOperand.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_33f9015af551a3c03ac5a968f2023d57.html">CodeGen</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">MachineOperand.h</div>  </div>
+</div>
+<div class="contents">
+<a href="MachineOperand_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/CodeGen/MachineOperand.h - MachineOperand class ----*- 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 MachineOperand 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_CODEGEN_MACHINEOPERAND_H</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CODEGEN_MACHINEOPERAND_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="DataTypes_8h.html">llvm/Support/DataTypes.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <cassert></span>
+<a name="l00019"></a>00019 
+<a name="l00020"></a>00020 <span class="keyword">namespace </span>llvm {
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 <span class="keyword">class </span><a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ae98378a8672947382d343d75a5df3003">BlockAddress</a>;
+<a name="l00023"></a>00023 <span class="keyword">class </span><a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a1be4c8da7c68a4c683de1a98b5cc5b9d">ConstantFP</a>;
+<a name="l00024"></a>00024 <span class="keyword">class </span>ConstantInt;
+<a name="l00025"></a>00025 <span class="keyword">class </span>GlobalValue;
+<a name="l00026"></a>00026 <span class="keyword">class </span>MachineBasicBlock;
+<a name="l00027"></a>00027 <span class="keyword">class </span><a class="code" href="MBlazeMCCodeEmitter_8cpp.html#a620a0d6a5ef3ff7243ee978285a6f3db">MachineInstr</a>;
+<a name="l00028"></a>00028 <span class="keyword">class </span>MachineRegisterInfo;
+<a name="l00029"></a>00029 <span class="keyword">class </span>MDNode;
+<a name="l00030"></a>00030 <span class="keyword">class </span>TargetMachine;
+<a name="l00031"></a>00031 <span class="keyword">class </span>TargetRegisterInfo;
+<a name="l00032"></a>00032 <span class="keyword">class </span>hash_code;
+<a name="l00033"></a>00033 <span class="keyword">class </span>raw_ostream;
+<a name="l00034"></a>00034 <span class="keyword">class </span>MCSymbol;
+<a name="l00035"></a>00035 <span class="comment"></span>
+<a name="l00036"></a>00036 <span class="comment">/// MachineOperand class - Representation of each machine instruction operand.</span>
+<a name="l00037"></a>00037 <span class="comment">///</span>
+<a name="l00038"></a><a class="code" href="classllvm_1_1MachineOperand.html">00038</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> {
+<a name="l00039"></a>00039 <span class="keyword">public</span>:
+<a name="l00040"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6d">00040</a>   <span class="keyword">enum</span> <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6d">MachineOperandType</a> {
+<a name="l00041"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da99b874c6560305fd292d20f6a06da166">00041</a>     <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da99b874c6560305fd292d20f6a06da166" title="Register operand.">MO_Register</a>,               <span class="comment">///< Register operand.</span>
+<a name="l00042"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da066f84460d9f7b61d54b187555756ef6">00042</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da066f84460d9f7b61d54b187555756ef6" title="Immediate operand.">MO_Immediate</a>,              <span class="comment">///< Immediate operand</span>
+<a name="l00043"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da5cc9e17457a92caa963ed784d83f6233">00043</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da5cc9e17457a92caa963ed784d83f6233" title="Immediate >64bit operand.">MO_CImmediate</a>,             <span class="comment">///< Immediate >64bit operand</span>
+<a name="l00044"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dac4edc21072344f5aafa2a8f307c78b81">00044</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dac4edc21072344f5aafa2a8f307c78b81" title="Floating-point immediate operand.">MO_FPImmediate</a>,            <span class="comment">///< Floating-point immediate operand</span>
+<a name="l00045"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da95566cb4525dab82db8cbbed3d634c23">00045</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da95566cb4525dab82db8cbbed3d634c23" title="MachineBasicBlock reference.">MO_MachineBasicBlock</a>,      <span class="comment">///< MachineBasicBlock reference</span>
+<a name="l00046"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da97561985119c4a774e3ec6439240fa80">00046</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da97561985119c4a774e3ec6439240fa80" title="Abstract Stack Frame Index.">MO_FrameIndex</a>,             <span class="comment">///< Abstract Stack Frame Index</span>
+<a name="l00047"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da0d4fd3b1a2d5d46d77b66d5a35783580">00047</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da0d4fd3b1a2d5d46d77b66d5a35783580" title="Address of indexed Constant in Constant Pool.">MO_ConstantPoolIndex</a>,      <span class="comment">///< Address of indexed Constant in Constant Pool</span>
+<a name="l00048"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dabb48fd8c9fa828e23f5d33f46cb0cbbb">00048</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dabb48fd8c9fa828e23f5d33f46cb0cbbb" title="Target-dependent index+offset operand.">MO_TargetIndex</a>,            <span class="comment">///< Target-dependent index+offset operand.</span>
+<a name="l00049"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6daa1741ad7465d81fb3020b84c390ee49d">00049</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6daa1741ad7465d81fb3020b84c390ee49d" title="Address of indexed Jump Table for switch.">MO_JumpTableIndex</a>,         <span class="comment">///< Address of indexed Jump Table for switch</span>
+<a name="l00050"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da9d22ed12eec3e14283ed6a3617d12119">00050</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da9d22ed12eec3e14283ed6a3617d12119" title="Name of external global symbol.">MO_ExternalSymbol</a>,         <span class="comment">///< Name of external global symbol</span>
+<a name="l00051"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da3f1f6bfc5aa57cf388201bf6b8fee7d3">00051</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da3f1f6bfc5aa57cf388201bf6b8fee7d3" title="Address of a global value.">MO_GlobalAddress</a>,          <span class="comment">///< Address of a global value</span>
+<a name="l00052"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da7e48d34b4b9e7e8dd77301779ff77013">00052</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da7e48d34b4b9e7e8dd77301779ff77013" title="Address of a basic block.">MO_BlockAddress</a>,           <span class="comment">///< Address of a basic block</span>
+<a name="l00053"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da48257b48932e88a230caff68469fd9f6">00053</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da48257b48932e88a230caff68469fd9f6" title="Mask of preserved registers.">MO_RegisterMask</a>,           <span class="comment">///< Mask of preserved registers.</span>
+<a name="l00054"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dabf35c1c1ff9daae15b2dff8efa224623">00054</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dabf35c1c1ff9daae15b2dff8efa224623" title="Metadata reference (for debug info)">MO_Metadata</a>,               <span class="comment">///< Metadata reference (for debug info)</span>
+<a name="l00055"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da17c8e891dacb2adc4a2d0ee5b10d6e9f">00055</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da17c8e891dacb2adc4a2d0ee5b10d6e9f" title="MCSymbol reference (for debug/eh info)">MO_MCSymbol</a>                <span class="comment">///< MCSymbol reference (for debug/eh info)</span>
+<a name="l00056"></a>00056 <span class="comment"></span>  };
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058 <span class="keyword">private</span>:<span class="comment"></span>
+<a name="l00059"></a>00059 <span class="comment">  /// OpKind - Specify what kind of operand this is.  This discriminates the</span>
+<a name="l00060"></a>00060 <span class="comment">  /// union.</span>
+<a name="l00061"></a>00061 <span class="comment"></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> OpKind; <span class="comment">// MachineOperandType</span>
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063   <span class="comment">// This union is discriminated by OpKind.</span>
+<a name="l00064"></a>00064   <span class="keyword">union </span>{<span class="comment"></span>
+<a name="l00065"></a>00065 <span class="comment">    /// SubReg - Subregister number, only valid for MO_Register.  A value of 0</span>
+<a name="l00066"></a>00066 <span class="comment">    /// indicates the MO_Register has no subReg.</span>
+<a name="l00067"></a><a class="code" href="classllvm_1_1MachineOperand.html#acdb96975b54a9afcde67acdd78e3f140">00067</a> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1MachineOperand.html#acdb96975b54a9afcde67acdd78e3f140">SubReg</a>;
+<a name="l00068"></a>00068 <span class="comment"></span>
+<a name="l00069"></a>00069 <span class="comment">    /// TargetFlags - This is a set of target-specific operand flags.</span>
+<a name="l00070"></a><a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50">00070</a> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a>;
+<a name="l00071"></a>00071   };
+<a name="l00072"></a>00072 <span class="comment"></span>
+<a name="l00073"></a>00073 <span class="comment">  /// TiedTo - Non-zero when this register operand is tied to another register</span>
+<a name="l00074"></a>00074 <span class="comment">  /// operand. The encoding of this field is described in the block comment</span>
+<a name="l00075"></a>00075 <span class="comment">  /// before MachineInstr::tieOperands().</span>
+<a name="l00076"></a>00076 <span class="comment"></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> TiedTo : 4;
+<a name="l00077"></a>00077 <span class="comment"></span>
+<a name="l00078"></a>00078 <span class="comment">  /// IsDef/IsImp/IsKill/IsDead flags - These are only valid for MO_Register</span>
+<a name="l00079"></a>00079 <span class="comment">  /// operands.</span>
+<a name="l00080"></a>00080 <span class="comment"></span><span class="comment"></span>
+<a name="l00081"></a>00081 <span class="comment">  /// IsDef - True if this is a def, false if this is a use of the register.</span>
+<a name="l00082"></a>00082 <span class="comment">  ///</span>
+<a name="l00083"></a>00083 <span class="comment"></span>  <span class="keywordtype">bool</span> IsDef : 1;
+<a name="l00084"></a>00084 <span class="comment"></span>
+<a name="l00085"></a>00085 <span class="comment">  /// IsImp - True if this is an implicit def or use, false if it is explicit.</span>
+<a name="l00086"></a>00086 <span class="comment">  ///</span>
+<a name="l00087"></a>00087 <span class="comment"></span>  <span class="keywordtype">bool</span> IsImp : 1;
+<a name="l00088"></a>00088 <span class="comment"></span>
+<a name="l00089"></a>00089 <span class="comment">  /// IsKill - True if this instruction is the last use of the register on this</span>
+<a name="l00090"></a>00090 <span class="comment">  /// path through the function.  This is only valid on uses of registers.</span>
+<a name="l00091"></a>00091 <span class="comment"></span>  <span class="keywordtype">bool</span> IsKill : 1;
+<a name="l00092"></a>00092 <span class="comment"></span>
+<a name="l00093"></a>00093 <span class="comment">  /// IsDead - True if this register is never used by a subsequent instruction.</span>
+<a name="l00094"></a>00094 <span class="comment">  /// This is only valid on definitions of registers.</span>
+<a name="l00095"></a>00095 <span class="comment"></span>  <span class="keywordtype">bool</span> IsDead : 1;
+<a name="l00096"></a>00096 <span class="comment"></span>
+<a name="l00097"></a>00097 <span class="comment">  /// IsUndef - True if this register operand reads an "undef" value, i.e. the</span>
+<a name="l00098"></a>00098 <span class="comment">  /// read value doesn't matter.  This flag can be set on both use and def</span>
+<a name="l00099"></a>00099 <span class="comment">  /// operands.  On a sub-register def operand, it refers to the part of the</span>
+<a name="l00100"></a>00100 <span class="comment">  /// register that isn't written.  On a full-register def operand, it is a</span>
+<a name="l00101"></a>00101 <span class="comment">  /// noop.  See readsReg().</span>
+<a name="l00102"></a>00102 <span class="comment">  ///</span>
+<a name="l00103"></a>00103 <span class="comment">  /// This is only valid on registers.</span>
+<a name="l00104"></a>00104 <span class="comment">  ///</span>
+<a name="l00105"></a>00105 <span class="comment">  /// Note that an instruction may have multiple <undef> operands referring to</span>
+<a name="l00106"></a>00106 <span class="comment">  /// the same register.  In that case, the instruction may depend on those</span>
+<a name="l00107"></a>00107 <span class="comment">  /// operands reading the same dont-care value.  For example:</span>
+<a name="l00108"></a>00108 <span class="comment">  ///</span>
+<a name="l00109"></a>00109 <span class="comment">  ///   %vreg1<def> = XOR %vreg2<undef>, %vreg2<undef></span>
+<a name="l00110"></a>00110 <span class="comment">  ///</span>
+<a name="l00111"></a>00111 <span class="comment">  /// Any register can be used for %vreg2, and its value doesn't matter, but</span>
+<a name="l00112"></a>00112 <span class="comment">  /// the two operands must be the same register.</span>
+<a name="l00113"></a>00113 <span class="comment">  ///</span>
+<a name="l00114"></a>00114 <span class="comment"></span>  <span class="keywordtype">bool</span> IsUndef : 1;
+<a name="l00115"></a>00115 <span class="comment"></span>
+<a name="l00116"></a>00116 <span class="comment">  /// IsInternalRead - True if this operand reads a value that was defined</span>
+<a name="l00117"></a>00117 <span class="comment">  /// inside the same instruction or bundle.  This flag can be set on both use</span>
+<a name="l00118"></a>00118 <span class="comment">  /// and def operands.  On a sub-register def operand, it refers to the part</span>
+<a name="l00119"></a>00119 <span class="comment">  /// of the register that isn't written.  On a full-register def operand, it</span>
+<a name="l00120"></a>00120 <span class="comment">  /// is a noop.</span>
+<a name="l00121"></a>00121 <span class="comment">  ///</span>
+<a name="l00122"></a>00122 <span class="comment">  /// When this flag is set, the instruction bundle must contain at least one</span>
+<a name="l00123"></a>00123 <span class="comment">  /// other def of the register.  If multiple instructions in the bundle define</span>
+<a name="l00124"></a>00124 <span class="comment">  /// the register, the meaning is target-defined.</span>
+<a name="l00125"></a>00125 <span class="comment"></span>  <span class="keywordtype">bool</span> IsInternalRead : 1;
+<a name="l00126"></a>00126 <span class="comment"></span>
+<a name="l00127"></a>00127 <span class="comment">  /// IsEarlyClobber - True if this MO_Register 'def' operand is written to</span>
+<a name="l00128"></a>00128 <span class="comment">  /// by the MachineInstr before all input registers are read.  This is used to</span>
+<a name="l00129"></a>00129 <span class="comment">  /// model the GCC inline asm '&' constraint modifier.</span>
+<a name="l00130"></a>00130 <span class="comment"></span>  <span class="keywordtype">bool</span> IsEarlyClobber : 1;
+<a name="l00131"></a>00131 <span class="comment"></span>
+<a name="l00132"></a>00132 <span class="comment">  /// IsDebug - True if this MO_Register 'use' operand is in a debug pseudo,</span>
+<a name="l00133"></a>00133 <span class="comment">  /// not a real instruction.  Such uses should be ignored during codegen.</span>
+<a name="l00134"></a>00134 <span class="comment"></span>  <span class="keywordtype">bool</span> IsDebug : 1;
+<a name="l00135"></a>00135 <span class="comment"></span>
+<a name="l00136"></a>00136 <span class="comment">  /// SmallContents - This really should be part of the Contents union, but</span>
+<a name="l00137"></a>00137 <span class="comment">  /// lives out here so we can get a better packed struct.</span>
+<a name="l00138"></a>00138 <span class="comment">  /// MO_Register: Register number.</span>
+<a name="l00139"></a>00139 <span class="comment">  /// OffsetedInfo: Low bits of offset.</span>
+<a name="l00140"></a>00140 <span class="comment"></span>  <span class="keyword">union </span>{
+<a name="l00141"></a><a class="code" href="classllvm_1_1MachineOperand.html#aaf8435daf56f7cb3a39fdfc76a9f58ac">00141</a>     <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MachineOperand.html#aaf8435daf56f7cb3a39fdfc76a9f58ac">RegNo</a>;           <span class="comment">// For MO_Register.</span>
+<a name="l00142"></a><a class="code" href="classllvm_1_1MachineOperand.html#ad8ad6db209d25c087f43741d35624da5">00142</a>     <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MachineOperand.html#ad8ad6db209d25c087f43741d35624da5">OffsetLo</a>;        <span class="comment">// Matches Contents.OffsetedInfo.OffsetHi.</span>
+<a name="l00143"></a>00143   } SmallContents;
+<a name="l00144"></a>00144 <span class="comment"></span>
+<a name="l00145"></a>00145 <span class="comment">  /// ParentMI - This is the instruction that this operand is embedded into.</span>
+<a name="l00146"></a>00146 <span class="comment">  /// This is valid for all operand types, when the operand is in an instr.</span>
+<a name="l00147"></a>00147 <span class="comment"></span>  <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *ParentMI;
+<a name="l00148"></a>00148 <span class="comment"></span>
+<a name="l00149"></a>00149 <span class="comment">  /// Contents union - This contains the payload for the various operand types.</span>
+<a name="l00150"></a>00150 <span class="comment"></span>  <span class="keyword">union </span>{
+<a name="l00151"></a><a class="code" href="classllvm_1_1MachineOperand.html#a11240f87290855c028dd32f257289ffa">00151</a>     <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a11240f87290855c028dd32f257289ffa">MBB</a>;   <span class="comment">// For MO_MachineBasicBlock.</span>
+<a name="l00152"></a><a class="code" href="classllvm_1_1MachineOperand.html#ac9846ddd59fde8b4c232f2d8eed1a35f">00152</a>     <span class="keyword">const</span> <a class="code" href="classllvm_1_1ConstantFP.html">ConstantFP</a> *<a class="code" href="classllvm_1_1MachineOperand.html#ac9846ddd59fde8b4c232f2d8eed1a35f">CFP</a>;    <span class="comment">// For MO_FPImmediate.</span>
+<a name="l00153"></a><a class="code" href="classllvm_1_1MachineOperand.html#ae14abe95adfdba5b324ef3d3705447e1">00153</a>     <span class="keyword">const</span> <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *<a class="code" href="classllvm_1_1MachineOperand.html#ae14abe95adfdba5b324ef3d3705447e1">CI</a>;    <span class="comment">// For MO_CImmediate. Integers > 64bit.</span>
+<a name="l00154"></a><a class="code" href="classllvm_1_1MachineOperand.html#aae9c0c1d84d7ec2a5caa12e87f18c5ca">00154</a>     <a class="code" href="classint64__t.html">int64_t</a> <a class="code" href="classllvm_1_1MachineOperand.html#aae9c0c1d84d7ec2a5caa12e87f18c5ca">ImmVal</a>;           <span class="comment">// For MO_Immediate.</span>
+<a name="l00155"></a><a class="code" href="classllvm_1_1MachineOperand.html#aabb13d56e58c0a619ad29b5f66809cc6">00155</a>     <span class="keyword">const</span> uint32_t *<a class="code" href="classllvm_1_1MachineOperand.html#aabb13d56e58c0a619ad29b5f66809cc6">RegMask</a>;  <span class="comment">// For MO_RegisterMask.</span>
+<a name="l00156"></a><a class="code" href="classllvm_1_1MachineOperand.html#a9a714c9b8df8667011e9fddb67d66536">00156</a>     <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="classllvm_1_1MachineOperand.html#a9a714c9b8df8667011e9fddb67d66536">MD</a>;         <span class="comment">// For MO_Metadata.</span>
+<a name="l00157"></a><a class="code" href="classllvm_1_1MachineOperand.html#a09294ca1c1fbb50e86a1593cd88e3f77">00157</a>     <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a09294ca1c1fbb50e86a1593cd88e3f77">Sym</a>;            <span class="comment">// For MO_MCSymbol</span>
+<a name="l00158"></a>00158 
+<a name="l00159"></a>00159     <span class="keyword">struct </span>{                  <span class="comment">// For MO_Register.</span>
+<a name="l00160"></a>00160       <span class="comment">// Register number is in SmallContents.RegNo.</span>
+<a name="l00161"></a><a class="code" href="classllvm_1_1MachineOperand.html#a2d8d8b9a1e858d81888ea13ef1cb29f3">00161</a>       <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a2d8d8b9a1e858d81888ea13ef1cb29f3">Prev</a>;   <span class="comment">// Access list for register. See MRI.</span>
+<a name="l00162"></a><a class="code" href="classllvm_1_1MachineOperand.html#ab57c54a8709de638181547481aee32a0">00162</a>       <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> *<a class="code" href="classllvm_1_1MachineOperand.html#ab57c54a8709de638181547481aee32a0">Next</a>;
+<a name="l00163"></a>00163     } <a class="code" href="classllvm_1_1MachineOperand.html#a11c199027daceb07ee6e7d4ee06c0387">Reg</a>;
+<a name="l00164"></a>00164 <span class="comment"></span>
+<a name="l00165"></a>00165 <span class="comment">    /// OffsetedInfo - This struct contains the offset and an object identifier.</span>
+<a name="l00166"></a>00166 <span class="comment">    /// this represent the object as with an optional offset from it.</span>
+<a name="l00167"></a>00167 <span class="comment"></span>    <span class="keyword">struct </span>{
+<a name="l00168"></a>00168       <span class="keyword">union </span>{
+<a name="l00169"></a><a class="code" href="classllvm_1_1MachineOperand.html#a5f91c5e14906cd2edc174fc1e092744b">00169</a>         <span class="keywordtype">int</span> <a class="code" href="classllvm_1_1MachineOperand.html#a5f91c5e14906cd2edc174fc1e092744b">Index</a>;                <span class="comment">// For MO_*Index - The index itself.</span>
+<a name="l00170"></a><a class="code" href="classllvm_1_1MachineOperand.html#a3c5032d64631591c6d4f0455a623b45c">00170</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classllvm_1_1MachineOperand.html#a3c5032d64631591c6d4f0455a623b45c">SymbolName</a>;   <span class="comment">// For MO_ExternalSymbol.</span>
+<a name="l00171"></a><a class="code" href="classllvm_1_1MachineOperand.html#a9f9e5e60a03d0ba15d531ba2136e9f7a">00171</a>         <span class="keyword">const</span> <a class="code" href="classllvm_1_1GlobalValue.html">GlobalValue</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a9f9e5e60a03d0ba15d531ba2136e9f7a">GV</a>;    <span class="comment">// For MO_GlobalAddress.</span>
+<a name="l00172"></a><a class="code" href="classllvm_1_1MachineOperand.html#af735a8239f4a229cc7d402cd0c588fb3">00172</a>         <span class="keyword">const</span> <a class="code" href="classllvm_1_1BlockAddress.html">BlockAddress</a> *<a class="code" href="classllvm_1_1MachineOperand.html#af735a8239f4a229cc7d402cd0c588fb3">BA</a>;   <span class="comment">// For MO_BlockAddress.</span>
+<a name="l00173"></a>00173       } <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a>;
+<a name="l00174"></a>00174       <span class="comment">// Low bits of offset are in SmallContents.OffsetLo.</span>
+<a name="l00175"></a><a class="code" href="classllvm_1_1MachineOperand.html#a3b63d142f7241b35ac63f15c9fffce8f">00175</a>       <span class="keywordtype">int</span> <a class="code" href="classllvm_1_1MachineOperand.html#a3b63d142f7241b35ac63f15c9fffce8f">OffsetHi</a>;               <span class="comment">// An offset from the object, high 32 bits.</span>
+<a name="l00176"></a>00176     } <a class="code" href="classllvm_1_1MachineOperand.html#af8329ce1711b7882758e32c0d509b7cf">OffsetedInfo</a>;
+<a name="l00177"></a>00177   } Contents;
+<a name="l00178"></a>00178 
+<a name="l00179"></a>00179   <span class="keyword">explicit</span> MachineOperand(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6d">MachineOperandType</a> K) : OpKind(K), ParentMI(0) {
+<a name="l00180"></a>00180     <a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a> = 0;
+<a name="l00181"></a>00181   }
+<a name="l00182"></a>00182 <span class="keyword">public</span>:<span class="comment"></span>
+<a name="l00183"></a>00183 <span class="comment">  /// getType - Returns the MachineOperandType for this operand.</span>
+<a name="l00184"></a>00184 <span class="comment">  ///</span>
+<a name="l00185"></a><a class="code" href="classllvm_1_1MachineOperand.html#a1b63a086907e5b144612bb4266b713d6">00185</a> <span class="comment"></span>  <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6d">MachineOperandType</a> <a class="code" href="classllvm_1_1MachineOperand.html#a1b63a086907e5b144612bb4266b713d6">getType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6d">MachineOperandType</a>)OpKind; }
+<a name="l00186"></a>00186 
+<a name="l00187"></a><a class="code" href="classllvm_1_1MachineOperand.html#a66e5034087365ccc871f5b6cae30d00c">00187</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1MachineOperand.html#a66e5034087365ccc871f5b6cae30d00c">getTargetFlags</a>()<span class="keyword"> const </span>{
+<a name="l00188"></a>00188     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() ? 0 : <a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a>;
+<a name="l00189"></a>00189   }
+<a name="l00190"></a><a class="code" href="classllvm_1_1MachineOperand.html#a716d79e043e4a51ac27fa249832ae3f6">00190</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a716d79e043e4a51ac27fa249832ae3f6">setTargetFlags</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>) {
+<a name="l00191"></a>00191     assert(!<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Register operands can't have target flags"</span>);
+<a name="l00192"></a>00192     <a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a> = <a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>;
+<a name="l00193"></a>00193   }
+<a name="l00194"></a><a class="code" href="classllvm_1_1MachineOperand.html#af28fa3fc608d277f1977c4e928600aaa">00194</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#af28fa3fc608d277f1977c4e928600aaa">addTargetFlag</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>) {
+<a name="l00195"></a>00195     assert(!<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Register operands can't have target flags"</span>);
+<a name="l00196"></a>00196     <a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a> |= <a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>;
+<a name="l00197"></a>00197   }
+<a name="l00198"></a>00198 
+<a name="l00199"></a>00199 <span class="comment"></span>
+<a name="l00200"></a>00200 <span class="comment">  /// getParent - Return the instruction that this operand belongs to.</span>
+<a name="l00201"></a>00201 <span class="comment">  ///</span>
+<a name="l00202"></a><a class="code" href="classllvm_1_1MachineOperand.html#acad8fe90886f92eabced0c2f9bd0e6f5">00202</a> <span class="comment"></span>  <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="classllvm_1_1MachineOperand.html#acad8fe90886f92eabced0c2f9bd0e6f5">getParent</a>() { <span class="keywordflow">return</span> ParentMI; }
+<a name="l00203"></a><a class="code" href="classllvm_1_1MachineOperand.html#ab3ecf3a484abc4a4092732364c64eacc">00203</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="classllvm_1_1MachineOperand.html#ab3ecf3a484abc4a4092732364c64eacc">getParent</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ParentMI; }
+<a name="l00204"></a>00204 <span class="comment"></span>
+<a name="l00205"></a>00205 <span class="comment">  /// clearParent - Reset the parent pointer.</span>
+<a name="l00206"></a>00206 <span class="comment">  ///</span>
+<a name="l00207"></a>00207 <span class="comment">  /// The MachineOperand copy constructor also copies ParentMI, expecting the</span>
+<a name="l00208"></a>00208 <span class="comment">  /// original to be deleted. If a MachineOperand is ever stored outside a</span>
+<a name="l00209"></a>00209 <span class="comment">  /// MachineInstr, the parent pointer must be cleared.</span>
+<a name="l00210"></a>00210 <span class="comment">  ///</span>
+<a name="l00211"></a>00211 <span class="comment">  /// Never call clearParent() on an operand in a MachineInstr.</span>
+<a name="l00212"></a>00212 <span class="comment">  ///</span>
+<a name="l00213"></a><a class="code" href="classllvm_1_1MachineOperand.html#a800c03587b02047d71c6ba2f7b2193eb">00213</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a800c03587b02047d71c6ba2f7b2193eb">clearParent</a>() { ParentMI = 0; }
+<a name="l00214"></a>00214 
+<a name="l00215"></a>00215   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a4d06eceb0ecf3b95712b89fa611eeb4e">print</a>(<a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &os, <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetMachine.html">TargetMachine</a> *TM = 0) <span class="keyword">const</span>;
+<a name="l00216"></a>00216 
+<a name="l00217"></a>00217   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00218"></a>00218   <span class="comment">// Accessors that tell you what kind of MachineOperand you're looking at.</span>
+<a name="l00219"></a>00219   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00220"></a>00220 <span class="comment"></span>
+<a name="l00221"></a>00221 <span class="comment">  /// isReg - Tests if this is a MO_Register operand.</span>
+<a name="l00222"></a><a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2">00222</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da99b874c6560305fd292d20f6a06da166" title="Register operand.">MO_Register</a>; }<span class="comment"></span>
+<a name="l00223"></a>00223 <span class="comment">  /// isImm - Tests if this is a MO_Immediate operand.</span>
+<a name="l00224"></a><a class="code" href="classllvm_1_1MachineOperand.html#a2ac18ceda9f2857fea2e5cc4e8bf4ff5">00224</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a2ac18ceda9f2857fea2e5cc4e8bf4ff5" title="isImm - Tests if this is a MO_Immediate operand.">isImm</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da066f84460d9f7b61d54b187555756ef6" title="Immediate operand.">MO_Immediate</a>; }<span class="comment"></span>
+<a name="l00225"></a>00225 <span class="comment">  /// isCImm - Test if t his is a MO_CImmediate operand.</span>
+<a name="l00226"></a><a class="code" href="classllvm_1_1MachineOperand.html#a3f6dfc452fbd6100370d30d41e553841">00226</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a3f6dfc452fbd6100370d30d41e553841" title="isCImm - Test if t his is a MO_CImmediate operand.">isCImm</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da5cc9e17457a92caa963ed784d83f6233" title="Immediate >64bit operand.">MO_CImmediate</a>; }<span class="comment"></span>
+<a name="l00227"></a>00227 <span class="comment">  /// isFPImm - Tests if this is a MO_FPImmediate operand.</span>
+<a name="l00228"></a><a class="code" href="classllvm_1_1MachineOperand.html#a8e77ed930873a9741198fd01a943bde8">00228</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a8e77ed930873a9741198fd01a943bde8" title="isFPImm - Tests if this is a MO_FPImmediate operand.">isFPImm</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dac4edc21072344f5aafa2a8f307c78b81" title="Floating-point immediate operand.">MO_FPImmediate</a>; }<span class="comment"></span>
+<a name="l00229"></a>00229 <span class="comment">  /// isMBB - Tests if this is a MO_MachineBasicBlock operand.</span>
+<a name="l00230"></a><a class="code" href="classllvm_1_1MachineOperand.html#ac09a917b80455ff0bae4c05bf0e86d73">00230</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#ac09a917b80455ff0bae4c05bf0e86d73" title="isMBB - Tests if this is a MO_MachineBasicBlock operand.">isMBB</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da95566cb4525dab82db8cbbed3d634c23" title="MachineBasicBlock reference.">MO_MachineBasicBlock</a>; }<span class="comment"></span>
+<a name="l00231"></a>00231 <span class="comment">  /// isFI - Tests if this is a MO_FrameIndex operand.</span>
+<a name="l00232"></a><a class="code" href="classllvm_1_1MachineOperand.html#ab0d5ec413fa43a1e470dafb6cafda9b5">00232</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#ab0d5ec413fa43a1e470dafb6cafda9b5" title="isFI - Tests if this is a MO_FrameIndex operand.">isFI</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da97561985119c4a774e3ec6439240fa80" title="Abstract Stack Frame Index.">MO_FrameIndex</a>; }<span class="comment"></span>
+<a name="l00233"></a>00233 <span class="comment">  /// isCPI - Tests if this is a MO_ConstantPoolIndex operand.</span>
+<a name="l00234"></a><a class="code" href="classllvm_1_1MachineOperand.html#a2a6233524fe8cf33f83fe27d3673412c">00234</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a2a6233524fe8cf33f83fe27d3673412c" title="isCPI - Tests if this is a MO_ConstantPoolIndex operand.">isCPI</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da0d4fd3b1a2d5d46d77b66d5a35783580" title="Address of indexed Constant in Constant Pool.">MO_ConstantPoolIndex</a>; }<span class="comment"></span>
+<a name="l00235"></a>00235 <span class="comment">  /// isTargetIndex - Tests if this is a MO_TargetIndex operand.</span>
+<a name="l00236"></a><a class="code" href="classllvm_1_1MachineOperand.html#ad019eb206c5f18e60709110de48c6526">00236</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#ad019eb206c5f18e60709110de48c6526" title="isTargetIndex - Tests if this is a MO_TargetIndex operand.">isTargetIndex</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dabb48fd8c9fa828e23f5d33f46cb0cbbb" title="Target-dependent index+offset operand.">MO_TargetIndex</a>; }<span class="comment"></span>
+<a name="l00237"></a>00237 <span class="comment">  /// isJTI - Tests if this is a MO_JumpTableIndex operand.</span>
+<a name="l00238"></a><a class="code" href="classllvm_1_1MachineOperand.html#af19a512f40c1e9247796ad8cee70884b">00238</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#af19a512f40c1e9247796ad8cee70884b" title="isJTI - Tests if this is a MO_JumpTableIndex operand.">isJTI</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6daa1741ad7465d81fb3020b84c390ee49d" title="Address of indexed Jump Table for switch.">MO_JumpTableIndex</a>; }<span class="comment"></span>
+<a name="l00239"></a>00239 <span class="comment">  /// isGlobal - Tests if this is a MO_GlobalAddress operand.</span>
+<a name="l00240"></a><a class="code" href="classllvm_1_1MachineOperand.html#a58048141ed81d581f3fb9a797f3186ee">00240</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a58048141ed81d581f3fb9a797f3186ee" title="isGlobal - Tests if this is a MO_GlobalAddress operand.">isGlobal</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da3f1f6bfc5aa57cf388201bf6b8fee7d3" title="Address of a global value.">MO_GlobalAddress</a>; }<span class="comment"></span>
+<a name="l00241"></a>00241 <span class="comment">  /// isSymbol - Tests if this is a MO_ExternalSymbol operand.</span>
+<a name="l00242"></a><a class="code" href="classllvm_1_1MachineOperand.html#a312ddf2fd2162ef0c552d913369cd57f">00242</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a312ddf2fd2162ef0c552d913369cd57f" title="isSymbol - Tests if this is a MO_ExternalSymbol operand.">isSymbol</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da9d22ed12eec3e14283ed6a3617d12119" title="Name of external global symbol.">MO_ExternalSymbol</a>; }<span class="comment"></span>
+<a name="l00243"></a>00243 <span class="comment">  /// isBlockAddress - Tests if this is a MO_BlockAddress operand.</span>
+<a name="l00244"></a><a class="code" href="classllvm_1_1MachineOperand.html#ab8d6a411aa6fc5c7799214fd50ba2409">00244</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#ab8d6a411aa6fc5c7799214fd50ba2409" title="isBlockAddress - Tests if this is a MO_BlockAddress operand.">isBlockAddress</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da7e48d34b4b9e7e8dd77301779ff77013" title="Address of a basic block.">MO_BlockAddress</a>; }<span class="comment"></span>
+<a name="l00245"></a>00245 <span class="comment">  /// isRegMask - Tests if this is a MO_RegisterMask operand.</span>
+<a name="l00246"></a><a class="code" href="classllvm_1_1MachineOperand.html#a2c5eddfba64e7a44deba1b5a0d45a017">00246</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a2c5eddfba64e7a44deba1b5a0d45a017" title="isRegMask - Tests if this is a MO_RegisterMask operand.">isRegMask</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da48257b48932e88a230caff68469fd9f6" title="Mask of preserved registers.">MO_RegisterMask</a>; }<span class="comment"></span>
+<a name="l00247"></a>00247 <span class="comment">  /// isMetadata - Tests if this is a MO_Metadata operand.</span>
+<a name="l00248"></a><a class="code" href="classllvm_1_1MachineOperand.html#a0e2df00699ee7519edd1a7075feb11d9">00248</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a0e2df00699ee7519edd1a7075feb11d9" title="isMetadata - Tests if this is a MO_Metadata operand.">isMetadata</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dabf35c1c1ff9daae15b2dff8efa224623" title="Metadata reference (for debug info)">MO_Metadata</a>; }
+<a name="l00249"></a><a class="code" href="classllvm_1_1MachineOperand.html#abbe67ac0f57d684d40b9a87cd90ce461">00249</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#abbe67ac0f57d684d40b9a87cd90ce461">isMCSymbol</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpKind == <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da17c8e891dacb2adc4a2d0ee5b10d6e9f" title="MCSymbol reference (for debug/eh info)">MO_MCSymbol</a>; }
+<a name="l00250"></a>00250 
+<a name="l00251"></a>00251 
+<a name="l00252"></a>00252   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00253"></a>00253   <span class="comment">// Accessors for Register Operands</span>
+<a name="l00254"></a>00254   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00255"></a>00255 <span class="comment"></span>
+<a name="l00256"></a>00256 <span class="comment">  /// getReg - Returns the register number.</span>
+<a name="l00257"></a><a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86">00257</a> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>()<span class="keyword"> const </span>{
+<a name="l00258"></a>00258     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"This is not a register operand!"</span>);
+<a name="l00259"></a>00259     <span class="keywordflow">return</span> SmallContents.RegNo;
+<a name="l00260"></a>00260   }
+<a name="l00261"></a>00261 
+<a name="l00262"></a><a class="code" href="classllvm_1_1MachineOperand.html#aca37b55b20f45c96067bac1d4f1dcb7f">00262</a>   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MachineOperand.html#aca37b55b20f45c96067bac1d4f1dcb7f">getSubReg</a>()<span class="keyword"> const </span>{
+<a name="l00263"></a>00263     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00264"></a>00264     <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span>)<a class="code" href="classllvm_1_1MachineOperand.html#acdb96975b54a9afcde67acdd78e3f140">SubReg</a>;
+<a name="l00265"></a>00265   }
+<a name="l00266"></a>00266 
+<a name="l00267"></a><a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">00267</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>()<span class="keyword"> const </span>{
+<a name="l00268"></a>00268     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00269"></a>00269     <span class="keywordflow">return</span> !IsDef;
+<a name="l00270"></a>00270   }
+<a name="l00271"></a>00271 
+<a name="l00272"></a><a class="code" href="classllvm_1_1MachineOperand.html#a8de7d5cf38939044471c6ee60a01a3df">00272</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a8de7d5cf38939044471c6ee60a01a3df">isDef</a>()<span class="keyword"> const </span>{
+<a name="l00273"></a>00273     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00274"></a>00274     <span class="keywordflow">return</span> IsDef;
+<a name="l00275"></a>00275   }
+<a name="l00276"></a>00276 
+<a name="l00277"></a><a class="code" href="classllvm_1_1MachineOperand.html#a40a5d6e03f5bfd15839355a7c39ab3a0">00277</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a40a5d6e03f5bfd15839355a7c39ab3a0">isImplicit</a>()<span class="keyword"> const </span>{
+<a name="l00278"></a>00278     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00279"></a>00279     <span class="keywordflow">return</span> IsImp;
+<a name="l00280"></a>00280   }
+<a name="l00281"></a>00281 
+<a name="l00282"></a><a class="code" href="classllvm_1_1MachineOperand.html#a196420aa839c2b21f42c4bf5c36df437">00282</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a196420aa839c2b21f42c4bf5c36df437">isDead</a>()<span class="keyword"> const </span>{
+<a name="l00283"></a>00283     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00284"></a>00284     <span class="keywordflow">return</span> IsDead;
+<a name="l00285"></a>00285   }
+<a name="l00286"></a>00286 
+<a name="l00287"></a><a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">00287</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>()<span class="keyword"> const </span>{
+<a name="l00288"></a>00288     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00289"></a>00289     <span class="keywordflow">return</span> IsKill;
+<a name="l00290"></a>00290   }
+<a name="l00291"></a>00291 
+<a name="l00292"></a><a class="code" href="classllvm_1_1MachineOperand.html#afbf853e3a0de950e9116ffb9929ceebd">00292</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#afbf853e3a0de950e9116ffb9929ceebd">isUndef</a>()<span class="keyword"> const </span>{
+<a name="l00293"></a>00293     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00294"></a>00294     <span class="keywordflow">return</span> IsUndef;
+<a name="l00295"></a>00295   }
+<a name="l00296"></a>00296 
+<a name="l00297"></a><a class="code" href="classllvm_1_1MachineOperand.html#a74da84c8a6d7db39be200109ef0d3c7c">00297</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a74da84c8a6d7db39be200109ef0d3c7c">isInternalRead</a>()<span class="keyword"> const </span>{
+<a name="l00298"></a>00298     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00299"></a>00299     <span class="keywordflow">return</span> IsInternalRead;
+<a name="l00300"></a>00300   }
+<a name="l00301"></a>00301 
+<a name="l00302"></a><a class="code" href="classllvm_1_1MachineOperand.html#a11d72231fe6da4abec10afff58dede5d">00302</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a11d72231fe6da4abec10afff58dede5d">isEarlyClobber</a>()<span class="keyword"> const </span>{
+<a name="l00303"></a>00303     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00304"></a>00304     <span class="keywordflow">return</span> IsEarlyClobber;
+<a name="l00305"></a>00305   }
+<a name="l00306"></a>00306 
+<a name="l00307"></a><a class="code" href="classllvm_1_1MachineOperand.html#a308e2e7bf95854b0379b9f2e229978c2">00307</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a308e2e7bf95854b0379b9f2e229978c2">isTied</a>()<span class="keyword"> const </span>{
+<a name="l00308"></a>00308     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00309"></a>00309     <span class="keywordflow">return</span> TiedTo;
+<a name="l00310"></a>00310   }
+<a name="l00311"></a>00311 
+<a name="l00312"></a><a class="code" href="classllvm_1_1MachineOperand.html#a98b8c4d84ab695588af9822ccad5a482">00312</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a98b8c4d84ab695588af9822ccad5a482">isDebug</a>()<span class="keyword"> const </span>{
+<a name="l00313"></a>00313     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00314"></a>00314     <span class="keywordflow">return</span> IsDebug;
+<a name="l00315"></a>00315   }
+<a name="l00316"></a>00316 <span class="comment"></span>
+<a name="l00317"></a>00317 <span class="comment">  /// readsReg - Returns true if this operand reads the previous value of its</span>
+<a name="l00318"></a>00318 <span class="comment">  /// register.  A use operand with the <undef> flag set doesn't read its</span>
+<a name="l00319"></a>00319 <span class="comment">  /// register.  A sub-register def implicitly reads the other parts of the</span>
+<a name="l00320"></a>00320 <span class="comment">  /// register being redefined unless the <undef> flag is set.</span>
+<a name="l00321"></a>00321 <span class="comment">  ///</span>
+<a name="l00322"></a>00322 <span class="comment">  /// This refers to reading the register value from before the current</span>
+<a name="l00323"></a>00323 <span class="comment">  /// instruction or bundle. Internal bundle reads are not included.</span>
+<a name="l00324"></a><a class="code" href="classllvm_1_1MachineOperand.html#a0e4e5eef3cc7c47acbb753b9d3872348">00324</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a0e4e5eef3cc7c47acbb753b9d3872348">readsReg</a>()<span class="keyword"> const </span>{
+<a name="l00325"></a>00325     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00326"></a>00326     <span class="keywordflow">return</span> !<a class="code" href="classllvm_1_1MachineOperand.html#afbf853e3a0de950e9116ffb9929ceebd">isUndef</a>() && !<a class="code" href="classllvm_1_1MachineOperand.html#a74da84c8a6d7db39be200109ef0d3c7c">isInternalRead</a>() && (<a class="code" href="classllvm_1_1MachineOperand.html#a57bf9ee7219097ff0f98da23a3b3b782">isUse</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#aca37b55b20f45c96067bac1d4f1dcb7f">getSubReg</a>());
+<a name="l00327"></a>00327   }
+<a name="l00328"></a>00328 
+<a name="l00329"></a>00329   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00330"></a>00330   <span class="comment">// Mutators for Register Operands</span>
+<a name="l00331"></a>00331   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00332"></a>00332 <span class="comment"></span>
+<a name="l00333"></a>00333 <span class="comment">  /// Change the register this operand corresponds to.</span>
+<a name="l00334"></a>00334 <span class="comment">  ///</span>
+<a name="l00335"></a>00335 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a624a062754a09d3787614d8627096705">setReg</a>(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>);
+<a name="l00336"></a>00336 
+<a name="l00337"></a><a class="code" href="classllvm_1_1MachineOperand.html#a001d31fcea92be51d2999826b806606f">00337</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a001d31fcea92be51d2999826b806606f">setSubReg</a>(<span class="keywordtype">unsigned</span> subReg) {
+<a name="l00338"></a>00338     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00339"></a>00339     <a class="code" href="classllvm_1_1MachineOperand.html#acdb96975b54a9afcde67acdd78e3f140">SubReg</a> = (<span class="keywordtype">unsigned</span> <a class="code" href="classchar.html">char</a>)subReg;
+<a name="l00340"></a>00340   }
+<a name="l00341"></a>00341 <span class="comment"></span>
+<a name="l00342"></a>00342 <span class="comment">  /// substVirtReg - Substitute the current register with the virtual</span>
+<a name="l00343"></a>00343 <span class="comment">  /// subregister Reg:SubReg. Take any existing SubReg index into account,</span>
+<a name="l00344"></a>00344 <span class="comment">  /// using TargetRegisterInfo to compose the subreg indices if necessary.</span>
+<a name="l00345"></a>00345 <span class="comment">  /// Reg must be a virtual register, SubIdx can be 0.</span>
+<a name="l00346"></a>00346 <span class="comment">  ///</span>
+<a name="l00347"></a>00347 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#ac018c6b3d4fbe5d28d6e88798b386f65">substVirtReg</a>(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>, <span class="keywordtype">unsigned</span> SubIdx, <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a>&);
+<a name="l00348"></a>00348 <span class="comment"></span>
+<a name="l00349"></a>00349 <span class="comment">  /// substPhysReg - Substitute the current register with the physical register</span>
+<a name="l00350"></a>00350 <span class="comment">  /// Reg, taking any existing SubReg into account. For instance,</span>
+<a name="l00351"></a>00351 <span class="comment">  /// substPhysReg(%EAX) will change %reg1024:sub_8bit to %AL.</span>
+<a name="l00352"></a>00352 <span class="comment">  ///</span>
+<a name="l00353"></a>00353 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a588152d6371de172a8363ea56a297d1e">substPhysReg</a>(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>, <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a>&);
+<a name="l00354"></a>00354 
+<a name="l00355"></a><a class="code" href="classllvm_1_1MachineOperand.html#a05dc03b6c9921f34aaa7a20c46589a95">00355</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a05dc03b6c9921f34aaa7a20c46589a95">setIsUse</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a> = <span class="keyword">true</span>) { <a class="code" href="classllvm_1_1MachineOperand.html#aed8d139ece631812f972a8cc074adc55" title="Change a def to a use, or a use to a def.">setIsDef</a>(!<a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a>); }
+<a name="l00356"></a>00356 
+<a name="l00357"></a>00357   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#aed8d139ece631812f972a8cc074adc55" title="Change a def to a use, or a use to a def.">setIsDef</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a> = <span class="keyword">true</span>);
+<a name="l00358"></a>00358 
+<a name="l00359"></a><a class="code" href="classllvm_1_1MachineOperand.html#a10e708480cdc97c951368e06c13eac92">00359</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a10e708480cdc97c951368e06c13eac92">setImplicit</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a> = <span class="keyword">true</span>) {
+<a name="l00360"></a>00360     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00361"></a>00361     IsImp = <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a>;
+<a name="l00362"></a>00362   }
+<a name="l00363"></a>00363 
+<a name="l00364"></a><a class="code" href="classllvm_1_1MachineOperand.html#a8a82683fccdef8a5ef772ef03277aee7">00364</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a8a82683fccdef8a5ef772ef03277aee7">setIsKill</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a> = <span class="keyword">true</span>) {
+<a name="l00365"></a>00365     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && !IsDef && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00366"></a>00366     assert((!<a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a> || !<a class="code" href="classllvm_1_1MachineOperand.html#a98b8c4d84ab695588af9822ccad5a482">isDebug</a>()) && <span class="stringliteral">"Marking a debug operation as kill"</span>);
+<a name="l00367"></a>00367     IsKill = <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a>;
+<a name="l00368"></a>00368   }
+<a name="l00369"></a>00369 
+<a name="l00370"></a><a class="code" href="classllvm_1_1MachineOperand.html#a61a42c85bd86c6ca4554e27d33c3f798">00370</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a61a42c85bd86c6ca4554e27d33c3f798">setIsDead</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a> = <span class="keyword">true</span>) {
+<a name="l00371"></a>00371     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && IsDef && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00372"></a>00372     IsDead = <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a>;
+<a name="l00373"></a>00373   }
+<a name="l00374"></a>00374 
+<a name="l00375"></a><a class="code" href="classllvm_1_1MachineOperand.html#ab979122f21b7fa46d3d2d9b21983068b">00375</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#ab979122f21b7fa46d3d2d9b21983068b">setIsUndef</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a> = <span class="keyword">true</span>) {
+<a name="l00376"></a>00376     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00377"></a>00377     IsUndef = <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a>;
+<a name="l00378"></a>00378   }
+<a name="l00379"></a>00379 
+<a name="l00380"></a><a class="code" href="classllvm_1_1MachineOperand.html#a133a1aff6f7f6a9ea4f641adc88a120d">00380</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a133a1aff6f7f6a9ea4f641adc88a120d">setIsInternalRead</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a> = <span class="keyword">true</span>) {
+<a name="l00381"></a>00381     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00382"></a>00382     IsInternalRead = <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a>;
+<a name="l00383"></a>00383   }
+<a name="l00384"></a>00384 
+<a name="l00385"></a><a class="code" href="classllvm_1_1MachineOperand.html#a9fcb795c017b82c1a259882b060ddc06">00385</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a9fcb795c017b82c1a259882b060ddc06">setIsEarlyClobber</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a> = <span class="keyword">true</span>) {
+<a name="l00386"></a>00386     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && IsDef && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00387"></a>00387     IsEarlyClobber = <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a>;
+<a name="l00388"></a>00388   }
+<a name="l00389"></a>00389 
+<a name="l00390"></a><a class="code" href="classllvm_1_1MachineOperand.html#ab986279c9e6cf7ba9afd4c7da198bacf">00390</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#ab986279c9e6cf7ba9afd4c7da198bacf">setIsDebug</a>(<span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a> = <span class="keyword">true</span>) {
+<a name="l00391"></a>00391     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && IsDef && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00392"></a>00392     IsDebug = <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a>;
+<a name="l00393"></a>00393   }
+<a name="l00394"></a>00394 
+<a name="l00395"></a>00395   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00396"></a>00396   <span class="comment">// Accessors for various operand types.</span>
+<a name="l00397"></a>00397   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00398"></a>00398 
+<a name="l00399"></a><a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">00399</a>   <a class="code" href="classint64__t.html">int64_t</a> <a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>()<span class="keyword"> const </span>{
+<a name="l00400"></a>00400     assert(<a class="code" href="classllvm_1_1MachineOperand.html#a2ac18ceda9f2857fea2e5cc4e8bf4ff5" title="isImm - Tests if this is a MO_Immediate operand.">isImm</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00401"></a>00401     <span class="keywordflow">return</span> Contents.ImmVal;
+<a name="l00402"></a>00402   }
+<a name="l00403"></a>00403 
+<a name="l00404"></a><a class="code" href="classllvm_1_1MachineOperand.html#ac3407069291f9eef83a9dff13c9c5f43">00404</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *<a class="code" href="classllvm_1_1MachineOperand.html#ac3407069291f9eef83a9dff13c9c5f43">getCImm</a>()<span class="keyword"> const </span>{
+<a name="l00405"></a>00405     assert(<a class="code" href="classllvm_1_1MachineOperand.html#a3f6dfc452fbd6100370d30d41e553841" title="isCImm - Test if t his is a MO_CImmediate operand.">isCImm</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00406"></a>00406     <span class="keywordflow">return</span> Contents.CI;
+<a name="l00407"></a>00407   }
+<a name="l00408"></a>00408 
+<a name="l00409"></a><a class="code" href="classllvm_1_1MachineOperand.html#a9d65ddc39d79d046b9153140d4b6fcf5">00409</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1ConstantFP.html">ConstantFP</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a9d65ddc39d79d046b9153140d4b6fcf5">getFPImm</a>()<span class="keyword"> const </span>{
+<a name="l00410"></a>00410     assert(<a class="code" href="classllvm_1_1MachineOperand.html#a8e77ed930873a9741198fd01a943bde8" title="isFPImm - Tests if this is a MO_FPImmediate operand.">isFPImm</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00411"></a>00411     <span class="keywordflow">return</span> Contents.CFP;
+<a name="l00412"></a>00412   }
+<a name="l00413"></a>00413 
+<a name="l00414"></a><a class="code" href="classllvm_1_1MachineOperand.html#a3350f7760c4eec67ea7d8f3063c3d748">00414</a>   <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a3350f7760c4eec67ea7d8f3063c3d748">getMBB</a>()<span class="keyword"> const </span>{
+<a name="l00415"></a>00415     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ac09a917b80455ff0bae4c05bf0e86d73" title="isMBB - Tests if this is a MO_MachineBasicBlock operand.">isMBB</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00416"></a>00416     <span class="keywordflow">return</span> Contents.MBB;
+<a name="l00417"></a>00417   }
+<a name="l00418"></a>00418 
+<a name="l00419"></a><a class="code" href="classllvm_1_1MachineOperand.html#ac9485ae7d6fedd71ad4460f72c799c98">00419</a>   <span class="keywordtype">int</span> <a class="code" href="classllvm_1_1MachineOperand.html#ac9485ae7d6fedd71ad4460f72c799c98">getIndex</a>()<span class="keyword"> const </span>{
+<a name="l00420"></a>00420     assert((<a class="code" href="classllvm_1_1MachineOperand.html#ab0d5ec413fa43a1e470dafb6cafda9b5" title="isFI - Tests if this is a MO_FrameIndex operand.">isFI</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#a2a6233524fe8cf33f83fe27d3673412c" title="isCPI - Tests if this is a MO_ConstantPoolIndex operand.">isCPI</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#ad019eb206c5f18e60709110de48c6526" title="isTargetIndex - Tests if this is a MO_TargetIndex operand.">isTargetIndex</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#af19a512f40c1e9247796ad8cee70884b" title="isJTI - Tests if this is a MO_JumpTableIndex operand.">isJTI</a>()) &&
+<a name="l00421"></a>00421            <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00422"></a>00422     <span class="keywordflow">return</span> Contents.OffsetedInfo.Val.Index;
+<a name="l00423"></a>00423   }
+<a name="l00424"></a>00424 
+<a name="l00425"></a><a class="code" href="classllvm_1_1MachineOperand.html#a0c3a2a5a49795f8750ebd02dc0e6e11e">00425</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1GlobalValue.html">GlobalValue</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a0c3a2a5a49795f8750ebd02dc0e6e11e">getGlobal</a>()<span class="keyword"> const </span>{
+<a name="l00426"></a>00426     assert(<a class="code" href="classllvm_1_1MachineOperand.html#a58048141ed81d581f3fb9a797f3186ee" title="isGlobal - Tests if this is a MO_GlobalAddress operand.">isGlobal</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00427"></a>00427     <span class="keywordflow">return</span> Contents.OffsetedInfo.Val.GV;
+<a name="l00428"></a>00428   }
+<a name="l00429"></a>00429 
+<a name="l00430"></a><a class="code" href="classllvm_1_1MachineOperand.html#a9f4ee08181e8e39c0c741da7bb52a934">00430</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1BlockAddress.html">BlockAddress</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a9f4ee08181e8e39c0c741da7bb52a934">getBlockAddress</a>()<span class="keyword"> const </span>{
+<a name="l00431"></a>00431     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ab8d6a411aa6fc5c7799214fd50ba2409" title="isBlockAddress - Tests if this is a MO_BlockAddress operand.">isBlockAddress</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00432"></a>00432     <span class="keywordflow">return</span> Contents.OffsetedInfo.Val.BA;
+<a name="l00433"></a>00433   }
+<a name="l00434"></a>00434 
+<a name="l00435"></a><a class="code" href="classllvm_1_1MachineOperand.html#a2c43e362714442b602b34a800f9b54a3">00435</a>   <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a2c43e362714442b602b34a800f9b54a3">getMCSymbol</a>()<span class="keyword"> const </span>{
+<a name="l00436"></a>00436     assert(<a class="code" href="classllvm_1_1MachineOperand.html#abbe67ac0f57d684d40b9a87cd90ce461">isMCSymbol</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00437"></a>00437     <span class="keywordflow">return</span> Contents.Sym;
+<a name="l00438"></a>00438   }
+<a name="l00439"></a>00439 <span class="comment"></span>
+<a name="l00440"></a>00440 <span class="comment">  /// getOffset - Return the offset from the symbol in this operand. This always</span>
+<a name="l00441"></a>00441 <span class="comment">  /// returns 0 for ExternalSymbol operands.</span>
+<a name="l00442"></a><a class="code" href="classllvm_1_1MachineOperand.html#ae73de4f077ea9862af9611652396202b">00442</a> <span class="comment"></span>  <a class="code" href="classint64__t.html">int64_t</a> <a class="code" href="classllvm_1_1MachineOperand.html#ae73de4f077ea9862af9611652396202b">getOffset</a>()<span class="keyword"> const </span>{
+<a name="l00443"></a>00443     assert((<a class="code" href="classllvm_1_1MachineOperand.html#a58048141ed81d581f3fb9a797f3186ee" title="isGlobal - Tests if this is a MO_GlobalAddress operand.">isGlobal</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#a312ddf2fd2162ef0c552d913369cd57f" title="isSymbol - Tests if this is a MO_ExternalSymbol operand.">isSymbol</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#a2a6233524fe8cf33f83fe27d3673412c" title="isCPI - Tests if this is a MO_ConstantPoolIndex operand.">isCPI</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#ad019eb206c5f18e60709110de48c6526" title="isTargetIndex - Tests if this is a MO_TargetIndex operand.">isTargetIndex</a>() ||
+<a name="l00444"></a>00444             <a class="code" href="classllvm_1_1MachineOperand.html#ab8d6a411aa6fc5c7799214fd50ba2409" title="isBlockAddress - Tests if this is a MO_BlockAddress operand.">isBlockAddress</a>()) && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00445"></a>00445     <span class="keywordflow">return</span> <a class="code" href="classint64__t.html">int64_t</a>(uint64_t(Contents.OffsetedInfo.OffsetHi) << 32) |
+<a name="l00446"></a>00446            SmallContents.OffsetLo;
+<a name="l00447"></a>00447   }
+<a name="l00448"></a>00448 
+<a name="l00449"></a><a class="code" href="classllvm_1_1MachineOperand.html#ad9456ef14a72da4e4def5d8747c41a09">00449</a>   <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classllvm_1_1MachineOperand.html#ad9456ef14a72da4e4def5d8747c41a09">getSymbolName</a>()<span class="keyword"> const </span>{
+<a name="l00450"></a>00450     assert(<a class="code" href="classllvm_1_1MachineOperand.html#a312ddf2fd2162ef0c552d913369cd57f" title="isSymbol - Tests if this is a MO_ExternalSymbol operand.">isSymbol</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00451"></a>00451     <span class="keywordflow">return</span> Contents.OffsetedInfo.Val.SymbolName;
+<a name="l00452"></a>00452   }
+<a name="l00453"></a>00453 <span class="comment"></span>
+<a name="l00454"></a>00454 <span class="comment">  /// clobbersPhysReg - Returns true if this RegMask clobbers PhysReg.</span>
+<a name="l00455"></a>00455 <span class="comment">  /// It is sometimes necessary to detach the register mask pointer from its</span>
+<a name="l00456"></a>00456 <span class="comment">  /// machine operand. This static method can be used for such detached bit</span>
+<a name="l00457"></a>00457 <span class="comment">  /// mask pointers.</span>
+<a name="l00458"></a><a class="code" href="classllvm_1_1MachineOperand.html#ad5bef9f5be828b62f053b3017eb9dbdb">00458</a> <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#ad5bef9f5be828b62f053b3017eb9dbdb">clobbersPhysReg</a>(<span class="keyword">const</span> uint32_t *<a class="code" href="classllvm_1_1MachineOperand.html#aabb13d56e58c0a619ad29b5f66809cc6">RegMask</a>, <span class="keywordtype">unsigned</span> PhysReg) {
+<a name="l00459"></a>00459     <span class="comment">// See TargetRegisterInfo.h.</span>
+<a name="l00460"></a>00460     assert(PhysReg < (1u << 30) && <span class="stringliteral">"Not a physical register"</span>);
+<a name="l00461"></a>00461     <span class="keywordflow">return</span> !(RegMask[PhysReg / 32] & (1u << PhysReg % 32));
+<a name="l00462"></a>00462   }
+<a name="l00463"></a>00463 <span class="comment"></span>
+<a name="l00464"></a>00464 <span class="comment">  /// clobbersPhysReg - Returns true if this RegMask operand clobbers PhysReg.</span>
+<a name="l00465"></a><a class="code" href="classllvm_1_1MachineOperand.html#aade47ee909964ce95c9e8b376072b129">00465</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#aade47ee909964ce95c9e8b376072b129" title="clobbersPhysReg - Returns true if this RegMask operand clobbers PhysReg.">clobbersPhysReg</a>(<span class="keywordtype">unsigned</span> PhysReg)<span class="keyword"> const </span>{
+<a name="l00466"></a>00466      <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MachineOperand.html#ad5bef9f5be828b62f053b3017eb9dbdb">clobbersPhysReg</a>(<a class="code" href="classllvm_1_1MachineOperand.html#a5192a9fe4d860e2b97d4457fe4b1a036">getRegMask</a>(), PhysReg);
+<a name="l00467"></a>00467   }
+<a name="l00468"></a>00468 <span class="comment"></span>
+<a name="l00469"></a>00469 <span class="comment">  /// getRegMask - Returns a bit mask of registers preserved by this RegMask</span>
+<a name="l00470"></a>00470 <span class="comment">  /// operand.</span>
+<a name="l00471"></a><a class="code" href="classllvm_1_1MachineOperand.html#a5192a9fe4d860e2b97d4457fe4b1a036">00471</a> <span class="comment"></span>  <span class="keyword">const</span> uint32_t *<a class="code" href="classllvm_1_1MachineOperand.html#a5192a9fe4d860e2b97d4457fe4b1a036">getRegMask</a>()<span class="keyword"> const </span>{
+<a name="l00472"></a>00472     assert(<a class="code" href="classllvm_1_1MachineOperand.html#a2c5eddfba64e7a44deba1b5a0d45a017" title="isRegMask - Tests if this is a MO_RegisterMask operand.">isRegMask</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00473"></a>00473     <span class="keywordflow">return</span> Contents.RegMask;
+<a name="l00474"></a>00474   }
+<a name="l00475"></a>00475 
+<a name="l00476"></a><a class="code" href="classllvm_1_1MachineOperand.html#afd78a2f55a6c4914e7e9cf442a0dabe8">00476</a>   <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="classllvm_1_1MachineOperand.html#afd78a2f55a6c4914e7e9cf442a0dabe8">getMetadata</a>()<span class="keyword"> const </span>{
+<a name="l00477"></a>00477     assert(<a class="code" href="classllvm_1_1MachineOperand.html#a0e2df00699ee7519edd1a7075feb11d9" title="isMetadata - Tests if this is a MO_Metadata operand.">isMetadata</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00478"></a>00478     <span class="keywordflow">return</span> Contents.MD;
+<a name="l00479"></a>00479   }
+<a name="l00480"></a>00480 
+<a name="l00481"></a>00481   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00482"></a>00482   <span class="comment">// Mutators for various operand types.</span>
+<a name="l00483"></a>00483   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00484"></a>00484 
+<a name="l00485"></a><a class="code" href="classllvm_1_1MachineOperand.html#a2feaa1c69335c6b9028076cd68c7a5f5">00485</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a2feaa1c69335c6b9028076cd68c7a5f5">setImm</a>(<a class="code" href="classint64__t.html">int64_t</a> immVal) {
+<a name="l00486"></a>00486     assert(<a class="code" href="classllvm_1_1MachineOperand.html#a2ac18ceda9f2857fea2e5cc4e8bf4ff5" title="isImm - Tests if this is a MO_Immediate operand.">isImm</a>() && <span class="stringliteral">"Wrong MachineOperand mutator"</span>);
+<a name="l00487"></a>00487     Contents.ImmVal = immVal;
+<a name="l00488"></a>00488   }
+<a name="l00489"></a>00489 
+<a name="l00490"></a><a class="code" href="classllvm_1_1MachineOperand.html#aa233a8fe996a2045f5b02f5161e145c2">00490</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#aa233a8fe996a2045f5b02f5161e145c2">setOffset</a>(<a class="code" href="classint64__t.html">int64_t</a> Offset) {
+<a name="l00491"></a>00491     assert((<a class="code" href="classllvm_1_1MachineOperand.html#a58048141ed81d581f3fb9a797f3186ee" title="isGlobal - Tests if this is a MO_GlobalAddress operand.">isGlobal</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#a312ddf2fd2162ef0c552d913369cd57f" title="isSymbol - Tests if this is a MO_ExternalSymbol operand.">isSymbol</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#a2a6233524fe8cf33f83fe27d3673412c" title="isCPI - Tests if this is a MO_ConstantPoolIndex operand.">isCPI</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#ad019eb206c5f18e60709110de48c6526" title="isTargetIndex - Tests if this is a MO_TargetIndex operand.">isTargetIndex</a>() ||
+<a name="l00492"></a>00492             <a class="code" href="classllvm_1_1MachineOperand.html#ab8d6a411aa6fc5c7799214fd50ba2409" title="isBlockAddress - Tests if this is a MO_BlockAddress operand.">isBlockAddress</a>()) && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00493"></a>00493     SmallContents.OffsetLo = <a class="code" href="classunsigned.html">unsigned</a>(Offset);
+<a name="l00494"></a>00494     Contents.OffsetedInfo.OffsetHi = int(Offset >> 32);
+<a name="l00495"></a>00495   }
+<a name="l00496"></a>00496 
+<a name="l00497"></a><a class="code" href="classllvm_1_1MachineOperand.html#aebc99c3c37896879abad49e7254a2fb8">00497</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#aebc99c3c37896879abad49e7254a2fb8">setIndex</a>(<span class="keywordtype">int</span> Idx) {
+<a name="l00498"></a>00498     assert((<a class="code" href="classllvm_1_1MachineOperand.html#ab0d5ec413fa43a1e470dafb6cafda9b5" title="isFI - Tests if this is a MO_FrameIndex operand.">isFI</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#a2a6233524fe8cf33f83fe27d3673412c" title="isCPI - Tests if this is a MO_ConstantPoolIndex operand.">isCPI</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#ad019eb206c5f18e60709110de48c6526" title="isTargetIndex - Tests if this is a MO_TargetIndex operand.">isTargetIndex</a>() || <a class="code" href="classllvm_1_1MachineOperand.html#af19a512f40c1e9247796ad8cee70884b" title="isJTI - Tests if this is a MO_JumpTableIndex operand.">isJTI</a>()) &&
+<a name="l00499"></a>00499            <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00500"></a>00500     Contents.OffsetedInfo.Val.Index = Idx;
+<a name="l00501"></a>00501   }
+<a name="l00502"></a>00502 
+<a name="l00503"></a><a class="code" href="classllvm_1_1MachineOperand.html#a98e9c9e8ef7cbb6c4aa89a38f21decfa">00503</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a98e9c9e8ef7cbb6c4aa89a38f21decfa">setMBB</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a11240f87290855c028dd32f257289ffa">MBB</a>) {
+<a name="l00504"></a>00504     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ac09a917b80455ff0bae4c05bf0e86d73" title="isMBB - Tests if this is a MO_MachineBasicBlock operand.">isMBB</a>() && <span class="stringliteral">"Wrong MachineOperand accessor"</span>);
+<a name="l00505"></a>00505     Contents.MBB = <a class="code" href="classllvm_1_1MachineOperand.html#a11240f87290855c028dd32f257289ffa">MBB</a>;
+<a name="l00506"></a>00506   }
+<a name="l00507"></a>00507 
+<a name="l00508"></a>00508   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00509"></a>00509   <span class="comment">// Other methods.</span>
+<a name="l00510"></a>00510   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00511"></a>00511 <span class="comment"></span>
+<a name="l00512"></a>00512 <span class="comment">  /// isIdenticalTo - Return true if this operand is identical to the specified</span>
+<a name="l00513"></a>00513 <span class="comment">  /// operand. Note: This method ignores isKill and isDead properties.</span>
+<a name="l00514"></a>00514 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a496e043d9f9dd3dd680919665aa7fca1">isIdenticalTo</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &Other) <span class="keyword">const</span>;
+<a name="l00515"></a>00515 <span class="comment"></span>
+<a name="l00516"></a>00516 <span class="comment">  /// \brief MachineOperand hash_value overload.</span>
+<a name="l00517"></a>00517 <span class="comment">  ///</span>
+<a name="l00518"></a>00518 <span class="comment">  /// Note that this includes the same information in the hash that</span>
+<a name="l00519"></a>00519 <span class="comment">  /// isIdenticalTo uses for comparison. It is thus suited for use in hash</span>
+<a name="l00520"></a>00520 <span class="comment">  /// tables which use that function for equality comparisons only.</span>
+<a name="l00521"></a>00521 <span class="comment"></span>  <span class="keyword">friend</span> <a class="code" href="classllvm_1_1hash__code.html" title="An opaque object representing a hash code.">hash_code</a> <a class="code" href="classllvm_1_1MachineOperand.html#a5c94b329f3cec9f4fd23db1d208c0bc8" title="MachineOperand hash_value overload.">hash_value</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO);
+<a name="l00522"></a>00522 <span class="comment"></span>
+<a name="l00523"></a>00523 <span class="comment">  /// ChangeToImmediate - Replace this operand with a new immediate operand of</span>
+<a name="l00524"></a>00524 <span class="comment">  /// the specified value.  If an operand is known to be an immediate already,</span>
+<a name="l00525"></a>00525 <span class="comment">  /// the setImm method should be used.</span>
+<a name="l00526"></a>00526 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#aa7e43fc5b201a1cc5b2b0f1f72963dd2">ChangeToImmediate</a>(<a class="code" href="classint64__t.html">int64_t</a> <a class="code" href="classllvm_1_1MachineOperand.html#aae9c0c1d84d7ec2a5caa12e87f18c5ca">ImmVal</a>);
+<a name="l00527"></a>00527 <span class="comment"></span>
+<a name="l00528"></a>00528 <span class="comment">  /// ChangeToRegister - Replace this operand with a new register operand of</span>
+<a name="l00529"></a>00529 <span class="comment">  /// the specified value.  If an operand is known to be an register already,</span>
+<a name="l00530"></a>00530 <span class="comment">  /// the setReg method should be used.</span>
+<a name="l00531"></a>00531 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineOperand.html#a7db02b21d284294b8d9369803fe1c13b">ChangeToRegister</a>(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>, <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a8de7d5cf38939044471c6ee60a01a3df">isDef</a>, <span class="keywordtype">bool</span> isImp = <span class="keyword">false</span>,
+<a name="l00532"></a>00532                         <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a> = <span class="keyword">false</span>, <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a196420aa839c2b21f42c4bf5c36df437">isDead</a> = <span class="keyword">false</span>,
+<a name="l00533"></a>00533                         <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#afbf853e3a0de950e9116ffb9929ceebd">isUndef</a> = <span class="keyword">false</span>, <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a98b8c4d84ab695588af9822ccad5a482">isDebug</a> = <span class="keyword">false</span>);
+<a name="l00534"></a>00534 
+<a name="l00535"></a>00535   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00536"></a>00536   <span class="comment">// Construction methods.</span>
+<a name="l00537"></a>00537   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00538"></a>00538 
+<a name="l00539"></a><a class="code" href="classllvm_1_1MachineOperand.html#ab09679b541a6ba1219b3602569847364">00539</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#ab09679b541a6ba1219b3602569847364">CreateImm</a>(<a class="code" href="classint64__t.html">int64_t</a> <a class="code" href="classllvm_1_1MachineOperand.html#a1ada4388378b4fc0a9daf74f00ce63c8">Val</a>) {
+<a name="l00540"></a>00540     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da066f84460d9f7b61d54b187555756ef6" title="Immediate operand.">MachineOperand::MO_Immediate</a>);
+<a name="l00541"></a>00541     Op.<a class="code" href="classllvm_1_1MachineOperand.html#a2feaa1c69335c6b9028076cd68c7a5f5">setImm</a>(Val);
+<a name="l00542"></a>00542     <span class="keywordflow">return</span> Op;
+<a name="l00543"></a>00543   }
+<a name="l00544"></a>00544 
+<a name="l00545"></a><a class="code" href="classllvm_1_1MachineOperand.html#a5e7a07b4efeaec2afcb83a6551b38441">00545</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#a5e7a07b4efeaec2afcb83a6551b38441">CreateCImm</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *<a class="code" href="classllvm_1_1MachineOperand.html#ae14abe95adfdba5b324ef3d3705447e1">CI</a>) {
+<a name="l00546"></a>00546     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da5cc9e17457a92caa963ed784d83f6233" title="Immediate >64bit operand.">MachineOperand::MO_CImmediate</a>);
+<a name="l00547"></a>00547     Op.Contents.<a class="code" href="classllvm_1_1MachineOperand.html#ae14abe95adfdba5b324ef3d3705447e1">CI</a> = <a class="code" href="classllvm_1_1MachineOperand.html#ae14abe95adfdba5b324ef3d3705447e1">CI</a>;
+<a name="l00548"></a>00548     <span class="keywordflow">return</span> Op;
+<a name="l00549"></a>00549   }
+<a name="l00550"></a>00550 
+<a name="l00551"></a><a class="code" href="classllvm_1_1MachineOperand.html#a2cd605d7476194cf38e7ef6d2c57391a">00551</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#a2cd605d7476194cf38e7ef6d2c57391a">CreateFPImm</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1ConstantFP.html">ConstantFP</a> *<a class="code" href="classllvm_1_1MachineOperand.html#ac9846ddd59fde8b4c232f2d8eed1a35f">CFP</a>) {
+<a name="l00552"></a>00552     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dac4edc21072344f5aafa2a8f307c78b81" title="Floating-point immediate operand.">MachineOperand::MO_FPImmediate</a>);
+<a name="l00553"></a>00553     Op.Contents.<a class="code" href="classllvm_1_1MachineOperand.html#ac9846ddd59fde8b4c232f2d8eed1a35f">CFP</a> = <a class="code" href="classllvm_1_1MachineOperand.html#ac9846ddd59fde8b4c232f2d8eed1a35f">CFP</a>;
+<a name="l00554"></a>00554     <span class="keywordflow">return</span> Op;
+<a name="l00555"></a>00555   }
+<a name="l00556"></a>00556 
+<a name="l00557"></a><a class="code" href="classllvm_1_1MachineOperand.html#a18124eff2d5106b9bf041f948a1912cc">00557</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#a18124eff2d5106b9bf041f948a1912cc">CreateReg</a>(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>, <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a8de7d5cf38939044471c6ee60a01a3df">isDef</a>, <span class="keywordtype">bool</span> isImp = <span class="keyword">false</span>,
+<a name="l00558"></a>00558                                   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a> = <span class="keyword">false</span>, <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a196420aa839c2b21f42c4bf5c36df437">isDead</a> = <span class="keyword">false</span>,
+<a name="l00559"></a>00559                                   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#afbf853e3a0de950e9116ffb9929ceebd">isUndef</a> = <span class="keyword">false</span>,
+<a name="l00560"></a>00560                                   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a11d72231fe6da4abec10afff58dede5d">isEarlyClobber</a> = <span class="keyword">false</span>,
+<a name="l00561"></a>00561                                   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MachineOperand.html#acdb96975b54a9afcde67acdd78e3f140">SubReg</a> = 0,
+<a name="l00562"></a>00562                                   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a98b8c4d84ab695588af9822ccad5a482">isDebug</a> = <span class="keyword">false</span>,
+<a name="l00563"></a>00563                                   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineOperand.html#a74da84c8a6d7db39be200109ef0d3c7c">isInternalRead</a> = <span class="keyword">false</span>) {
+<a name="l00564"></a>00564     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da99b874c6560305fd292d20f6a06da166" title="Register operand.">MachineOperand::MO_Register</a>);
+<a name="l00565"></a>00565     Op.IsDef = <a class="code" href="classllvm_1_1MachineOperand.html#a8de7d5cf38939044471c6ee60a01a3df">isDef</a>;
+<a name="l00566"></a>00566     Op.IsImp = isImp;
+<a name="l00567"></a>00567     Op.IsKill = <a class="code" href="classllvm_1_1MachineOperand.html#aa21b508be8c212bdb0b28d734ab0ddb8">isKill</a>;
+<a name="l00568"></a>00568     Op.IsDead = <a class="code" href="classllvm_1_1MachineOperand.html#a196420aa839c2b21f42c4bf5c36df437">isDead</a>;
+<a name="l00569"></a>00569     Op.IsUndef = <a class="code" href="classllvm_1_1MachineOperand.html#afbf853e3a0de950e9116ffb9929ceebd">isUndef</a>;
+<a name="l00570"></a>00570     Op.IsInternalRead = <a class="code" href="classllvm_1_1MachineOperand.html#a74da84c8a6d7db39be200109ef0d3c7c">isInternalRead</a>;
+<a name="l00571"></a>00571     Op.IsEarlyClobber = <a class="code" href="classllvm_1_1MachineOperand.html#a11d72231fe6da4abec10afff58dede5d">isEarlyClobber</a>;
+<a name="l00572"></a>00572     Op.TiedTo = 0;
+<a name="l00573"></a>00573     Op.IsDebug = <a class="code" href="classllvm_1_1MachineOperand.html#a98b8c4d84ab695588af9822ccad5a482">isDebug</a>;
+<a name="l00574"></a>00574     Op.SmallContents.<a class="code" href="classllvm_1_1MachineOperand.html#aaf8435daf56f7cb3a39fdfc76a9f58ac">RegNo</a> = <a class="code" href="classllvm_1_1MachineOperand.html#a11c199027daceb07ee6e7d4ee06c0387">Reg</a>;
+<a name="l00575"></a>00575     Op.Contents.<a class="code" href="classllvm_1_1MachineOperand.html#a11c199027daceb07ee6e7d4ee06c0387">Reg</a>.Prev = 0;
+<a name="l00576"></a>00576     Op.Contents.<a class="code" href="classllvm_1_1MachineOperand.html#a11c199027daceb07ee6e7d4ee06c0387">Reg</a>.Next = 0;
+<a name="l00577"></a>00577     Op.<a class="code" href="classllvm_1_1MachineOperand.html#acdb96975b54a9afcde67acdd78e3f140">SubReg</a> = <a class="code" href="classllvm_1_1MachineOperand.html#acdb96975b54a9afcde67acdd78e3f140">SubReg</a>;
+<a name="l00578"></a>00578     <span class="keywordflow">return</span> Op;
+<a name="l00579"></a>00579   }
+<a name="l00580"></a><a class="code" href="classllvm_1_1MachineOperand.html#afff7622ffefd3560aafe2025d245d4c5">00580</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#afff7622ffefd3560aafe2025d245d4c5">CreateMBB</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a11240f87290855c028dd32f257289ffa">MBB</a>,
+<a name="l00581"></a>00581                                   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a> = 0) {
+<a name="l00582"></a>00582     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da95566cb4525dab82db8cbbed3d634c23" title="MachineBasicBlock reference.">MachineOperand::MO_MachineBasicBlock</a>);
+<a name="l00583"></a>00583     Op.<a class="code" href="classllvm_1_1MachineOperand.html#a98e9c9e8ef7cbb6c4aa89a38f21decfa">setMBB</a>(MBB);
+<a name="l00584"></a>00584     Op.<a class="code" href="classllvm_1_1MachineOperand.html#a716d79e043e4a51ac27fa249832ae3f6">setTargetFlags</a>(<a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a>);
+<a name="l00585"></a>00585     <span class="keywordflow">return</span> Op;
+<a name="l00586"></a>00586   }
+<a name="l00587"></a><a class="code" href="classllvm_1_1MachineOperand.html#afda3f1971b3e44709267be818ffd3035">00587</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#afda3f1971b3e44709267be818ffd3035">CreateFI</a>(<span class="keywordtype">int</span> Idx) {
+<a name="l00588"></a>00588     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da97561985119c4a774e3ec6439240fa80" title="Abstract Stack Frame Index.">MachineOperand::MO_FrameIndex</a>);
+<a name="l00589"></a>00589     Op.<a class="code" href="classllvm_1_1MachineOperand.html#aebc99c3c37896879abad49e7254a2fb8">setIndex</a>(Idx);
+<a name="l00590"></a>00590     <span class="keywordflow">return</span> Op;
+<a name="l00591"></a>00591   }
+<a name="l00592"></a><a class="code" href="classllvm_1_1MachineOperand.html#adbff02335819babfcc96551f5933f698">00592</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#adbff02335819babfcc96551f5933f698">CreateCPI</a>(<span class="keywordtype">unsigned</span> Idx, <span class="keywordtype">int</span> Offset,
+<a name="l00593"></a>00593                                   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a> = 0) {
+<a name="l00594"></a>00594     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da0d4fd3b1a2d5d46d77b66d5a35783580" title="Address of indexed Constant in Constant Pool.">MachineOperand::MO_ConstantPoolIndex</a>);
+<a name="l00595"></a>00595     Op.<a class="code" href="classllvm_1_1MachineOperand.html#aebc99c3c37896879abad49e7254a2fb8">setIndex</a>(Idx);
+<a name="l00596"></a>00596     Op.<a class="code" href="classllvm_1_1MachineOperand.html#aa233a8fe996a2045f5b02f5161e145c2">setOffset</a>(Offset);
+<a name="l00597"></a>00597     Op.<a class="code" href="classllvm_1_1MachineOperand.html#a716d79e043e4a51ac27fa249832ae3f6">setTargetFlags</a>(<a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a>);
+<a name="l00598"></a>00598     <span class="keywordflow">return</span> Op;
+<a name="l00599"></a>00599   }
+<a name="l00600"></a><a class="code" href="classllvm_1_1MachineOperand.html#a376c10f9aa84b6f845e653bf0e87c978">00600</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#a376c10f9aa84b6f845e653bf0e87c978">CreateTargetIndex</a>(<span class="keywordtype">unsigned</span> Idx, <a class="code" href="classint64__t.html">int64_t</a> Offset,
+<a name="l00601"></a>00601                                           <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a> = 0) {
+<a name="l00602"></a>00602     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dabb48fd8c9fa828e23f5d33f46cb0cbbb" title="Target-dependent index+offset operand.">MachineOperand::MO_TargetIndex</a>);
+<a name="l00603"></a>00603     Op.<a class="code" href="classllvm_1_1MachineOperand.html#aebc99c3c37896879abad49e7254a2fb8">setIndex</a>(Idx);
+<a name="l00604"></a>00604     Op.<a class="code" href="classllvm_1_1MachineOperand.html#aa233a8fe996a2045f5b02f5161e145c2">setOffset</a>(Offset);
+<a name="l00605"></a>00605     Op.<a class="code" href="classllvm_1_1MachineOperand.html#a716d79e043e4a51ac27fa249832ae3f6">setTargetFlags</a>(<a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a>);
+<a name="l00606"></a>00606     <span class="keywordflow">return</span> Op;
+<a name="l00607"></a>00607   }
+<a name="l00608"></a><a class="code" href="classllvm_1_1MachineOperand.html#a61cb55eaaa97febd18a1f7ee3627d6a9">00608</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#a61cb55eaaa97febd18a1f7ee3627d6a9">CreateJTI</a>(<span class="keywordtype">unsigned</span> Idx,
+<a name="l00609"></a>00609                                   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a> = 0) {
+<a name="l00610"></a>00610     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6daa1741ad7465d81fb3020b84c390ee49d" title="Address of indexed Jump Table for switch.">MachineOperand::MO_JumpTableIndex</a>);
+<a name="l00611"></a>00611     Op.<a class="code" href="classllvm_1_1MachineOperand.html#aebc99c3c37896879abad49e7254a2fb8">setIndex</a>(Idx);
+<a name="l00612"></a>00612     Op.<a class="code" href="classllvm_1_1MachineOperand.html#a716d79e043e4a51ac27fa249832ae3f6">setTargetFlags</a>(<a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a>);
+<a name="l00613"></a>00613     <span class="keywordflow">return</span> Op;
+<a name="l00614"></a>00614   }
+<a name="l00615"></a><a class="code" href="classllvm_1_1MachineOperand.html#a584afa0142af5fc834c52002da32e5a0">00615</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#a584afa0142af5fc834c52002da32e5a0">CreateGA</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1GlobalValue.html">GlobalValue</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a9f9e5e60a03d0ba15d531ba2136e9f7a">GV</a>, <a class="code" href="classint64__t.html">int64_t</a> Offset,
+<a name="l00616"></a>00616                                  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a> = 0) {
+<a name="l00617"></a>00617     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da3f1f6bfc5aa57cf388201bf6b8fee7d3" title="Address of a global value.">MachineOperand::MO_GlobalAddress</a>);
+<a name="l00618"></a>00618     Op.Contents.<a class="code" href="classllvm_1_1MachineOperand.html#af8329ce1711b7882758e32c0d509b7cf">OffsetedInfo</a>.Val.GV = <a class="code" href="classllvm_1_1MachineOperand.html#a9f9e5e60a03d0ba15d531ba2136e9f7a">GV</a>;
+<a name="l00619"></a>00619     Op.<a class="code" href="classllvm_1_1MachineOperand.html#aa233a8fe996a2045f5b02f5161e145c2">setOffset</a>(Offset);
+<a name="l00620"></a>00620     Op.<a class="code" href="classllvm_1_1MachineOperand.html#a716d79e043e4a51ac27fa249832ae3f6">setTargetFlags</a>(<a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a>);
+<a name="l00621"></a>00621     <span class="keywordflow">return</span> Op;
+<a name="l00622"></a>00622   }
+<a name="l00623"></a><a class="code" href="classllvm_1_1MachineOperand.html#a7842fe6d128bff580bd62dc92546a716">00623</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#a7842fe6d128bff580bd62dc92546a716">CreateES</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *SymName,
+<a name="l00624"></a>00624                                  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a> = 0) {
+<a name="l00625"></a>00625     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da9d22ed12eec3e14283ed6a3617d12119" title="Name of external global symbol.">MachineOperand::MO_ExternalSymbol</a>);
+<a name="l00626"></a>00626     Op.Contents.<a class="code" href="classllvm_1_1MachineOperand.html#af8329ce1711b7882758e32c0d509b7cf">OffsetedInfo</a>.Val.SymbolName = SymName;
+<a name="l00627"></a>00627     Op.<a class="code" href="classllvm_1_1MachineOperand.html#aa233a8fe996a2045f5b02f5161e145c2">setOffset</a>(0); <span class="comment">// Offset is always 0.</span>
+<a name="l00628"></a>00628     Op.<a class="code" href="classllvm_1_1MachineOperand.html#a716d79e043e4a51ac27fa249832ae3f6">setTargetFlags</a>(<a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a>);
+<a name="l00629"></a>00629     <span class="keywordflow">return</span> Op;
+<a name="l00630"></a>00630   }
+<a name="l00631"></a><a class="code" href="classllvm_1_1MachineOperand.html#a3f4e967bf3471548010829094245d16b">00631</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#a3f4e967bf3471548010829094245d16b">CreateBA</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1BlockAddress.html">BlockAddress</a> *<a class="code" href="classllvm_1_1MachineOperand.html#af735a8239f4a229cc7d402cd0c588fb3">BA</a>, <a class="code" href="classint64__t.html">int64_t</a> Offset,
+<a name="l00632"></a>00632                                  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a> = 0) {
+<a name="l00633"></a>00633     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da7e48d34b4b9e7e8dd77301779ff77013" title="Address of a basic block.">MachineOperand::MO_BlockAddress</a>);
+<a name="l00634"></a>00634     Op.Contents.<a class="code" href="classllvm_1_1MachineOperand.html#af8329ce1711b7882758e32c0d509b7cf">OffsetedInfo</a>.Val.BA = <a class="code" href="classllvm_1_1MachineOperand.html#af735a8239f4a229cc7d402cd0c588fb3">BA</a>;
+<a name="l00635"></a>00635     Op.<a class="code" href="classllvm_1_1MachineOperand.html#aa233a8fe996a2045f5b02f5161e145c2">setOffset</a>(Offset);
+<a name="l00636"></a>00636     Op.<a class="code" href="classllvm_1_1MachineOperand.html#a716d79e043e4a51ac27fa249832ae3f6">setTargetFlags</a>(<a class="code" href="classllvm_1_1MachineOperand.html#a06388c6ac3df79bc9aaccfb7f5836e50" title="TargetFlags - This is a set of target-specific operand flags.">TargetFlags</a>);
+<a name="l00637"></a>00637     <span class="keywordflow">return</span> Op;
+<a name="l00638"></a>00638   }<span class="comment"></span>
+<a name="l00639"></a>00639 <span class="comment">  /// CreateRegMask - Creates a register mask operand referencing Mask.  The</span>
+<a name="l00640"></a>00640 <span class="comment">  /// operand does not take ownership of the memory referenced by Mask, it must</span>
+<a name="l00641"></a>00641 <span class="comment">  /// remain valid for the lifetime of the operand.</span>
+<a name="l00642"></a>00642 <span class="comment">  ///</span>
+<a name="l00643"></a>00643 <span class="comment">  /// A RegMask operand represents a set of non-clobbered physical registers on</span>
+<a name="l00644"></a>00644 <span class="comment">  /// an instruction that clobbers many registers, typically a call.  The bit</span>
+<a name="l00645"></a>00645 <span class="comment">  /// mask has a bit set for each physreg that is preserved by this</span>
+<a name="l00646"></a>00646 <span class="comment">  /// instruction, as described in the documentation for</span>
+<a name="l00647"></a>00647 <span class="comment">  /// TargetRegisterInfo::getCallPreservedMask().</span>
+<a name="l00648"></a>00648 <span class="comment">  ///</span>
+<a name="l00649"></a>00649 <span class="comment">  /// Any physreg with a 0 bit in the mask is clobbered by the instruction.</span>
+<a name="l00650"></a>00650 <span class="comment">  ///</span>
+<a name="l00651"></a><a class="code" href="classllvm_1_1MachineOperand.html#a4c01d756ca363aef75429d61d21c0c14">00651</a> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#a4c01d756ca363aef75429d61d21c0c14">CreateRegMask</a>(<span class="keyword">const</span> uint32_t *Mask) {
+<a name="l00652"></a>00652     assert(Mask && <span class="stringliteral">"Missing register mask"</span>);
+<a name="l00653"></a>00653     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da48257b48932e88a230caff68469fd9f6" title="Mask of preserved registers.">MachineOperand::MO_RegisterMask</a>);
+<a name="l00654"></a>00654     Op.Contents.<a class="code" href="classllvm_1_1MachineOperand.html#aabb13d56e58c0a619ad29b5f66809cc6">RegMask</a> = Mask;
+<a name="l00655"></a>00655     <span class="keywordflow">return</span> Op;
+<a name="l00656"></a>00656   }
+<a name="l00657"></a><a class="code" href="classllvm_1_1MachineOperand.html#a903091abda5acf43af8ade829181b9b4">00657</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#a903091abda5acf43af8ade829181b9b4">CreateMetadata</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *Meta) {
+<a name="l00658"></a>00658     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dabf35c1c1ff9daae15b2dff8efa224623" title="Metadata reference (for debug info)">MachineOperand::MO_Metadata</a>);
+<a name="l00659"></a>00659     Op.Contents.<a class="code" href="classllvm_1_1MachineOperand.html#a9a714c9b8df8667011e9fddb67d66536">MD</a> = Meta;
+<a name="l00660"></a>00660     <span class="keywordflow">return</span> Op;
+<a name="l00661"></a>00661   }
+<a name="l00662"></a>00662 
+<a name="l00663"></a><a class="code" href="classllvm_1_1MachineOperand.html#a189b180948de02ae7291721c0d5841ca">00663</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> <a class="code" href="classllvm_1_1MachineOperand.html#a189b180948de02ae7291721c0d5841ca">CreateMCSymbol</a>(<a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *<a class="code" href="classllvm_1_1MachineOperand.html#a09294ca1c1fbb50e86a1593cd88e3f77">Sym</a>) {
+<a name="l00664"></a>00664     <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> Op(<a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da17c8e891dacb2adc4a2d0ee5b10d6e9f" title="MCSymbol reference (for debug/eh info)">MachineOperand::MO_MCSymbol</a>);
+<a name="l00665"></a>00665     Op.Contents.<a class="code" href="classllvm_1_1MachineOperand.html#a09294ca1c1fbb50e86a1593cd88e3f77">Sym</a> = <a class="code" href="classllvm_1_1MachineOperand.html#a09294ca1c1fbb50e86a1593cd88e3f77">Sym</a>;
+<a name="l00666"></a>00666     <span class="keywordflow">return</span> Op;
+<a name="l00667"></a>00667   }
+<a name="l00668"></a>00668 
+<a name="l00669"></a><a class="code" href="classllvm_1_1MachineOperand.html#ae984860b88c448f0d8f7ac9b11077441">00669</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a>;
+<a name="l00670"></a><a class="code" href="classllvm_1_1MachineOperand.html#ae42703e0d4c147a9765234011797f5dd">00670</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classllvm_1_1MachineRegisterInfo.html">MachineRegisterInfo</a>;
+<a name="l00671"></a>00671 <span class="keyword">private</span>:
+<a name="l00672"></a>00672   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00673"></a>00673   <span class="comment">// Methods for handling register use/def lists.</span>
+<a name="l00674"></a>00674   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00675"></a>00675 <span class="comment"></span>
+<a name="l00676"></a>00676 <span class="comment">  /// isOnRegUseList - Return true if this operand is on a register use/def list</span>
+<a name="l00677"></a>00677 <span class="comment">  /// or false if not.  This can only be called for register operands that are</span>
+<a name="l00678"></a>00678 <span class="comment">  /// part of a machine instruction.</span>
+<a name="l00679"></a>00679 <span class="comment"></span>  <span class="keywordtype">bool</span> isOnRegUseList()<span class="keyword"> const </span>{
+<a name="l00680"></a>00680     assert(<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && <span class="stringliteral">"Can only add reg operand to use lists"</span>);
+<a name="l00681"></a>00681     <span class="keywordflow">return</span> Contents.Reg.Prev != 0;
+<a name="l00682"></a>00682   }
+<a name="l00683"></a>00683 };
+<a name="l00684"></a>00684 
+<a name="l00685"></a><a class="code" href="namespacellvm.html#ab454bf873aa25c4252b4496008f442d3">00685</a> <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, <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a>& MO) {
+<a name="l00686"></a>00686   MO.<a class="code" href="classllvm_1_1MachineOperand.html#a4d06eceb0ecf3b95712b89fa611eeb4e">print</a>(OS, 0);
+<a name="l00687"></a>00687   <span class="keywordflow">return</span> OS;
+<a name="l00688"></a>00688 }
+<a name="l00689"></a>00689 
+<a name="l00690"></a>00690   <span class="comment">// See friend declaration above. This additional declaration is required in</span>
+<a name="l00691"></a>00691   <span class="comment">// order to compile LLVM with IBM xlC compiler.</span>
+<a name="l00692"></a>00692   hash_code <a class="code" href="namespacellvm.html#a4dd787942e0bd9f46c0cc2642cce0a4c">hash_value</a>(<span class="keyword">const</span> MachineOperand &MO);
+<a name="l00693"></a>00693 } <span class="comment">// End llvm namespace</span>
+<a name="l00694"></a>00694 
+<a name="l00695"></a>00695 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:36 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/MachinePassRegistry_8h__dep__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachinePassRegistry_8h__dep__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachinePassRegistry_8h__dep__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachinePassRegistry_8h__dep__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,25 @@
+<map id="G" name="G">
+<area shape="rect" href="$SchedulerRegistry_8h.html" title="SchedulerRegistry.h" alt="" coords="1021,84,1165,111"/>
+<area shape="rect" href="$MachineScheduler_8h.html" title="MachineScheduler.h" alt="" coords="2332,84,2481,111"/>
+<area shape="rect" href="$RegAllocRegistry_8h.html" title="RegAllocRegistry.h" alt="" coords="2649,84,2783,111"/>
+<area shape="rect" href="$MachinePassRegistry_8cpp.html" title="MachinePassRegistry.cpp" alt="" coords="2807,84,2985,111"/>
+<area shape="rect" href="$LinkAllCodegenComponents_8h.html" title="LinkAllCodegenComponents.h" alt="" coords="5,161,216,188"/>
+<area shape="rect" href="$PostRASchedulerList_8cpp.html" title="PostRASchedulerList.cpp" alt="" coords="240,161,419,188"/>
+<area shape="rect" href="$ScheduleDAGFast_8cpp.html" title="ScheduleDAGFast.cpp" alt="" coords="443,161,605,188"/>
+<area shape="rect" href="$ScheduleDAGRRList_8cpp.html" title="ScheduleDAGRRList.cpp" alt="" coords="629,161,803,188"/>
+<area shape="rect" href="$ScheduleDAGVLIW_8cpp.html" title="ScheduleDAGVLIW.cpp" alt="" coords="827,161,989,188"/>
+<area shape="rect" href="$SelectionDAGISel_8cpp.html" title="SelectionDAGISel.cpp" alt="" coords="1013,161,1173,188"/>
+<area shape="rect" href="$SPUTargetMachine_8cpp.html" title="SPUTargetMachine.cpp" alt="" coords="1197,161,1365,188"/>
+<area shape="rect" href="$HexagonExpandPredSpillCode_8cpp.html" title="HexagonExpandPredSpillCode.cpp" alt="" coords="1389,161,1629,188"/>
+<area shape="rect" href="$HexagonSplitTFRCondSets_8cpp.html" title="HexagonSplitTFRCondSets.cpp" alt="" coords="1653,161,1869,188"/>
+<area shape="rect" href="$HexagonVLIWPacketizer_8cpp.html" title="HexagonVLIWPacketizer.cpp" alt="" coords="1893,161,2093,188"/>
+<area shape="rect" href="$MachineScheduler_8cpp.html" title="MachineScheduler.cpp" alt="" coords="2117,161,2280,188"/>
+<area shape="rect" href="$HexagonMachineScheduler_8h.html" title="HexagonMachineScheduler.h" alt="" coords="2304,161,2509,188"/>
+<area shape="rect" href="$HexagonMachineScheduler_8cpp.html" title="HexagonMachineScheduler.cpp" alt="" coords="2179,239,2400,265"/>
+<area shape="rect" href="$HexagonTargetMachine_8cpp.html" title="HexagonTargetMachine.cpp" alt="" coords="2424,239,2621,265"/>
+<area shape="rect" href="$Passes_8cpp.html" title="Passes.cpp" alt="" coords="2533,161,2624,188"/>
+<area shape="rect" href="$RegAllocBasic_8cpp.html" title="RegAllocBasic.cpp" alt="" coords="2648,161,2784,188"/>
+<area shape="rect" href="$RegAllocFast_8cpp.html" title="RegAllocFast.cpp" alt="" coords="2808,161,2936,188"/>
+<area shape="rect" href="$RegAllocGreedy_8cpp.html" title="RegAllocGreedy.cpp" alt="" coords="2960,161,3104,188"/>
+<area shape="rect" href="$RegAllocPBQP_8cpp.html" title="RegAllocPBQP.cpp" alt="" coords="3128,161,3261,188"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MachinePassRegistry_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachinePassRegistry_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachinePassRegistry_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachinePassRegistry_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,31 @@
+<map id="G" name="G">
+<area shape="rect" href="$CodeGen_2Passes_8h.html" title="llvm/CodeGen/Passes.h" alt="" coords="1161,84,1332,111"/>
+<area shape="rect" href="$CommandLine_8h.html" title="llvm/Support/CommandLine.h" alt="" coords="2383,393,2593,420"/>
+<area shape="rect" href="$Pass_8h.html" title="llvm/Pass.h" alt="" coords="1153,393,1244,420"/>
+<area shape="rect" href="$Target_2TargetMachine_8h.html" title="llvm/Target/TargetMachine.h" alt="" coords="792,161,989,188"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="2488,703,2661,729"/>
+<area shape="rect" href="$PassSupport_8h.html" title="llvm/PassSupport.h" alt="" coords="1127,471,1271,497"/>
+<area shape="rect" href="$PassAnalysisSupport_8h.html" title="llvm/PassAnalysisSupport.h" alt="" coords="1813,471,2008,497"/>
+<area shape="rect" href="$PassRegistry_8h.html" title="llvm/PassRegistry.h" alt="" coords="1581,548,1720,575"/>
+<area shape="rect" href="$InitializePasses_8h.html" title="llvm/InitializePasses.h" alt="" coords="877,548,1035,575"/>
+<area shape="rect" href="$Atomic_8h.html" title="llvm/Support/Atomic.h" alt="" coords="431,703,593,729"/>
+<area shape="rect" href="$Valgrind_8h.html" title="llvm/Support/Valgrind.h" alt="" coords="1109,548,1277,575"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="1697,625,1847,652"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="2255,703,2441,729"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="480,780,664,807"/>
+<area shape="rect" href="$llvm-config_8h.html" title="llvm/Config/llvm-config.h" alt="" coords="1105,625,1281,652"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="2268,548,2436,575"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="2652,625,2815,652"/>
+<area shape="rect" href="$CodeGen_8h.html" title="llvm/Support/CodeGen.h" alt="" coords="419,239,595,265"/>
+<area shape="rect" href="$TargetOptions_8h.html" title="llvm/Target/TargetOptions.h" alt="" coords="711,316,905,343"/>
+<area shape="rect" href="$TargetTransformInfo_8h.html" title="llvm/TargetTransformInfo.h" alt="" coords="288,316,475,343"/>
+<area shape="rect" href="$TargetTransformImpl_8h.html" title="llvm/Target/TargetTransformImpl.h" alt="" coords="619,239,853,265"/>
+<area shape="rect" href="$AddressingMode_8h.html" title="llvm/AddressingMode.h" alt="" coords="44,393,212,420"/>
+<area shape="rect" href="$Type_8h.html" title="llvm/Type.h" alt="" coords="763,548,853,575"/>
+<area shape="rect" href="$Casting_8h.html" title="llvm/Support/Casting.h" alt="" coords="1508,625,1673,652"/>
+<area shape="rect" href="$ValueTypes_8h.html" title="llvm/CodeGen/ValueTypes.h" alt="" coords="347,471,541,497"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="1352,548,1557,575"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="448,548,637,575"/>
+<area shape="rect" href="$SwapByteOrder_8h.html" title="llvm/Support/SwapByteOrder.h" alt="" coords="719,625,935,652"/>
+<area shape="rect" href="$Twine_8h.html" title="llvm/ADT/Twine.h" alt="" coords="1664,471,1789,497"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MachinePostDominators_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachinePostDominators_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachinePostDominators_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachinePostDominators_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,178 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="MachinePostDominators.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/CodeGen/MachinePostDominators.h",height=0.2,width=0.4,color="black",URL="$MachinePostDominators_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/CodeGen/MachineFunctionPass.h",height=0.2,width=0.4,color="black",URL="$MachineFunctionPass_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/Pass.h",height=0.2,width=0.4,color="black",URL="$Pass_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="string",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/PassSupport.h",height=0.2,width=0.4,color="red",URL="$PassSupport_8h.html"];
+  Node7 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/PassAnalysisSupport.h",height=0.2,width=0.4,color="red",URL="$PassAnalysisSupport_8h.html"];
+  Node9 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="red",URL="$SmallVector_8h.html"];
+  Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_8h.html"];
+  Node11 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node13 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="red",URL="$DataTypes_8h.html"];
+  Node13 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/CodeGen/MachineDominators.h",height=0.2,width=0.4,color="black",URL="$MachineDominators_8h.html"];
+  Node21 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/CodeGen/MachineBasicBlock.h",height=0.2,width=0.4,color="black",URL="$MachineBasicBlock_8h.html"];
+  Node22 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/CodeGen/MachineInstr.h",height=0.2,width=0.4,color="red",URL="$MachineInstr_8h.html"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/ADT/ilist.h",height=0.2,width=0.4,color="black",URL="$ilist_8h.html"];
+  Node24 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/ADT/DenseMapInfo.h",height=0.2,width=0.4,color="black",URL="$DenseMapInfo_8h.html"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/Support/PointerLikeTypeTraits.h",height=0.2,width=0.4,color="black",URL="$PointerLikeTypeTraits_8h.html"];
+  Node26 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/Support/DebugLoc.h",height=0.2,width=0.4,color="black",URL="$DebugLoc_8h.html"];
+  Node23 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/ADT/GraphTraits.h",height=0.2,width=0.4,color="black",URL="$GraphTraits_8h.html"];
+  Node22 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="functional",height=0.2,width=0.4,color="grey75"];
+  Node21 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/CodeGen/MachineFunction.h",height=0.2,width=0.4,color="black",URL="$MachineFunction_8h.html"];
+  Node30 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Support/Allocator.h",height=0.2,width=0.4,color="black",URL="$Allocator_8h.html"];
+  Node31 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="red",URL="$MathExtras_8h.html"];
+  Node31 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/Support/Recycler.h",height=0.2,width=0.4,color="red",URL="$Recycler_8h.html"];
+  Node33 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Analysis/Dominators.h",height=0.2,width=0.4,color="black",URL="$Dominators_8h.html"];
+  Node34 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> 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="red",URL="$GlobalValue_8h.html"];
+  Node35 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node35 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/BasicBlock.h",height=0.2,width=0.4,color="red",URL="$BasicBlock_8h.html"];
+  Node38 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node14 [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="red",URL="$Argument_8h.html"];
+  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 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node6 [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"];
+  Node34 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="black",URL="$DenseMap_8h.html"];
+  Node41 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="new",height=0.2,width=0.4,color="grey75"];
+  Node41 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node41 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/ADT/DepthFirstIterator.h",height=0.2,width=0.4,color="black",URL="$DepthFirstIterator_8h.html"];
+  Node44 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="black",URL="$SmallPtrSet_8h.html"];
+  Node45 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/ADT/PointerIntPair.h",height=0.2,width=0.4,color="black",URL="$PointerIntPair_8h.html"];
+  Node46 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="set",height=0.2,width=0.4,color="grey75"];
+  Node44 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Support/CFG.h",height=0.2,width=0.4,color="red",URL="$CFG_8h.html"];
+  Node48 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> 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 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/Analysis/DominatorInternals.h",height=0.2,width=0.4,color="black",URL="$DominatorInternals_8h.html"];
+  Node50 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/MachinePostDominators_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachinePostDominators_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachinePostDominators_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachinePostDominators_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,178 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="MachinePostDominators.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/CodeGen/MachineFunctionPass.h",height=0.2,width=0.4,color="black",URL="$MachineFunctionPass_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Pass.h",height=0.2,width=0.4,color="black",URL="$Pass_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/PassSupport.h",height=0.2,width=0.4,color="red",URL="$PassSupport_8h.html"];
+  Node6 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/PassAnalysisSupport.h",height=0.2,width=0.4,color="red",URL="$PassAnalysisSupport_8h.html"];
+  Node8 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="black",URL="$SmallVector_8h.html"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_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"];
+  Node9 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="red",URL="$DataTypes_8h.html"];
+  Node12 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="memory",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/CodeGen/MachineDominators.h",height=0.2,width=0.4,color="black",URL="$MachineDominators_8h.html"];
+  Node21 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/CodeGen/MachineBasicBlock.h",height=0.2,width=0.4,color="black",URL="$MachineBasicBlock_8h.html"];
+  Node22 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/CodeGen/MachineInstr.h",height=0.2,width=0.4,color="red",URL="$MachineInstr_8h.html"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/ADT/ilist.h",height=0.2,width=0.4,color="black",URL="$ilist_8h.html"];
+  Node24 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/ADT/DenseMapInfo.h",height=0.2,width=0.4,color="black",URL="$DenseMapInfo_8h.html"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/Support/PointerLikeTypeTraits.h",height=0.2,width=0.4,color="black",URL="$PointerLikeTypeTraits_8h.html"];
+  Node26 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/Support/DebugLoc.h",height=0.2,width=0.4,color="black",URL="$DebugLoc_8h.html"];
+  Node23 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/ADT/GraphTraits.h",height=0.2,width=0.4,color="black",URL="$GraphTraits_8h.html"];
+  Node22 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="functional",height=0.2,width=0.4,color="grey75"];
+  Node21 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/CodeGen/MachineFunction.h",height=0.2,width=0.4,color="black",URL="$MachineFunction_8h.html"];
+  Node30 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Support/Allocator.h",height=0.2,width=0.4,color="black",URL="$Allocator_8h.html"];
+  Node31 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="red",URL="$MathExtras_8h.html"];
+  Node31 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/Support/Recycler.h",height=0.2,width=0.4,color="red",URL="$Recycler_8h.html"];
+  Node33 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Analysis/Dominators.h",height=0.2,width=0.4,color="black",URL="$Dominators_8h.html"];
+  Node34 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> 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="red",URL="$GlobalValue_8h.html"];
+  Node35 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node35 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/BasicBlock.h",height=0.2,width=0.4,color="red",URL="$BasicBlock_8h.html"];
+  Node38 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node13 [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="red",URL="$Argument_8h.html"];
+  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 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="black",URL="$DenseMap_8h.html"];
+  Node41 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="new",height=0.2,width=0.4,color="grey75"];
+  Node41 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node41 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/ADT/DepthFirstIterator.h",height=0.2,width=0.4,color="black",URL="$DepthFirstIterator_8h.html"];
+  Node44 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="black",URL="$SmallPtrSet_8h.html"];
+  Node45 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/ADT/PointerIntPair.h",height=0.2,width=0.4,color="black",URL="$PointerIntPair_8h.html"];
+  Node46 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="set",height=0.2,width=0.4,color="grey75"];
+  Node44 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Support/CFG.h",height=0.2,width=0.4,color="red",URL="$CFG_8h.html"];
+  Node48 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> 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 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/Analysis/DominatorInternals.h",height=0.2,width=0.4,color="black",URL="$DominatorInternals_8h.html"];
+  Node50 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineRegisterInfo_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineRegisterInfo_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineRegisterInfo_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineRegisterInfo_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: MachineRegisterInfo.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_f2244d21cf8bec63d11bfc1ad661d96f.html">CodeGen</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">MachineRegisterInfo.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="MachineRegisterInfo_8h_source.html">llvm/CodeGen/MachineRegisterInfo.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="TargetInstrInfo_8h_source.html">llvm/Target/TargetInstrInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="Target_2TargetMachine_8h_source.html">llvm/Target/TargetMachine.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for MachineRegisterInfo.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="MachineRegisterInfo_8cpp__incl.png" border="0" usemap="#MachineRegisterInfo_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="MachineRegisterInfo_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:31 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/MachineRegisterInfo_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineRegisterInfo_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineRegisterInfo_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineRegisterInfo_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,174 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="MachineRegisterInfo.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/CodeGen/MachineRegisterInfo.h",height=0.2,width=0.4,color="black",URL="$MachineRegisterInfo_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Target/TargetRegisterInfo.h",height=0.2,width=0.4,color="black",URL="$TargetRegisterInfo_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/MC/MCRegisterInfo.h",height=0.2,width=0.4,color="black",URL="$MCRegisterInfo_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node5 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="red",URL="$MathExtras_8h.html"];
+  Node5 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="climits",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="black",URL="$ErrorHandling_8h.html"];
+  Node11 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="red",URL="$StringRef_8h.html"];
+  Node12 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node11 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/CodeGen/MachineBasicBlock.h",height=0.2,width=0.4,color="red",URL="$MachineBasicBlock_8h.html"];
+  Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="red",URL="$DataTypes_8h.html"];
+  Node14 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="functional",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/CodeGen/ValueTypes.h",height=0.2,width=0.4,color="black",URL="$ValueTypes_8h.html"];
+  Node17 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="black",URL="$ArrayRef_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="red",URL="$SmallVector_8h.html"];
+  Node19 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node18 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/CodeGen/MachineInstrBundle.h",height=0.2,width=0.4,color="black",URL="$MachineInstrBundle_8h.html"];
+  Node23 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/ADT/BitVector.h",height=0.2,width=0.4,color="black",URL="$BitVector_8h.html"];
+  Node24 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/ADT/IndexedMap.h",height=0.2,width=0.4,color="black",URL="$IndexedMap_8h.html"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/ADT/STLExtras.h",height=0.2,width=0.4,color="red",URL="$STLExtras_8h.html"];
+  Node26 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/CodeGen/MachineInstrBuilder.h",height=0.2,width=0.4,color="black",URL="$MachineInstrBuilder_8h.html"];
+  Node27 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/CodeGen/MachineFunction.h",height=0.2,width=0.4,color="black",URL="$MachineFunction_8h.html"];
+  Node28 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/ADT/ilist.h",height=0.2,width=0.4,color="red",URL="$ilist_8h.html"];
+  Node29 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/Support/DebugLoc.h",height=0.2,width=0.4,color="black",URL="$DebugLoc_8h.html"];
+  Node28 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Support/Allocator.h",height=0.2,width=0.4,color="red",URL="$Allocator_8h.html"];
+  Node31 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/Support/Recycler.h",height=0.2,width=0.4,color="red",URL="$Recycler_8h.html"];
+  Node32 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/Target/TargetInstrInfo.h",height=0.2,width=0.4,color="black",URL="$TargetInstrInfo_8h.html"];
+  Node33 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/ADT/SmallSet.h",height=0.2,width=0.4,color="black",URL="$SmallSet_8h.html"];
+  Node34 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="red",URL="$SmallPtrSet_8h.html"];
+  Node35 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="set",height=0.2,width=0.4,color="grey75"];
+  Node33 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/MC/MCInstrInfo.h",height=0.2,width=0.4,color="black",URL="$MCInstrInfo_8h.html"];
+  Node37 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/MC/MCInstrDesc.h",height=0.2,width=0.4,color="black",URL="$MCInstrDesc_8h.html"];
+  Node38 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/CodeGen/DFAPacketizer.h",height=0.2,width=0.4,color="black",URL="$DFAPacketizer_8h.html"];
+  Node39 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="map",height=0.2,width=0.4,color="grey75"];
+  Node33 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/Target/TargetMachine.h",height=0.2,width=0.4,color="black",URL="$Target_2TargetMachine_8h.html"];
+  Node41 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/Pass.h",height=0.2,width=0.4,color="black",URL="$Pass_8h.html"];
+  Node42 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/PassSupport.h",height=0.2,width=0.4,color="red",URL="$PassSupport_8h.html"];
+  Node43 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/PassAnalysisSupport.h",height=0.2,width=0.4,color="black",URL="$PassAnalysisSupport_8h.html"];
+  Node44 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/Support/CodeGen.h",height=0.2,width=0.4,color="black",URL="$CodeGen_8h.html"];
+  Node41 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/Target/TargetOptions.h",height=0.2,width=0.4,color="black",URL="$TargetOptions_8h.html"];
+  Node46 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/TargetTransformInfo.h",height=0.2,width=0.4,color="black",URL="$TargetTransformInfo_8h.html"];
+  Node47 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/AddressingMode.h",height=0.2,width=0.4,color="black",URL="$AddressingMode_8h.html"];
+  Node48 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/Type.h",height=0.2,width=0.4,color="red",URL="$Type_8h.html"];
+  Node49 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/Target/TargetTransformImpl.h",height=0.2,width=0.4,color="black",URL="$TargetTransformImpl_8h.html"];
+  Node50 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineSSAUpdater_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineSSAUpdater_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineSSAUpdater_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineSSAUpdater_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,421 @@
+<!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: MachineSSAUpdater.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">MachineSSAUpdater.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="MachineSSAUpdater_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- MachineSSAUpdater.cpp - Unstructured SSA Update Tool ---------------===//</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 MachineSSAUpdater class. It's based on SSAUpdater</span>
+<a name="l00011"></a>00011 <span class="comment">// class in lib/Transforms/Utils.</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">#include "<a class="code" href="MachineSSAUpdater_8h.html">llvm/CodeGen/MachineSSAUpdater.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="MachineInstr_8h.html">llvm/CodeGen/MachineInstr.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="MachineInstrBuilder_8h.html">llvm/CodeGen/MachineInstrBuilder.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="MachineRegisterInfo_8h.html">llvm/CodeGen/MachineRegisterInfo.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="TargetInstrInfo_8h.html">llvm/Target/TargetInstrInfo.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="Target_2TargetMachine_8h.html">llvm/Target/TargetMachine.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="TargetRegisterInfo_8h.html">llvm/Target/TargetRegisterInfo.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="DenseMap_8h.html">llvm/ADT/DenseMap.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="SmallVector_8h.html">llvm/ADT/SmallVector.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="AlignOf_8h.html">llvm/Support/AlignOf.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="Allocator_8h.html">llvm/Support/Allocator.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="Debug_8h.html">llvm/Support/Debug.h</a>"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="ErrorHandling_8h.html">llvm/Support/ErrorHandling.h</a>"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="SSAUpdaterImpl_8h.html">llvm/Transforms/Utils/SSAUpdaterImpl.h</a>"</span>
+<a name="l00030"></a>00030 <span class="keyword">using namespace </span>llvm;
+<a name="l00031"></a>00031 
+<a name="l00032"></a><a class="code" href="MachineSSAUpdater_8cpp.html#a717c6b25df2101007a37d6b4c5a75a59">00032</a> <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<MachineBasicBlock*, unsigned></a> <a class="code" href="MachineSSAUpdater_8cpp.html#a717c6b25df2101007a37d6b4c5a75a59">AvailableValsTy</a>;
+<a name="l00033"></a><a class="code" href="MachineSSAUpdater_8cpp.html#ac2ca1fcb12c48b7875765b4685b44a18">00033</a> <span class="keyword">static</span> <a class="code" href="classllvm_1_1DenseMap.html">AvailableValsTy</a> &<a class="code" href="MachineSSAUpdater_8cpp.html#ac2ca1fcb12c48b7875765b4685b44a18">getAvailableVals</a>(<span class="keywordtype">void</span> *AV) {
+<a name="l00034"></a>00034   <span class="keywordflow">return</span> *<span class="keyword">static_cast<</span><a class="code" href="classllvm_1_1DenseMap.html">AvailableValsTy</a>*<span class="keyword">></span>(AV);
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036 
+<a name="l00037"></a><a class="code" href="classllvm_1_1MachineSSAUpdater.html#a933e93879fbecd3edd8b9bdca7bd5313">00037</a> <a class="code" href="classllvm_1_1MachineSSAUpdater.html#a933e93879fbecd3edd8b9bdca7bd5313">MachineSSAUpdater::MachineSSAUpdater</a>(<a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a> &MF,
+<a name="l00038"></a>00038                                      <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<MachineInstr*></a> *NewPHI)
+<a name="l00039"></a>00039   : AV(0), InsertedPHIs(NewPHI) {
+<a name="l00040"></a>00040   TII = MF.<a class="code" href="classllvm_1_1MachineFunction.html#a6745c3bfdfc5b0643b078b96df2db252">getTarget</a>().<a class="code" href="classllvm_1_1TargetMachine.html#ac13d0f6f2c915757013b101ef6e8afbc">getInstrInfo</a>();
+<a name="l00041"></a>00041   MRI = &MF.<a class="code" href="classllvm_1_1MachineFunction.html#ab4a6ca428289b667dd691a00e9f7e334">getRegInfo</a>();
+<a name="l00042"></a>00042 }
+<a name="l00043"></a>00043 
+<a name="l00044"></a><a class="code" href="classllvm_1_1MachineSSAUpdater.html#a39a4733b21460575878065857fe5fd11">00044</a> <a class="code" href="classllvm_1_1MachineSSAUpdater.html#a39a4733b21460575878065857fe5fd11">MachineSSAUpdater::~MachineSSAUpdater</a>() {
+<a name="l00045"></a>00045   <span class="keyword">delete</span> <span class="keyword">static_cast<</span><a class="code" href="classllvm_1_1DenseMap.html">AvailableValsTy</a>*<span class="keyword">></span>(AV);
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047 <span class="comment"></span>
+<a name="l00048"></a>00048 <span class="comment">/// Initialize - Reset this object to get ready for a new set of SSA</span>
+<a name="l00049"></a>00049 <span class="comment">/// updates.  ProtoValue is the value used to name PHI nodes.</span>
+<a name="l00050"></a><a class="code" href="classllvm_1_1MachineSSAUpdater.html#ac3c63992045884c214b20248c92973e4">00050</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineSSAUpdater.html#ac3c63992045884c214b20248c92973e4">MachineSSAUpdater::Initialize</a>(<span class="keywordtype">unsigned</span> V) {
+<a name="l00051"></a>00051   <span class="keywordflow">if</span> (AV == 0)
+<a name="l00052"></a>00052     AV = <span class="keyword">new</span> <a class="code" href="MachineSSAUpdater_8cpp.html#a717c6b25df2101007a37d6b4c5a75a59">AvailableValsTy</a>();
+<a name="l00053"></a>00053   <span class="keywordflow">else</span>
+<a name="l00054"></a>00054     <a class="code" href="MachineSSAUpdater_8cpp.html#ac2ca1fcb12c48b7875765b4685b44a18">getAvailableVals</a>(AV).<a class="code" href="classllvm_1_1DenseMapBase.html#a6467bd6bb128c8b69a478548fc17351c">clear</a>();
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056   VR = V;
+<a name="l00057"></a>00057   VRC = MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#ab3904d3601dbe52865d5f2e33a06d80d">getRegClass</a>(VR);
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 <span class="comment"></span>
+<a name="l00060"></a>00060 <span class="comment">/// HasValueForBlock - Return true if the MachineSSAUpdater already has a value for</span>
+<a name="l00061"></a>00061 <span class="comment">/// the specified block.</span>
+<a name="l00062"></a><a class="code" href="classllvm_1_1MachineSSAUpdater.html#a984bcfd887918cdeac63f734fb2cf936">00062</a> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MachineSSAUpdater.html#a984bcfd887918cdeac63f734fb2cf936">MachineSSAUpdater::HasValueForBlock</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *BB)<span class="keyword"> const </span>{
+<a name="l00063"></a>00063   <span class="keywordflow">return</span> <a class="code" href="MachineSSAUpdater_8cpp.html#ac2ca1fcb12c48b7875765b4685b44a18">getAvailableVals</a>(AV).<a class="code" href="classllvm_1_1DenseMapBase.html#a4efb46d4834f6f750ae0649ed89ce44c" title="count - Return true if the specified key is in the map.">count</a>(BB);
+<a name="l00064"></a>00064 }
+<a name="l00065"></a>00065 <span class="comment"></span>
+<a name="l00066"></a>00066 <span class="comment">/// AddAvailableValue - Indicate that a rewritten value is available in the</span>
+<a name="l00067"></a>00067 <span class="comment">/// specified block with the specified value.</span>
+<a name="l00068"></a><a class="code" href="classllvm_1_1MachineSSAUpdater.html#a1e358c07ad00b464a643cb19914c2146">00068</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineSSAUpdater.html#a1e358c07ad00b464a643cb19914c2146">MachineSSAUpdater::AddAvailableValue</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *BB, <span class="keywordtype">unsigned</span> V) {
+<a name="l00069"></a>00069   <a class="code" href="MachineSSAUpdater_8cpp.html#ac2ca1fcb12c48b7875765b4685b44a18">getAvailableVals</a>(AV)[BB] = V;
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 <span class="comment"></span>
+<a name="l00072"></a>00072 <span class="comment">/// GetValueAtEndOfBlock - Construct SSA form, materializing a value that is</span>
+<a name="l00073"></a>00073 <span class="comment">/// live at the end of the specified block.</span>
+<a name="l00074"></a><a class="code" href="classllvm_1_1MachineSSAUpdater.html#a927e4b066873c835716238360d6e2697">00074</a> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MachineSSAUpdater.html#a927e4b066873c835716238360d6e2697">MachineSSAUpdater::GetValueAtEndOfBlock</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *BB) {
+<a name="l00075"></a>00075   <span class="keywordflow">return</span> GetValueAtEndOfBlockInternal(BB);
+<a name="l00076"></a>00076 }
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078 <span class="keyword">static</span>
+<a name="l00079"></a><a class="code" href="MachineSSAUpdater_8cpp.html#a70134c8ca7402e68dd9513764e6caac7">00079</a> <span class="keywordtype">unsigned</span> <a class="code" href="MachineSSAUpdater_8cpp.html#a70134c8ca7402e68dd9513764e6caac7">LookForIdenticalPHI</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *BB,
+<a name="l00080"></a>00080           <a class="code" href="classllvm_1_1SmallVector.html">SmallVector</a><std::pair<MachineBasicBlock*, unsigned>, 8> &PredValues) {
+<a name="l00081"></a>00081   <span class="keywordflow">if</span> (BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#aa37d95a1d7bc824da0c596d8334c4ceb">empty</a>())
+<a name="l00082"></a>00082     <span class="keywordflow">return</span> 0;
+<a name="l00083"></a>00083 
+<a name="l00084"></a>00084   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab2d91e7bec944efcbc39d8e30644f111">begin</a>();
+<a name="l00085"></a>00085   <span class="keywordflow">if</span> (!I->isPHI())
+<a name="l00086"></a>00086     <span class="keywordflow">return</span> 0;
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088   <a class="code" href="classllvm_1_1DenseMap.html">AvailableValsTy</a> AVals;
+<a name="l00089"></a>00089   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = PredValues.size(); i != e; ++i)
+<a name="l00090"></a>00090     AVals[PredValues[i].first] = PredValues[i].second;
+<a name="l00091"></a>00091   <span class="keywordflow">while</span> (I != BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>() && I->isPHI()) {
+<a name="l00092"></a>00092     <span class="keywordtype">bool</span> Same = <span class="keyword">true</span>;
+<a name="l00093"></a>00093     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1, e = I->getNumOperands(); i != e; i += 2) {
+<a name="l00094"></a>00094       <span class="keywordtype">unsigned</span> SrcReg = I->getOperand(i).getReg();
+<a name="l00095"></a>00095       <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *SrcBB = I->getOperand(i+1).getMBB();
+<a name="l00096"></a>00096       <span class="keywordflow">if</span> (AVals[SrcBB] != SrcReg) {
+<a name="l00097"></a>00097         Same = <span class="keyword">false</span>;
+<a name="l00098"></a>00098         <span class="keywordflow">break</span>;
+<a name="l00099"></a>00099       }
+<a name="l00100"></a>00100     }
+<a name="l00101"></a>00101     <span class="keywordflow">if</span> (Same)
+<a name="l00102"></a>00102       <span class="keywordflow">return</span> I->getOperand(0).getReg();
+<a name="l00103"></a>00103     ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00104"></a>00104   }
+<a name="l00105"></a>00105   <span class="keywordflow">return</span> 0;
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107 <span class="comment"></span>
+<a name="l00108"></a>00108 <span class="comment">/// InsertNewDef - Insert an empty PHI or IMPLICIT_DEF instruction which define</span>
+<a name="l00109"></a>00109 <span class="comment">/// a value of the given register class at the start of the specified basic</span>
+<a name="l00110"></a>00110 <span class="comment">/// block. It returns the virtual register defined by the instruction.</span>
+<a name="l00111"></a>00111 <span class="comment"></span><span class="keyword">static</span>
+<a name="l00112"></a><a class="code" href="MachineSSAUpdater_8cpp.html#a674b65b4d2bc95ec012e1b7ab95ec527">00112</a> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="MachineSSAUpdater_8cpp.html#a674b65b4d2bc95ec012e1b7ab95ec527">InsertNewDef</a>(<span class="keywordtype">unsigned</span> Opcode,
+<a name="l00113"></a>00113                            <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *BB, <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="l00114"></a>00114                            <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterClass.html">TargetRegisterClass</a> *RC,
+<a name="l00115"></a>00115                            <a class="code" href="classllvm_1_1MachineRegisterInfo.html">MachineRegisterInfo</a> *MRI,
+<a name="l00116"></a>00116                            <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetInstrInfo.html">TargetInstrInfo</a> *TII) {
+<a name="l00117"></a>00117   <span class="keywordtype">unsigned</span> NewVR = MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#a76c3c7e3d4f11b4cfad37fc0449c9635">createVirtualRegister</a>(RC);
+<a name="l00118"></a>00118   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a980570dc1410d4ef53806f82028ca381">BuildMI</a>(*BB, I, <a class="code" href="classllvm_1_1DebugLoc.html">DebugLoc</a>(), TII-><a class="code" href="classllvm_1_1MCInstrInfo.html#ab16f5a81fccfe4b7f645ba5a74ffad02">get</a>(Opcode), NewVR);
+<a name="l00119"></a>00119 }
+<a name="l00120"></a>00120 <span class="comment"></span>
+<a name="l00121"></a>00121 <span class="comment">/// GetValueInMiddleOfBlock - Construct SSA form, materializing a value that</span>
+<a name="l00122"></a>00122 <span class="comment">/// is live in the middle of the specified block.</span>
+<a name="l00123"></a>00123 <span class="comment">///</span>
+<a name="l00124"></a>00124 <span class="comment">/// GetValueInMiddleOfBlock is the same as GetValueAtEndOfBlock except in one</span>
+<a name="l00125"></a>00125 <span class="comment">/// important case: if there is a definition of the rewritten value after the</span>
+<a name="l00126"></a>00126 <span class="comment">/// 'use' in BB.  Consider code like this:</span>
+<a name="l00127"></a>00127 <span class="comment">///</span>
+<a name="l00128"></a>00128 <span class="comment">///      X1 = ...</span>
+<a name="l00129"></a>00129 <span class="comment">///   SomeBB:</span>
+<a name="l00130"></a>00130 <span class="comment">///      use(X)</span>
+<a name="l00131"></a>00131 <span class="comment">///      X2 = ...</span>
+<a name="l00132"></a>00132 <span class="comment">///      br Cond, SomeBB, OutBB</span>
+<a name="l00133"></a>00133 <span class="comment">///</span>
+<a name="l00134"></a>00134 <span class="comment">/// In this case, there are two values (X1 and X2) added to the AvailableVals</span>
+<a name="l00135"></a>00135 <span class="comment">/// set by the client of the rewriter, and those values are both live out of</span>
+<a name="l00136"></a>00136 <span class="comment">/// their respective blocks.  However, the use of X happens in the *middle* of</span>
+<a name="l00137"></a>00137 <span class="comment">/// a block.  Because of this, we need to insert a new PHI node in SomeBB to</span>
+<a name="l00138"></a>00138 <span class="comment">/// merge the appropriate values, and this value isn't live out of the block.</span>
+<a name="l00139"></a>00139 <span class="comment">///</span>
+<a name="l00140"></a><a class="code" href="classllvm_1_1MachineSSAUpdater.html#a6006c15945c543589fd4ee8956d0452d">00140</a> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MachineSSAUpdater.html#a6006c15945c543589fd4ee8956d0452d">MachineSSAUpdater::GetValueInMiddleOfBlock</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *BB) {
+<a name="l00141"></a>00141   <span class="comment">// If there is no definition of the renamed variable in this block, just use</span>
+<a name="l00142"></a>00142   <span class="comment">// GetValueAtEndOfBlock to do our work.</span>
+<a name="l00143"></a>00143   <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1MachineSSAUpdater.html#a984bcfd887918cdeac63f734fb2cf936">HasValueForBlock</a>(BB))
+<a name="l00144"></a>00144     <span class="keywordflow">return</span> GetValueAtEndOfBlockInternal(BB);
+<a name="l00145"></a>00145 
+<a name="l00146"></a>00146   <span class="comment">// If there are no predecessors, just return undef.</span>
+<a name="l00147"></a>00147   <span class="keywordflow">if</span> (BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ae1612b06274368fe13b574cbd9c4f768">pred_empty</a>()) {
+<a name="l00148"></a>00148     <span class="comment">// Insert an implicit_def to represent an undef value.</span>
+<a name="l00149"></a>00149     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *NewDef = <a class="code" href="MachineSSAUpdater_8cpp.html#a674b65b4d2bc95ec012e1b7ab95ec527">InsertNewDef</a>(<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="l00150"></a>00150                                         BB, BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a7f0521fa2de44271fd4b909ea7351ef3">getFirstTerminator</a>(),
+<a name="l00151"></a>00151                                         VRC, MRI, TII);
+<a name="l00152"></a>00152     <span class="keywordflow">return</span> NewDef-><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="l00153"></a>00153   }
+<a name="l00154"></a>00154 
+<a name="l00155"></a>00155   <span class="comment">// Otherwise, we have the hard case.  Get the live-in values for each</span>
+<a name="l00156"></a>00156   <span class="comment">// predecessor.</span>
+<a name="l00157"></a>00157   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<std::pair<MachineBasicBlock*, unsigned></a>, 8> PredValues;
+<a name="l00158"></a>00158   <span class="keywordtype">unsigned</span> SingularValue = 0;
+<a name="l00159"></a>00159 
+<a name="l00160"></a>00160   <span class="keywordtype">bool</span> isFirstPred = <span class="keyword">true</span>;
+<a name="l00161"></a>00161   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineBasicBlock.html#a7e7a1a247b7725a24fe19a91f90782cc">MachineBasicBlock::pred_iterator</a> PI = BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab644fcf07a4c2708333cf66276282357">pred_begin</a>(),
+<a name="l00162"></a>00162          E = BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a0359a738e0412c5a7ea55d61175e0661">pred_end</a>(); PI != E; ++PI) {
+<a name="l00163"></a>00163     <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *PredBB = *PI;
+<a name="l00164"></a>00164     <span class="keywordtype">unsigned</span> PredVal = GetValueAtEndOfBlockInternal(PredBB);
+<a name="l00165"></a>00165     PredValues.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(std::make_pair(PredBB, PredVal));
+<a name="l00166"></a>00166 
+<a name="l00167"></a>00167     <span class="comment">// Compute SingularValue.</span>
+<a name="l00168"></a>00168     <span class="keywordflow">if</span> (isFirstPred) {
+<a name="l00169"></a>00169       SingularValue = PredVal;
+<a name="l00170"></a>00170       isFirstPred = <span class="keyword">false</span>;
+<a name="l00171"></a>00171     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (PredVal != SingularValue)
+<a name="l00172"></a>00172       SingularValue = 0;
+<a name="l00173"></a>00173   }
+<a name="l00174"></a>00174 
+<a name="l00175"></a>00175   <span class="comment">// Otherwise, if all the merged values are the same, just use it.</span>
+<a name="l00176"></a>00176   <span class="keywordflow">if</span> (SingularValue != 0)
+<a name="l00177"></a>00177     <span class="keywordflow">return</span> SingularValue;
+<a name="l00178"></a>00178 
+<a name="l00179"></a>00179   <span class="comment">// If an identical PHI is already in BB, just reuse it.</span>
+<a name="l00180"></a>00180   <span class="keywordtype">unsigned</span> DupPHI = <a class="code" href="MachineSSAUpdater_8cpp.html#a70134c8ca7402e68dd9513764e6caac7">LookForIdenticalPHI</a>(BB, PredValues);
+<a name="l00181"></a>00181   <span class="keywordflow">if</span> (DupPHI)
+<a name="l00182"></a>00182     <span class="keywordflow">return</span> DupPHI;
+<a name="l00183"></a>00183 
+<a name="l00184"></a>00184   <span class="comment">// Otherwise, we do need a PHI: insert one now.</span>
+<a name="l00185"></a>00185   <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> Loc = BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#aa37d95a1d7bc824da0c596d8334c4ceb">empty</a>() ? BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>() : BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab2d91e7bec944efcbc39d8e30644f111">begin</a>();
+<a name="l00186"></a>00186   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *InsertedPHI = <a class="code" href="MachineSSAUpdater_8cpp.html#a674b65b4d2bc95ec012e1b7ab95ec527">InsertNewDef</a>(<a class="code" href="namespacellvm_1_1TargetOpcode.html#aa2b3629c9319f86eee5a2c0e8c75ebfaae41f9ca68ba5e8b9613cea03652ebd72">TargetOpcode::PHI</a>, BB,
+<a name="l00187"></a>00187                                            Loc, VRC, MRI, TII);
+<a name="l00188"></a>00188 
+<a name="l00189"></a>00189   <span class="comment">// Fill in all the predecessors of the PHI.</span>
+<a name="l00190"></a>00190   <a class="code" href="classllvm_1_1MachineInstrBuilder.html">MachineInstrBuilder</a> MIB(InsertedPHI);
+<a name="l00191"></a>00191   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = PredValues.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>(); i != e; ++i)
+<a name="l00192"></a>00192     MIB.<a class="code" href="classllvm_1_1MachineInstrBuilder.html#a5125cce72b214df09ca8f93dcbbf4c3a">addReg</a>(PredValues[i].second).<a class="code" href="classllvm_1_1MachineInstrBuilder.html#aa1ec82398ade62414be35d8431c0a33b">addMBB</a>(PredValues[i].first);
+<a name="l00193"></a>00193 
+<a name="l00194"></a>00194   <span class="comment">// See if the PHI node can be merged to a single value.  This can happen in</span>
+<a name="l00195"></a>00195   <span class="comment">// loop cases when we get a PHI of itself and one other value.</span>
+<a name="l00196"></a>00196   <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span> ConstVal = InsertedPHI-><a class="code" href="classllvm_1_1MachineInstr.html#aab49e2ef5e193553d3e57a1ea0a9bd92">isConstantValuePHI</a>()) {
+<a name="l00197"></a>00197     InsertedPHI-><a class="code" href="classllvm_1_1MachineInstr.html#ac2421adbb9996e1b15f03a8abb6c70a8">eraseFromParent</a>();
+<a name="l00198"></a>00198     <span class="keywordflow">return</span> ConstVal;
+<a name="l00199"></a>00199   }
+<a name="l00200"></a>00200 
+<a name="l00201"></a>00201   <span class="comment">// If the client wants to know about all new instructions, tell it.</span>
+<a name="l00202"></a>00202   <span class="keywordflow">if</span> (InsertedPHIs) InsertedPHIs-><a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(InsertedPHI);
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204   <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 PHI: "</span> << *InsertedPHI << <span class="stringliteral">"\n"</span>);
+<a name="l00205"></a>00205   <span class="keywordflow">return</span> InsertedPHI-><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="l00206"></a>00206 }
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208 <span class="keyword">static</span>
+<a name="l00209"></a><a class="code" href="MachineSSAUpdater_8cpp.html#a90cc1769f1ba4001f314814d8dfd52c5">00209</a> <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *<a class="code" href="MachineSSAUpdater_8cpp.html#a90cc1769f1ba4001f314814d8dfd52c5">findCorrespondingPred</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>,
+<a name="l00210"></a>00210                                          <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> *U) {
+<a name="l00211"></a>00211   <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="l00212"></a>00212     <span class="keywordflow">if</span> (&MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i) == U)
+<a name="l00213"></a>00213       <span class="keywordflow">return</span> MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i+1).<a class="code" href="classllvm_1_1MachineOperand.html#a3350f7760c4eec67ea7d8f3063c3d748">getMBB</a>();
+<a name="l00214"></a>00214   }
+<a name="l00215"></a>00215 
+<a name="l00216"></a>00216   <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"MachineOperand::getParent() failure?"</span>);
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218 <span class="comment"></span>
+<a name="l00219"></a>00219 <span class="comment">/// RewriteUse - Rewrite a use of the symbolic value.  This handles PHI nodes,</span>
+<a name="l00220"></a>00220 <span class="comment">/// which use their value in the corresponding predecessor.</span>
+<a name="l00221"></a><a class="code" href="classllvm_1_1MachineSSAUpdater.html#a71a08885f7838dc5a544816a357e2ec7">00221</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MachineSSAUpdater.html#a71a08885f7838dc5a544816a357e2ec7">MachineSSAUpdater::RewriteUse</a>(<a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &U) {
+<a name="l00222"></a>00222   <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *UseMI = U.<a class="code" href="classllvm_1_1MachineOperand.html#acad8fe90886f92eabced0c2f9bd0e6f5">getParent</a>();
+<a name="l00223"></a>00223   <span class="keywordtype">unsigned</span> NewVR = 0;
+<a name="l00224"></a>00224   <span class="keywordflow">if</span> (UseMI-><a class="code" href="classllvm_1_1MachineInstr.html#ad70025709baab4e42d5d9d83023bc402">isPHI</a>()) {
+<a name="l00225"></a>00225     <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *SourceBB = <a class="code" href="MachineSSAUpdater_8cpp.html#a90cc1769f1ba4001f314814d8dfd52c5">findCorrespondingPred</a>(UseMI, &U);
+<a name="l00226"></a>00226     NewVR = GetValueAtEndOfBlockInternal(SourceBB);
+<a name="l00227"></a>00227   } <span class="keywordflow">else</span> {
+<a name="l00228"></a>00228     NewVR = <a class="code" href="classllvm_1_1MachineSSAUpdater.html#a6006c15945c543589fd4ee8956d0452d">GetValueInMiddleOfBlock</a>(UseMI-><a class="code" href="classllvm_1_1MachineInstr.html#aabad9b72f6d20d3462efc34020d39f73">getParent</a>());
+<a name="l00229"></a>00229   }
+<a name="l00230"></a>00230 
+<a name="l00231"></a>00231   U.<a class="code" href="classllvm_1_1MachineOperand.html#a624a062754a09d3787614d8627096705">setReg</a>(NewVR);
+<a name="l00232"></a>00232 }
+<a name="l00233"></a>00233 
+<a name="l00234"></a>00234 <span class="keywordtype">void</span> MachineSSAUpdater::ReplaceRegWith(<span class="keywordtype">unsigned</span> OldReg, <span class="keywordtype">unsigned</span> NewReg) {
+<a name="l00235"></a>00235   MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#a0eb653bae4f5a11b4b19a6247fd0021c">replaceRegWith</a>(OldReg, NewReg);
+<a name="l00236"></a>00236 
+<a name="l00237"></a>00237   <a class="code" href="classllvm_1_1DenseMap.html">AvailableValsTy</a> &AvailableVals = <a class="code" href="MachineSSAUpdater_8cpp.html#ac2ca1fcb12c48b7875765b4685b44a18">getAvailableVals</a>(AV);
+<a name="l00238"></a>00238   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1DenseMap.html">DenseMap<MachineBasicBlock*, unsigned>::iterator</a>
+<a name="l00239"></a>00239          <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = AvailableVals.<a class="code" href="classllvm_1_1DenseMapBase.html#a432d7e955f44b118b4261eae03d7a8af">begin</a>(), E = AvailableVals.<a class="code" href="classllvm_1_1DenseMapBase.html#a321e37d79af8b4287f8a1dcf9aff9c01">end</a>(); <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)
+<a name="l00240"></a>00240     <span class="keywordflow">if</span> (<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>->second == OldReg)
+<a name="l00241"></a>00241       <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>->second = NewReg;
+<a name="l00242"></a>00242 }
+<a name="l00243"></a>00243 <span class="comment"></span>
+<a name="l00244"></a>00244 <span class="comment">/// SSAUpdaterTraits<MachineSSAUpdater> - Traits for the SSAUpdaterImpl</span>
+<a name="l00245"></a>00245 <span class="comment">/// template, specialized for MachineSSAUpdater.</span>
+<a name="l00246"></a>00246 <span class="comment"></span><span class="keyword">namespace </span>llvm {
+<a name="l00247"></a>00247 <span class="keyword">template</span><>
+<a name="l00248"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html">00248</a> <span class="keyword">class </span>SSAUpdaterTraits<<a class="code" href="classllvm_1_1MachineSSAUpdater.html">MachineSSAUpdater</a>> {
+<a name="l00249"></a>00249 <span class="keyword">public</span>:
+<a name="l00250"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#afc8d1ac11fdfd81ae8c6eae76db06240">00250</a>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#afc8d1ac11fdfd81ae8c6eae76db06240">BlkT</a>;
+<a name="l00251"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#af6d13cdbe60e478e330103586e4e84b9">00251</a>   <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#af6d13cdbe60e478e330103586e4e84b9">ValT</a>;
+<a name="l00252"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a6b58ff7099977e5421a7d79288c9146c">00252</a>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a6b58ff7099977e5421a7d79288c9146c">PhiT</a>;
+<a name="l00253"></a>00253 
+<a name="l00254"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#aba109b8ff7acb96f012ca35818b5d981">00254</a>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1MachineBasicBlock.html#aefba5f2af370add1bc8aaceedf7878ef">MachineBasicBlock::succ_iterator</a> <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#aba109b8ff7acb96f012ca35818b5d981">BlkSucc_iterator</a>;
+<a name="l00255"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a74d9ee2bf0883c64efbd9ec44d267599">00255</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#aba109b8ff7acb96f012ca35818b5d981">BlkSucc_iterator</a> <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a74d9ee2bf0883c64efbd9ec44d267599">BlkSucc_begin</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">BlkT</a> *BB) { <span class="keywordflow">return</span> BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a6321b189ea8fd5058663f8a87d6c23e9">succ_begin</a>(); }
+<a name="l00256"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a784a8e97960198712e1da4efd0e05553">00256</a>   <span class="keyword">static</span> <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#aba109b8ff7acb96f012ca35818b5d981">BlkSucc_iterator</a> <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a784a8e97960198712e1da4efd0e05553">BlkSucc_end</a>(<a class="code" href="classllvm_1_1MachineBasicBlock.html">BlkT</a> *BB) { <span class="keywordflow">return</span> BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a3ddd708642d60c1661992ff8ba1b215d">succ_end</a>(); }
+<a name="l00257"></a>00257 <span class="comment"></span>
+<a name="l00258"></a>00258 <span class="comment">  /// Iterator for PHI operands.</span>
+<a name="l00259"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html">00259</a> <span class="comment"></span>  <span class="keyword">class </span>PHI_iterator {
+<a name="l00260"></a>00260   <span class="keyword">private</span>:
+<a name="l00261"></a>00261     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a>;
+<a name="l00262"></a>00262     <span class="keywordtype">unsigned</span> idx;
+<a name="l00263"></a>00263  
+<a name="l00264"></a>00264   <span class="keyword">public</span>:
+<a name="l00265"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html#af507e6d0e0f2d94379ff361ae247c965">00265</a>     <span class="keyword">explicit</span> PHI_iterator(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *P) <span class="comment">// begin iterator</span>
+<a name="l00266"></a>00266       : <a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a>(P), idx(1) {}
+<a name="l00267"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html#add1aa0ffa4c2cfe980461fb8a4a271c0">00267</a>     PHI_iterator(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *P, <span class="keywordtype">bool</span>) <span class="comment">// end iterator</span>
+<a name="l00268"></a>00268       : <a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a>(P), idx(<a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a>->getNumOperands()) {}
+<a name="l00269"></a>00269 
+<a name="l00270"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html#afd9e25eb2af5b70a3558d999feea03ef">00270</a>     PHI_iterator &<a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html#afd9e25eb2af5b70a3558d999feea03ef">operator++</a>() { idx += 2; <span class="keywordflow">return</span> *<span class="keyword">this</span>; } 
+<a name="l00271"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html#ace233fe109f5c0f1a18fe83bcc856270">00271</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html#ace233fe109f5c0f1a18fe83bcc856270">operator==</a>(<span class="keyword">const</span> PHI_iterator& x)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> idx == x.idx; }
+<a name="l00272"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html#aa4c2fa22ce4a91e37cd50489b37586fe">00272</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html#aa4c2fa22ce4a91e37cd50489b37586fe">operator!=</a>(<span class="keyword">const</span> PHI_iterator& x)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !<a class="code" href="namespacellvm.html#a162c90bc179a6359438d060722bee35f">operator==</a>(x); }
+<a name="l00273"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html#ad875da95e8c5004aba0738d23d7660d0">00273</a>     <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html#ad875da95e8c5004aba0738d23d7660d0">getIncomingValue</a>() { <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a>-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(idx).getReg(); }
+<a name="l00274"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html#a289d7fe38f96805a4e4a20643b6f4ed9">00274</a>     <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *<a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4_1_1PHI__iterator.html#a289d7fe38f96805a4e4a20643b6f4ed9">getIncomingBlock</a>() {
+<a name="l00275"></a>00275       <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a>-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(idx+1).getMBB();
+<a name="l00276"></a>00276     }
+<a name="l00277"></a>00277   };
+<a name="l00278"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a172ab6463bb885a8b2621054bb3330ae">00278</a>   <span class="keyword">static</span> <span class="keyword">inline</span> PHI_iterator <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a172ab6463bb885a8b2621054bb3330ae">PHI_begin</a>(<a class="code" href="classllvm_1_1MachineInstr.html">PhiT</a> *<a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a>) { <span class="keywordflow">return</span> PHI_iterator(PHI); }
+<a name="l00279"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#abaa16ef06748b0b306b83535b94cb8f8">00279</a>   <span class="keyword">static</span> <span class="keyword">inline</span> PHI_iterator <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#abaa16ef06748b0b306b83535b94cb8f8">PHI_end</a>(<a class="code" href="classllvm_1_1MachineInstr.html">PhiT</a> *<a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a>) {
+<a name="l00280"></a>00280     <span class="keywordflow">return</span> PHI_iterator(PHI, <span class="keyword">true</span>);
+<a name="l00281"></a>00281   }
+<a name="l00282"></a>00282 <span class="comment"></span>
+<a name="l00283"></a>00283 <span class="comment">  /// FindPredecessorBlocks - Put the predecessors of BB into the Preds</span>
+<a name="l00284"></a>00284 <span class="comment">  /// vector.</span>
+<a name="l00285"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a46f0b89ac3af7c7b99a001b5c8eadff4">00285</a> <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> FindPredecessorBlocks(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *BB,
+<a name="l00286"></a>00286                                     <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<MachineBasicBlock*></a> *Preds){
+<a name="l00287"></a>00287     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1MachineBasicBlock.html#a7e7a1a247b7725a24fe19a91f90782cc">MachineBasicBlock::pred_iterator</a> PI = BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab644fcf07a4c2708333cf66276282357">pred_begin</a>(),
+<a name="l00288"></a>00288            E = BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a0359a738e0412c5a7ea55d61175e0661">pred_end</a>(); PI != E; ++PI)
+<a name="l00289"></a>00289       Preds-><a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(*PI);
+<a name="l00290"></a>00290   }
+<a name="l00291"></a>00291 <span class="comment"></span>
+<a name="l00292"></a>00292 <span class="comment">  /// GetUndefVal - Create an IMPLICIT_DEF instruction with a new register.</span>
+<a name="l00293"></a>00293 <span class="comment">  /// Add it into the specified block and return the register.</span>
+<a name="l00294"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a1d990355fbbf2b9ba0ee050511f7d799">00294</a> <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">unsigned</span> GetUndefVal(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *BB,
+<a name="l00295"></a>00295                               <a class="code" href="classllvm_1_1MachineSSAUpdater.html">MachineSSAUpdater</a> *Updater) {
+<a name="l00296"></a>00296     <span class="comment">// Insert an implicit_def to represent an undef value.</span>
+<a name="l00297"></a>00297     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *NewDef = <a class="code" href="MachineSSAUpdater_8cpp.html#a674b65b4d2bc95ec012e1b7ab95ec527">InsertNewDef</a>(<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="l00298"></a>00298                                         BB, BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a7f0521fa2de44271fd4b909ea7351ef3">getFirstTerminator</a>(),
+<a name="l00299"></a>00299                                         Updater->VRC, Updater->MRI,
+<a name="l00300"></a>00300                                         Updater->TII);
+<a name="l00301"></a>00301     <span class="keywordflow">return</span> NewDef-><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="l00302"></a>00302   }
+<a name="l00303"></a>00303 <span class="comment"></span>
+<a name="l00304"></a>00304 <span class="comment">  /// CreateEmptyPHI - Create a PHI instruction that defines a new register.</span>
+<a name="l00305"></a>00305 <span class="comment">  /// Add it into the specified block and return the register.</span>
+<a name="l00306"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#aaf34a16034c05f49bff4e8bfff95a8de">00306</a> <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">unsigned</span> CreateEmptyPHI(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *BB, <span class="keywordtype">unsigned</span> NumPreds,
+<a name="l00307"></a>00307                                  <a class="code" href="classllvm_1_1MachineSSAUpdater.html">MachineSSAUpdater</a> *Updater) {
+<a name="l00308"></a>00308     <a class="code" href="classllvm_1_1MachineBasicBlock.html#ac51be7ff80fe8d6ae5e8c0acb194908a">MachineBasicBlock::iterator</a> Loc = BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#aa37d95a1d7bc824da0c596d8334c4ceb">empty</a>() ? BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>() : BB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab2d91e7bec944efcbc39d8e30644f111">begin</a>();
+<a name="l00309"></a>00309     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a> = <a class="code" href="MachineSSAUpdater_8cpp.html#a674b65b4d2bc95ec012e1b7ab95ec527">InsertNewDef</a>(<a class="code" href="namespacellvm_1_1TargetOpcode.html#aa2b3629c9319f86eee5a2c0e8c75ebfaae41f9ca68ba5e8b9613cea03652ebd72">TargetOpcode::PHI</a>, BB, Loc,
+<a name="l00310"></a>00310                                      Updater->VRC, Updater->MRI,
+<a name="l00311"></a>00311                                      Updater->TII);
+<a name="l00312"></a>00312     <span class="keywordflow">return</span> PHI-><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="l00313"></a>00313   }
+<a name="l00314"></a>00314 <span class="comment"></span>
+<a name="l00315"></a>00315 <span class="comment">  /// AddPHIOperand - Add the specified value as an operand of the PHI for</span>
+<a name="l00316"></a>00316 <span class="comment">  /// the specified predecessor block.</span>
+<a name="l00317"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a877139b0a969b14d6ee4ddc3db0d186f">00317</a> <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> AddPHIOperand(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a>, <span class="keywordtype">unsigned</span> Val,
+<a name="l00318"></a>00318                             <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *Pred) {
+<a name="l00319"></a>00319     PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html#a18124eff2d5106b9bf041f948a1912cc">MachineOperand::CreateReg</a>(Val, <span class="keyword">false</span>));
+<a name="l00320"></a>00320     PHI-><a class="code" href="classllvm_1_1MachineInstr.html#aabf3514a1ace5d142cc33b48f3eb3f63">addOperand</a>(<a class="code" href="classllvm_1_1MachineOperand.html#afff7622ffefd3560aafe2025d245d4c5">MachineOperand::CreateMBB</a>(Pred));
+<a name="l00321"></a>00321   }
+<a name="l00322"></a>00322 <span class="comment"></span>
+<a name="l00323"></a>00323 <span class="comment">  /// InstrIsPHI - Check if an instruction is a PHI.</span>
+<a name="l00324"></a>00324 <span class="comment">  ///</span>
+<a name="l00325"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a2d73fc0a2623f9f0ef738b547ecabaa1">00325</a> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a2d73fc0a2623f9f0ef738b547ecabaa1">InstrIsPHI</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00326"></a>00326     <span class="keywordflow">if</span> (I && I-><a class="code" href="classllvm_1_1MachineInstr.html#ad70025709baab4e42d5d9d83023bc402">isPHI</a>())
+<a name="l00327"></a>00327       <span class="keywordflow">return</span> I;
+<a name="l00328"></a>00328     <span class="keywordflow">return</span> 0;
+<a name="l00329"></a>00329   }
+<a name="l00330"></a>00330 <span class="comment"></span>
+<a name="l00331"></a>00331 <span class="comment">  /// ValueIsPHI - Check if the instruction that defines the specified register</span>
+<a name="l00332"></a>00332 <span class="comment">  /// is a PHI instruction.</span>
+<a name="l00333"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#ad4eba9fccdeb9b4cbaaa6a3163a2d0b6">00333</a> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#ad4eba9fccdeb9b4cbaaa6a3163a2d0b6">ValueIsPHI</a>(<span class="keywordtype">unsigned</span> Val, <a class="code" href="classllvm_1_1MachineSSAUpdater.html">MachineSSAUpdater</a> *Updater) {
+<a name="l00334"></a>00334     <span class="keywordflow">return</span> InstrIsPHI(Updater->MRI-><a class="code" href="classllvm_1_1MachineRegisterInfo.html#abf69f92f1977440a4e443a26baeb73c0">getVRegDef</a>(Val));
+<a name="l00335"></a>00335   }
+<a name="l00336"></a>00336 <span class="comment"></span>
+<a name="l00337"></a>00337 <span class="comment">  /// ValueIsNewPHI - Like ValueIsPHI but also check if the PHI has no source</span>
+<a name="l00338"></a>00338 <span class="comment">  /// operands, i.e., it was just added.</span>
+<a name="l00339"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a4d9be365d5ee4f44273bbb2cf535d4ef">00339</a> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#a4d9be365d5ee4f44273bbb2cf535d4ef">ValueIsNewPHI</a>(<span class="keywordtype">unsigned</span> Val, <a class="code" href="classllvm_1_1MachineSSAUpdater.html">MachineSSAUpdater</a> *Updater) {
+<a name="l00340"></a>00340     <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a> = ValueIsPHI(Val, Updater);
+<a name="l00341"></a>00341     <span class="keywordflow">if</span> (PHI && PHI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>() <= 1)
+<a name="l00342"></a>00342       <span class="keywordflow">return</span> PHI;
+<a name="l00343"></a>00343     <span class="keywordflow">return</span> 0;
+<a name="l00344"></a>00344   }
+<a name="l00345"></a>00345 <span class="comment"></span>
+<a name="l00346"></a>00346 <span class="comment">  /// GetPHIValue - For the specified PHI instruction, return the register</span>
+<a name="l00347"></a>00347 <span class="comment">  /// that it defines.</span>
+<a name="l00348"></a><a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#af2224cf411029ae4d67b5f82c6479cb2">00348</a> <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1SSAUpdaterTraits_3_01MachineSSAUpdater_01_4.html#af2224cf411029ae4d67b5f82c6479cb2">GetPHIValue</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">PHI</a>) {
+<a name="l00349"></a>00349     <span class="keywordflow">return</span> PHI-><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="l00350"></a>00350   }
+<a name="l00351"></a>00351 };
+<a name="l00352"></a>00352 
+<a name="l00353"></a>00353 } <span class="comment">// End llvm namespace</span>
+<a name="l00354"></a>00354 <span class="comment"></span>
+<a name="l00355"></a>00355 <span class="comment">/// GetValueAtEndOfBlockInternal - Check to see if AvailableVals has an entry</span>
+<a name="l00356"></a>00356 <span class="comment">/// for the specified BB and if so, return it.  If not, construct SSA form by</span>
+<a name="l00357"></a>00357 <span class="comment">/// first calculating the required placement of PHIs and then inserting new</span>
+<a name="l00358"></a>00358 <span class="comment">/// PHIs where needed.</span>
+<a name="l00359"></a>00359 <span class="comment"></span><span class="keywordtype">unsigned</span> MachineSSAUpdater::GetValueAtEndOfBlockInternal(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *BB){
+<a name="l00360"></a>00360   <a class="code" href="classllvm_1_1DenseMap.html">AvailableValsTy</a> &AvailableVals = <a class="code" href="MachineSSAUpdater_8cpp.html#ac2ca1fcb12c48b7875765b4685b44a18">getAvailableVals</a>(AV);
+<a name="l00361"></a>00361   <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span> V = AvailableVals[BB])
+<a name="l00362"></a>00362     <span class="keywordflow">return</span> V;
+<a name="l00363"></a>00363 
+<a name="l00364"></a>00364   <a class="code" href="classllvm_1_1SSAUpdaterImpl.html">SSAUpdaterImpl<MachineSSAUpdater></a> Impl(<span class="keyword">this</span>, &AvailableVals, InsertedPHIs);
+<a name="l00365"></a>00365   <span class="keywordflow">return</span> Impl.GetValue(BB);
+<a name="l00366"></a>00366 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:41 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineSSAUpdater_8h__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineSSAUpdater_8h__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MachineSSAUpdater_8h__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineScheduler_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineScheduler_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineScheduler_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineScheduler_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,191 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="MachineScheduler.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/CodeGen/LiveIntervalAnalysis.h",height=0.2,width=0.4,color="black",URL="$LiveIntervalAnalysis_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Target/TargetRegisterInfo.h",height=0.2,width=0.4,color="red",URL="$TargetRegisterInfo_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/MC/MCRegisterInfo.h",height=0.2,width=0.4,color="black",URL="$MCRegisterInfo_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node5 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="red",URL="$DataTypes_8h.html"];
+  Node7 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8h.html"];
+  Node15 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="red",URL="$StringRef_8h.html"];
+  Node16 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node16 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/CodeGen/MachineBasicBlock.h",height=0.2,width=0.4,color="red",URL="$MachineBasicBlock_8h.html"];
+  Node18 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="black",URL="$ArrayRef_8h.html"];
+  Node19 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="red",URL="$SmallVector_8h.html"];
+  Node20 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/CodeGen/MachineFunctionPass.h",height=0.2,width=0.4,color="black",URL="$MachineFunctionPass_8h.html"];
+  Node22 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/Pass.h",height=0.2,width=0.4,color="red",URL="$Pass_8h.html"];
+  Node23 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/CodeGen/LiveInterval.h",height=0.2,width=0.4,color="red",URL="$LiveInterval_8h.html"];
+  Node24 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/Support/Allocator.h",height=0.2,width=0.4,color="red",URL="$Allocator_8h.html"];
+  Node25 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/CodeGen/SlotIndexes.h",height=0.2,width=0.4,color="red",URL="$SlotIndexes_8h.html"];
+  Node26 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/ADT/BitVector.h",height=0.2,width=0.4,color="red",URL="$BitVector_8h.html"];
+  Node27 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/ADT/IndexedMap.h",height=0.2,width=0.4,color="red",URL="$IndexedMap_8h.html"];
+  Node28 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="red",URL="$SmallPtrSet_8h.html"];
+  Node29 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="cmath",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/CodeGen/MachineScheduler.h",height=0.2,width=0.4,color="black",URL="$MachineScheduler_8h.html"];
+  Node31 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/CodeGen/MachinePassRegistry.h",height=0.2,width=0.4,color="black",URL="$MachinePassRegistry_8h.html"];
+  Node32 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/CodeGen/Passes.h",height=0.2,width=0.4,color="black",URL="$CodeGen_2Passes_8h.html"];
+  Node33 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Target/TargetMachine.h",height=0.2,width=0.4,color="red",URL="$Target_2TargetMachine_8h.html"];
+  Node34 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/Support/CommandLine.h",height=0.2,width=0.4,color="black",URL="$CommandLine_8h.html"];
+  Node35 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="black",URL="$Twine_8h.html"];
+  Node36 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="cstdarg",height=0.2,width=0.4,color="grey75"];
+  Node35 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/CodeGen/RegisterPressure.h",height=0.2,width=0.4,color="red",URL="$RegisterPressure_8h.html"];
+  Node38 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/CodeGen/ScheduleDAGInstrs.h",height=0.2,width=0.4,color="red",URL="$ScheduleDAGInstrs_8h.html"];
+  Node39 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/Target/TargetInstrInfo.h",height=0.2,width=0.4,color="red",URL="$TargetInstrInfo_8h.html"];
+  Node1 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/CodeGen/RegisterClassInfo.h",height=0.2,width=0.4,color="black",URL="$RegisterClassInfo_8h.html"];
+  Node41 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> 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 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/CodeGen/ScheduleDAGILP.h",height=0.2,width=0.4,color="black",URL="$ScheduleDAGILP_8h.html"];
+  Node43 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/CodeGen/ScheduleHazardRecognizer.h",height=0.2,width=0.4,color="black",URL="$ScheduleHazardRecognizer_8h.html"];
+  Node1 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/Analysis/AliasAnalysis.h",height=0.2,width=0.4,color="black",URL="$AliasAnalysis_8h.html"];
+  Node45 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/Support/CallSite.h",height=0.2,width=0.4,color="red",URL="$CallSite_8h.html"];
+  Node45 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Support/Debug.h",height=0.2,width=0.4,color="black",URL="$Debug_8h.html"];
+  Node1 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="black",URL="$raw__ostream_8h.html"];
+  Node48 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/ADT/PriorityQueue.h",height=0.2,width=0.4,color="black",URL="$PriorityQueue_8h.html"];
+  Node49 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="queue",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineSink_8cpp__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineSink_8cpp__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MachineSink_8cpp__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineTraceMetrics_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineTraceMetrics_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineTraceMetrics_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineTraceMetrics_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,176 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="MachineTraceMetrics.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="MachineTraceMetrics.h",height=0.2,width=0.4,color="black",URL="$MachineTraceMetrics_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="black",URL="$ArrayRef_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="red",URL="$SmallVector_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="cassert",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node8 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/CodeGen/MachineFunctionPass.h",height=0.2,width=0.4,color="black",URL="$MachineFunctionPass_8h.html"];
+  Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/Pass.h",height=0.2,width=0.4,color="red",URL="$Pass_8h.html"];
+  Node11 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="llvm/CodeGen/TargetSchedule.h",height=0.2,width=0.4,color="red",URL="$TargetSchedule_8h.html"];
+  Node13 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/Target/TargetSubtargetInfo.h",height=0.2,width=0.4,color="black",URL="$TargetSubtargetInfo_8h.html"];
+  Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/MC/MCSubtargetInfo.h",height=0.2,width=0.4,color="black",URL="$MCSubtargetInfo_8h.html"];
+  Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="llvm/MC/SubtargetFeature.h",height=0.2,width=0.4,color="red",URL="$SubtargetFeature_8h.html"];
+  Node16 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="red",URL="$DataTypes_8h.html"];
+  Node15 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/MC/MCInstrItineraries.h",height=0.2,width=0.4,color="red",URL="$MCInstrItineraries_8h.html"];
+  Node15 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/Support/CodeGen.h",height=0.2,width=0.4,color="black",URL="$CodeGen_8h.html"];
+  Node13 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/CodeGen/MachineBasicBlock.h",height=0.2,width=0.4,color="black",URL="$MachineBasicBlock_8h.html"];
+  Node20 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/CodeGen/MachineInstr.h",height=0.2,width=0.4,color="red",URL="$MachineInstr_8h.html"];
+  Node21 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/ADT/STLExtras.h",height=0.2,width=0.4,color="red",URL="$STLExtras_8h.html"];
+  Node22 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="functional",height=0.2,width=0.4,color="grey75"];
+  Node21 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="red",URL="$StringRef_8h.html"];
+  Node24 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/ADT/GraphTraits.h",height=0.2,width=0.4,color="black",URL="$GraphTraits_8h.html"];
+  Node20 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/CodeGen/MachineBranchProbabilityInfo.h",height=0.2,width=0.4,color="black",URL="$MachineBranchProbabilityInfo_8h.html"];
+  Node26 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/Support/BranchProbability.h",height=0.2,width=0.4,color="black",URL="$BranchProbability_8h.html"];
+  Node27 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/CodeGen/MachineLoopInfo.h",height=0.2,width=0.4,color="black",URL="$MachineLoopInfo_8h.html"];
+  Node28 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Analysis/LoopInfo.h",height=0.2,width=0.4,color="red",URL="$LoopInfo_8h.html"];
+  Node29 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="black",URL="$raw__ostream_8h.html"];
+  Node30 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/CodeGen/MachineRegisterInfo.h",height=0.2,width=0.4,color="black",URL="$MachineRegisterInfo_8h.html"];
+  Node31 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/Target/TargetRegisterInfo.h",height=0.2,width=0.4,color="black",URL="$TargetRegisterInfo_8h.html"];
+  Node32 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/MC/MCRegisterInfo.h",height=0.2,width=0.4,color="red",URL="$MCRegisterInfo_8h.html"];
+  Node33 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/CodeGen/ValueTypes.h",height=0.2,width=0.4,color="red",URL="$ValueTypes_8h.html"];
+  Node34 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node32 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/CodeGen/MachineInstrBundle.h",height=0.2,width=0.4,color="black",URL="$MachineInstrBundle_8h.html"];
+  Node36 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/ADT/BitVector.h",height=0.2,width=0.4,color="red",URL="$BitVector_8h.html"];
+  Node37 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/ADT/IndexedMap.h",height=0.2,width=0.4,color="black",URL="$IndexedMap_8h.html"];
+  Node38 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/CodeGen/Passes.h",height=0.2,width=0.4,color="black",URL="$CodeGen_2Passes_8h.html"];
+  Node39 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/Target/TargetMachine.h",height=0.2,width=0.4,color="red",URL="$Target_2TargetMachine_8h.html"];
+  Node40 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/Target/TargetInstrInfo.h",height=0.2,width=0.4,color="black",URL="$TargetInstrInfo_8h.html"];
+  Node41 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/ADT/SmallSet.h",height=0.2,width=0.4,color="black",URL="$SmallSet_8h.html"];
+  Node42 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="red",URL="$SmallPtrSet_8h.html"];
+  Node43 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="set",height=0.2,width=0.4,color="grey75"];
+  Node41 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/MC/MCInstrInfo.h",height=0.2,width=0.4,color="red",URL="$MCInstrInfo_8h.html"];
+  Node45 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/CodeGen/DFAPacketizer.h",height=0.2,width=0.4,color="red",URL="$DFAPacketizer_8h.html"];
+  Node46 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/CodeGen/MachineFunction.h",height=0.2,width=0.4,color="red",URL="$MachineFunction_8h.html"];
+  Node47 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node14 [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 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/ADT/PostOrderIterator.h",height=0.2,width=0.4,color="black",URL="$PostOrderIterator_8h.html"];
+  Node49 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/ADT/SparseSet.h",height=0.2,width=0.4,color="red",URL="$SparseSet_8h.html"];
+  Node50 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineTraceMetrics_8h__dep__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineTraceMetrics_8h__dep__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MachineTraceMetrics_8h__dep__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineTraceMetrics_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineTraceMetrics_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineTraceMetrics_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineTraceMetrics_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,33 @@
+<map id="G" name="G">
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="1119,471,1263,497"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="548,548,708,575"/>
+<area shape="rect" href="$MachineFunctionPass_8h.html" title="llvm/CodeGen/MachineFunctionPass.h" alt="" coords="1153,84,1415,111"/>
+<area shape="rect" href="$TargetSchedule_8h.html" title="llvm/CodeGen/TargetSchedule.h" alt="" coords="1855,84,2079,111"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="1111,548,1279,575"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="716,625,879,652"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="1067,703,1240,729"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="227,703,413,729"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="2363,780,2547,807"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="401,625,591,652"/>
+<area shape="rect" href="$PointerLikeTypeTraits_8h.html" title="llvm/Support/PointerLikeTypeTraits.h" alt="" coords="677,703,925,729"/>
+<area shape="rect" href="$DenseMapInfo_8h.html" title="llvm/ADT/DenseMapInfo.h" alt="" coords="193,625,377,652"/>
+<area shape="rect" href="$SwapByteOrder_8h.html" title="llvm/Support/SwapByteOrder.h" alt="" coords="437,703,653,729"/>
+<area shape="rect" href="$Pass_8h.html" title="llvm/Pass.h" alt="" coords="1339,393,1429,420"/>
+<area shape="rect" href="$PassSupport_8h.html" title="llvm/PassSupport.h" alt="" coords="1556,471,1700,497"/>
+<area shape="rect" href="$PassAnalysisSupport_8h.html" title="llvm/PassAnalysisSupport.h" alt="" coords="1287,471,1481,497"/>
+<area shape="rect" href="$PassRegistry_8h.html" title="llvm/PassRegistry.h" alt="" coords="1439,548,1577,575"/>
+<area shape="rect" href="$InitializePasses_8h.html" title="llvm/InitializePasses.h" alt="" coords="1601,548,1759,575"/>
+<area shape="rect" href="$Atomic_8h.html" title="llvm/Support/Atomic.h" alt="" coords="2356,548,2519,575"/>
+<area shape="rect" href="$Valgrind_8h.html" title="llvm/Support/Valgrind.h" alt="" coords="1783,548,1951,575"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="2132,625,2281,652"/>
+<area shape="rect" href="$llvm-config_8h.html" title="llvm/Config/llvm-config.h" alt="" coords="1735,625,1911,652"/>
+<area shape="rect" href="$TargetSubtargetInfo_8h.html" title="llvm/Target/TargetSubtargetInfo.h" alt="" coords="2004,161,2236,188"/>
+<area shape="rect" href="$MCInstrItineraries_8h.html" title="llvm/MC/MCInstrItineraries.h" alt="" coords="2012,316,2209,343"/>
+<area shape="rect" href="$MCSchedule_8h.html" title="llvm/MC/MCSchedule.h" alt="" coords="2575,393,2740,420"/>
+<area shape="rect" href="$MCSubtargetInfo_8h.html" title="llvm/MC/MCSubtargetInfo.h" alt="" coords="2013,239,2208,265"/>
+<area shape="rect" href="$CodeGen_8h.html" title="llvm/Support/CodeGen.h" alt="" coords="2232,239,2408,265"/>
+<area shape="rect" href="$SubtargetFeature_8h.html" title="llvm/MC/SubtargetFeature.h" alt="" coords="1788,316,1988,343"/>
+<area shape="rect" href="$Triple_8h.html" title="llvm/ADT/Triple.h" alt="" coords="1825,393,1951,420"/>
+<area shape="rect" href="$Twine_8h.html" title="llvm/ADT/Twine.h" alt="" coords="2231,471,2356,497"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="2025,548,2231,575"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MachineVerifier_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MachineVerifier_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MachineVerifier_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MachineVerifier_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,181 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="MachineVerifier.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/BasicBlock.h",height=0.2,width=0.4,color="black",URL="$BasicBlock_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Instruction.h",height=0.2,width=0.4,color="red",URL="$Instruction_8h.html"];
+  Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/SymbolTableListTraits.h",height=0.2,width=0.4,color="black",URL="$SymbolTableListTraits_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/ADT/ilist.h",height=0.2,width=0.4,color="red",URL="$ilist_8h.html"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="red",URL="$Twine_8h.html"];
+  Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="red",URL="$StringRef_8h.html"];
+  Node7 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="red",URL="$DataTypes_8h.html"];
+  Node7 -> 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 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/InlineAsm.h",height=0.2,width=0.4,color="black",URL="$InlineAsm_8h.html"];
+  Node11 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="llvm/Value.h",height=0.2,width=0.4,color="red",URL="$Value_8h.html"];
+  Node11 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/Instructions.h",height=0.2,width=0.4,color="black",URL="$Instructions_8h.html"];
+  Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/InstrTypes.h",height=0.2,width=0.4,color="red",URL="$InstrTypes_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/DerivedTypes.h",height=0.2,width=0.4,color="red",URL="$DerivedTypes_8h.html"];
+  Node16 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/Attributes.h",height=0.2,width=0.4,color="red",URL="$Attributes_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="black",URL="$ArrayRef_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="red",URL="$SmallVector_8h.html"];
+  Node19 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node14 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/Support/IntegersSubset.h",height=0.2,width=0.4,color="red",URL="$IntegersSubset_8h.html"];
+  Node21 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/Support/IntegersSubsetMapping.h",height=0.2,width=0.4,color="red",URL="$IntegersSubsetMapping_8h.html"];
+  Node22 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/CodeGen/LiveIntervalAnalysis.h",height=0.2,width=0.4,color="black",URL="$LiveIntervalAnalysis_8h.html"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/Target/TargetRegisterInfo.h",height=0.2,width=0.4,color="red",URL="$TargetRegisterInfo_8h.html"];
+  Node24 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/CodeGen/MachineBasicBlock.h",height=0.2,width=0.4,color="red",URL="$MachineBasicBlock_8h.html"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/CodeGen/MachineInstr.h",height=0.2,width=0.4,color="red",URL="$MachineInstr_8h.html"];
+  Node26 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/CodeGen/MachineFunctionPass.h",height=0.2,width=0.4,color="red",URL="$MachineFunctionPass_8h.html"];
+  Node23 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/CodeGen/LiveInterval.h",height=0.2,width=0.4,color="red",URL="$LiveInterval_8h.html"];
+  Node28 -> 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 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/CodeGen/SlotIndexes.h",height=0.2,width=0.4,color="red",URL="$SlotIndexes_8h.html"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/CodeGen/MachineInstrBundle.h",height=0.2,width=0.4,color="black",URL="$MachineInstrBundle_8h.html"];
+  Node31 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node32 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/ADT/BitVector.h",height=0.2,width=0.4,color="red",URL="$BitVector_8h.html"];
+  Node33 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/ADT/IndexedMap.h",height=0.2,width=0.4,color="red",URL="$IndexedMap_8h.html"];
+  Node34 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="red",URL="$SmallPtrSet_8h.html"];
+  Node35 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="cmath",height=0.2,width=0.4,color="grey75"];
+  Node23 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/CodeGen/LiveVariables.h",height=0.2,width=0.4,color="red",URL="$LiveVariables_8h.html"];
+  Node37 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/ADT/SmallSet.h",height=0.2,width=0.4,color="red",URL="$SmallSet_8h.html"];
+  Node38 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/CodeGen/LiveStackAnalysis.h",height=0.2,width=0.4,color="red",URL="$LiveStackAnalysis_8h.html"];
+  Node39 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/CodeGen/MachineFrameInfo.h",height=0.2,width=0.4,color="red",URL="$MachineFrameInfo_8h.html"];
+  Node40 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/CodeGen/MachineMemOperand.h",height=0.2,width=0.4,color="black",URL="$MachineMemOperand_8h.html"];
+  Node41 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/CodeGen/MachineRegisterInfo.h",height=0.2,width=0.4,color="black",URL="$MachineRegisterInfo_8h.html"];
+  Node42 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/CodeGen/Passes.h",height=0.2,width=0.4,color="red",URL="$CodeGen_2Passes_8h.html"];
+  Node43 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/Target/TargetMachine.h",height=0.2,width=0.4,color="red",URL="$Target_2TargetMachine_8h.html"];
+  Node44 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/MC/MCAsmInfo.h",height=0.2,width=0.4,color="red",URL="$MCAsmInfo_8h.html"];
+  Node45 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/Target/TargetInstrInfo.h",height=0.2,width=0.4,color="red",URL="$TargetInstrInfo_8h.html"];
+  Node46 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/ADT/DenseSet.h",height=0.2,width=0.4,color="black",URL="$DenseSet_8h.html"];
+  Node47 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/ADT/SetOperations.h",height=0.2,width=0.4,color="black",URL="$SetOperations_8h.html"];
+  Node1 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/Support/Debug.h",height=0.2,width=0.4,color="black",URL="$Debug_8h.html"];
+  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 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Main_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Main_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Main_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Main_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="Main.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="TGParser.h",height=0.2,width=0.4,color="black",URL="$TGParser_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/TableGen/Record.h",height=0.2,width=0.4,color="black",URL="$Record_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="black",URL="$ArrayRef_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="black",URL="$SmallVector_8h.html"];
+  Node5 -> 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 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node6 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node10 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="memory",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/ADT/FoldingSet.h",height=0.2,width=0.4,color="black",URL="$FoldingSet_8h.html"];
+  Node23 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="black",URL="$StringRef_8h.html"];
+  Node24 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="limits",height=0.2,width=0.4,color="grey75"];
+  Node24 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node24 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/Support/Allocator.h",height=0.2,width=0.4,color="black",URL="$Allocator_8h.html"];
+  Node27 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="black",URL="$MathExtras_8h.html"];
+  Node28 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Support/SwapByteOrder.h",height=0.2,width=0.4,color="black",URL="$SwapByteOrder_8h.html"];
+  Node29 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/Support/Casting.h",height=0.2,width=0.4,color="black",URL="$Casting_8h.html"];
+  Node30 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Support/SourceMgr.h",height=0.2,width=0.4,color="black",URL="$SourceMgr_8h.html"];
+  Node31 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/Support/SMLoc.h",height=0.2,width=0.4,color="black",URL="$SMLoc_8h.html"];
+  Node32 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8h.html"];
+  Node33 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="black",URL="$raw__ostream_8h.html"];
+  Node34 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="map",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="TGLexer.h",height=0.2,width=0.4,color="black",URL="$TGLexer_8h.html"];
+  Node36 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/TableGen/Error.h",height=0.2,width=0.4,color="black",URL="$TableGen_2Error_8h.html"];
+  Node37 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="black",URL="$Twine_8h.html"];
+  Node38 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/ADT/OwningPtr.h",height=0.2,width=0.4,color="black",URL="$OwningPtr_8h.html"];
+  Node39 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/Support/CommandLine.h",height=0.2,width=0.4,color="black",URL="$CommandLine_8h.html"];
+  Node40 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node40 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="cstdarg",height=0.2,width=0.4,color="grey75"];
+  Node40 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/Support/MemoryBuffer.h",height=0.2,width=0.4,color="black",URL="$MemoryBuffer_8h.html"];
+  Node43 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/Support/ToolOutputFile.h",height=0.2,width=0.4,color="black",URL="$ToolOutputFile_8h.html"];
+  Node44 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/Support/system_error.h",height=0.2,width=0.4,color="black",URL="$system__error_8h.html"];
+  Node45 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/Config/llvm-config.h",height=0.2,width=0.4,color="black",URL="$llvm-config_8h.html"];
+  Node45 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="cerrno",height=0.2,width=0.4,color="grey75"];
+  Node45 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/TableGen/Main.h",height=0.2,width=0.4,color="black",URL="$Main_8h.html"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="cstdio",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Main_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Main_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Main_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Main_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,81 @@
+<!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: Main.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_c27e2935c3c48ccfc237774921d0ba31.html">TableGen</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> |
+<a href="#typedef-members">Typedefs</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Main.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="Main_8h__dep__incl.png" border="0" usemap="#Main_8hdep" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="Main_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="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#ac6fde212b4b6fb8730c3f7d759683887">llvm::TableGenMainFn</a> (raw_ostream &OS, RecordKeeper &Records)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Perform the action using Records, and write output to OS.  <a href="#ac6fde212b4b6fb8730c3f7d759683887"></a><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">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a9e3c6af3504d40da9830f92243bafc46">llvm::TableGenMain</a> (<a class="el" href="classchar.html">char</a> *argv0, TableGenMainFn *MainFn)</td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:31 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/ManagedStatic_8cpp__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ManagedStatic_8cpp__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/ManagedStatic_8cpp__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/ManagedStatic_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ManagedStatic_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ManagedStatic_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ManagedStatic_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="ManagedStatic.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/Atomic.h",height=0.2,width=0.4,color="black",URL="$Atomic_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/Support/Threading.h",height=0.2,width=0.4,color="black",URL="$Threading_8h.html"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/Support/Valgrind.h",height=0.2,width=0.4,color="black",URL="$Valgrind_8h.html"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node9 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/Config/llvm-config.h",height=0.2,width=0.4,color="black",URL="$llvm-config_8h.html"];
+  Node9 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="stddef.h",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/ManagedStatic_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ManagedStatic_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ManagedStatic_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ManagedStatic_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,171 @@
+<!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: ManagedStatic.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">ManagedStatic.h</div>  </div>
+</div>
+<div class="contents">
+<a href="ManagedStatic_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/ManagedStatic.h - Static Global wrapper ----*- 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 ManagedStatic class and the llvm_shutdown() function.</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_MANAGED_STATIC_H</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_SUPPORT_MANAGED_STATIC_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="Atomic_8h.html">llvm/Support/Atomic.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="Threading_8h.html">llvm/Support/Threading.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="Valgrind_8h.html">llvm/Support/Valgrind.h</a>"</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>llvm {
+<a name="l00022"></a>00022 <span class="comment"></span>
+<a name="l00023"></a>00023 <span class="comment">/// object_creator - Helper method for ManagedStatic.</span>
+<a name="l00024"></a>00024 <span class="comment"></span><span class="keyword">template</span><<span class="keyword">class</span> C>
+<a name="l00025"></a><a class="code" href="namespacellvm.html#ab0e20df9ddcc56ae90d4fb3464a42994">00025</a> <span class="keywordtype">void</span>* <a class="code" href="namespacellvm.html#ab0e20df9ddcc56ae90d4fb3464a42994" title="object_creator - Helper method for ManagedStatic.">object_creator</a>() {
+<a name="l00026"></a>00026   <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>();
+<a name="l00027"></a>00027 }
+<a name="l00028"></a>00028 <span class="comment"></span>
+<a name="l00029"></a>00029 <span class="comment">/// object_deleter - Helper method for ManagedStatic.</span>
+<a name="l00030"></a>00030 <span class="comment">///</span>
+<a name="l00031"></a><a class="code" href="structllvm_1_1object__deleter.html">00031</a> <span class="comment"></span><span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">struct </span><a class="code" href="structllvm_1_1object__deleter.html">object_deleter</a> {
+<a name="l00032"></a><a class="code" href="structllvm_1_1object__deleter.html#a9fa985c43caa3985bff5096731430d09">00032</a>   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structllvm_1_1object__deleter.html#a9fa985c43caa3985bff5096731430d09">call</a>(<span class="keywordtype">void</span> * Ptr) { <span class="keyword">delete</span> (T*)Ptr; }
+<a name="l00033"></a>00033 };
+<a name="l00034"></a><a class="code" href="structllvm_1_1object__deleter_3_01T[N]_4.html">00034</a> <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keywordtype">size_t</span> N> <span class="keyword">struct </span><a class="code" href="structllvm_1_1object__deleter.html">object_deleter</a><T[<a class="code" href="regcomp_8c.html#a0240ac851181b84ac374872dc5434ee4">N</a>]> {
+<a name="l00035"></a><a class="code" href="structllvm_1_1object__deleter_3_01T[N]_4.html#a24a48179fa3cc74e6cefafc398b71901">00035</a>   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structllvm_1_1object__deleter_3_01T[N]_4.html#a24a48179fa3cc74e6cefafc398b71901">call</a>(<span class="keywordtype">void</span> * Ptr) { <span class="keyword">delete</span>[] (T*)Ptr; }
+<a name="l00036"></a>00036 };
+<a name="l00037"></a>00037 <span class="comment"></span>
+<a name="l00038"></a>00038 <span class="comment">/// ManagedStaticBase - Common base class for ManagedStatic instances.</span>
+<a name="l00039"></a><a class="code" href="classllvm_1_1ManagedStaticBase.html">00039</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classllvm_1_1ManagedStaticBase.html" title="ManagedStaticBase - Common base class for ManagedStatic instances.">ManagedStaticBase</a> {
+<a name="l00040"></a>00040 <span class="keyword">protected</span>:
+<a name="l00041"></a>00041   <span class="comment">// This should only be used as a static variable, which guarantees that this</span>
+<a name="l00042"></a>00042   <span class="comment">// will be zero initialized.</span>
+<a name="l00043"></a><a class="code" href="classllvm_1_1ManagedStaticBase.html#ac0654478a047d852f9bc97bd67d83962">00043</a>   <span class="keyword">mutable</span> <span class="keywordtype">void</span> *<a class="code" href="classllvm_1_1ManagedStaticBase.html#ac0654478a047d852f9bc97bd67d83962">Ptr</a>;
+<a name="l00044"></a><a class="code" href="classllvm_1_1ManagedStaticBase.html#a4b14ec9d5945b9934cefbe6769647d74">00044</a>   <span class="keyword">mutable</span> void (*<a class="code" href="classllvm_1_1ManagedStaticBase.html#a4b14ec9d5945b9934cefbe6769647d74">DeleterFn</a>)(<span class="keywordtype">void</span>*);
+<a name="l00045"></a><a class="code" href="classllvm_1_1ManagedStaticBase.html#a2e7c1cf0ea51e0bef7f9f6714af3ce51">00045</a>   <span class="keyword">mutable</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1ManagedStaticBase.html" title="ManagedStaticBase - Common base class for ManagedStatic instances.">ManagedStaticBase</a> *<a class="code" href="classllvm_1_1ManagedStaticBase.html#a2e7c1cf0ea51e0bef7f9f6714af3ce51">Next</a>;
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1ManagedStaticBase.html#a4ab2de161fef8b89c04f334c1dfd5ff5">RegisterManagedStatic</a>(<span class="keywordtype">void</span> *(*creator)(), <span class="keywordtype">void</span> (*<a class="code" href="namespacellvm.html#abec1254b449f7339ae316600c8918fe9">deleter</a>)(<span class="keywordtype">void</span>*)) <span class="keyword">const</span>;
+<a name="l00048"></a>00048 <span class="keyword">public</span>:<span class="comment"></span>
+<a name="l00049"></a>00049 <span class="comment">  /// isConstructed - Return true if this object has not been created yet.</span>
+<a name="l00050"></a><a class="code" href="classllvm_1_1ManagedStaticBase.html#a931a8e9961e37555f9f9b662e82313cb">00050</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1ManagedStaticBase.html#a931a8e9961e37555f9f9b662e82313cb" title="isConstructed - Return true if this object has not been created yet.">isConstructed</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1ManagedStaticBase.html#ac0654478a047d852f9bc97bd67d83962">Ptr</a> != 0; }
+<a name="l00051"></a>00051 
+<a name="l00052"></a>00052   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1ManagedStaticBase.html#aee42c33804b12098c55f5198e6c39fcb">destroy</a>() <span class="keyword">const</span>;
+<a name="l00053"></a>00053 };
+<a name="l00054"></a>00054 <span class="comment"></span>
+<a name="l00055"></a>00055 <span class="comment">/// ManagedStatic - This transparently changes the behavior of global statics to</span>
+<a name="l00056"></a>00056 <span class="comment">/// be lazily constructed on demand (good for reducing startup times of dynamic</span>
+<a name="l00057"></a>00057 <span class="comment">/// libraries that link in LLVM components) and for making destruction be</span>
+<a name="l00058"></a>00058 <span class="comment">/// explicit through the llvm_shutdown() function call.</span>
+<a name="l00059"></a>00059 <span class="comment">///</span>
+<a name="l00060"></a>00060 <span class="comment"></span><span class="keyword">template</span><<span class="keyword">class</span> C>
+<a name="l00061"></a><a class="code" href="classllvm_1_1ManagedStatic.html">00061</a> <span class="keyword">class </span><a class="code" href="classllvm_1_1ManagedStatic.html">ManagedStatic</a> : <span class="keyword">public</span> <a class="code" href="classllvm_1_1ManagedStaticBase.html" title="ManagedStaticBase - Common base class for ManagedStatic instances.">ManagedStaticBase</a> {
+<a name="l00062"></a>00062 <span class="keyword">public</span>:
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064   <span class="comment">// Accessors.</span>
+<a name="l00065"></a><a class="code" href="classllvm_1_1ManagedStatic.html#ae410b73bc92071efaec0074522390d84">00065</a>   <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a> &<a class="code" href="classllvm_1_1ManagedStatic.html#ae410b73bc92071efaec0074522390d84">operator*</a>() {
+<a name="l00066"></a>00066     <span class="keywordtype">void</span>* tmp = <a class="code" href="classllvm_1_1ManagedStaticBase.html#ac0654478a047d852f9bc97bd67d83962">Ptr</a>;
+<a name="l00067"></a>00067     <span class="keywordflow">if</span> (<a class="code" href="namespacellvm.html#ad9fa28d3ded252b16d095d326c6f6fc0">llvm_is_multithreaded</a>()) <a class="code" href="namespacellvm_1_1sys.html#a96357e03675b273feb2112dabb891ada">sys::MemoryFence</a>();
+<a name="l00068"></a>00068     <span class="keywordflow">if</span> (!tmp) <a class="code" href="classllvm_1_1ManagedStaticBase.html#a4ab2de161fef8b89c04f334c1dfd5ff5">RegisterManagedStatic</a>(object_creator<C>, <a class="code" href="structllvm_1_1object__deleter.html">object_deleter<C>::call</a>);
+<a name="l00069"></a>00069     <a class="code" href="Valgrind_8h.html#a4a8a06812caf14bdec3b541b578b8344">TsanHappensAfter</a>(<span class="keyword">this</span>);
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071     <span class="keywordflow">return</span> *<span class="keyword">static_cast<</span><a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>*<span class="keyword">></span>(<a class="code" href="classllvm_1_1ManagedStaticBase.html#ac0654478a047d852f9bc97bd67d83962">Ptr</a>);
+<a name="l00072"></a>00072   }
+<a name="l00073"></a><a class="code" href="classllvm_1_1ManagedStatic.html#afca12d749f6d089cf4075f89fe99fc37">00073</a>   <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a> *<a class="code" href="classllvm_1_1ManagedStatic.html#afca12d749f6d089cf4075f89fe99fc37">operator-></a>() {
+<a name="l00074"></a>00074     <span class="keywordtype">void</span>* tmp = <a class="code" href="classllvm_1_1ManagedStaticBase.html#ac0654478a047d852f9bc97bd67d83962">Ptr</a>;
+<a name="l00075"></a>00075     <span class="keywordflow">if</span> (<a class="code" href="namespacellvm.html#ad9fa28d3ded252b16d095d326c6f6fc0">llvm_is_multithreaded</a>()) <a class="code" href="namespacellvm_1_1sys.html#a96357e03675b273feb2112dabb891ada">sys::MemoryFence</a>();
+<a name="l00076"></a>00076     <span class="keywordflow">if</span> (!tmp) <a class="code" href="classllvm_1_1ManagedStaticBase.html#a4ab2de161fef8b89c04f334c1dfd5ff5">RegisterManagedStatic</a>(object_creator<C>, <a class="code" href="structllvm_1_1object__deleter.html">object_deleter<C>::call</a>);
+<a name="l00077"></a>00077     <a class="code" href="Valgrind_8h.html#a4a8a06812caf14bdec3b541b578b8344">TsanHappensAfter</a>(<span class="keyword">this</span>);
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>*<span class="keyword">></span>(<a class="code" href="classllvm_1_1ManagedStaticBase.html#ac0654478a047d852f9bc97bd67d83962">Ptr</a>);
+<a name="l00080"></a>00080   }
+<a name="l00081"></a><a class="code" href="classllvm_1_1ManagedStatic.html#a62eaa6f387a2200bcbc0683a9efcac01">00081</a>   <span class="keyword">const</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a> &<a class="code" href="classllvm_1_1ManagedStatic.html#a62eaa6f387a2200bcbc0683a9efcac01">operator*</a>()<span class="keyword"> const </span>{
+<a name="l00082"></a>00082     <span class="keywordtype">void</span>* tmp = <a class="code" href="classllvm_1_1ManagedStaticBase.html#ac0654478a047d852f9bc97bd67d83962">Ptr</a>;
+<a name="l00083"></a>00083     <span class="keywordflow">if</span> (<a class="code" href="namespacellvm.html#ad9fa28d3ded252b16d095d326c6f6fc0">llvm_is_multithreaded</a>()) <a class="code" href="namespacellvm_1_1sys.html#a96357e03675b273feb2112dabb891ada">sys::MemoryFence</a>();
+<a name="l00084"></a>00084     <span class="keywordflow">if</span> (!tmp) <a class="code" href="classllvm_1_1ManagedStaticBase.html#a4ab2de161fef8b89c04f334c1dfd5ff5">RegisterManagedStatic</a>(object_creator<C>, <a class="code" href="structllvm_1_1object__deleter.html">object_deleter<C>::call</a>);
+<a name="l00085"></a>00085     <a class="code" href="Valgrind_8h.html#a4a8a06812caf14bdec3b541b578b8344">TsanHappensAfter</a>(<span class="keyword">this</span>);
+<a name="l00086"></a>00086 
+<a name="l00087"></a>00087     <span class="keywordflow">return</span> *<span class="keyword">static_cast<</span><a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>*<span class="keyword">></span>(<a class="code" href="classllvm_1_1ManagedStaticBase.html#ac0654478a047d852f9bc97bd67d83962">Ptr</a>);
+<a name="l00088"></a>00088   }
+<a name="l00089"></a><a class="code" href="classllvm_1_1ManagedStatic.html#a3cf7695ac983bd91ae3eed96018fa410">00089</a>   <span class="keyword">const</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a> *<a class="code" href="classllvm_1_1ManagedStatic.html#a3cf7695ac983bd91ae3eed96018fa410">operator-></a>()<span class="keyword"> const </span>{
+<a name="l00090"></a>00090     <span class="keywordtype">void</span>* tmp = <a class="code" href="classllvm_1_1ManagedStaticBase.html#ac0654478a047d852f9bc97bd67d83962">Ptr</a>;
+<a name="l00091"></a>00091     <span class="keywordflow">if</span> (<a class="code" href="namespacellvm.html#ad9fa28d3ded252b16d095d326c6f6fc0">llvm_is_multithreaded</a>()) <a class="code" href="namespacellvm_1_1sys.html#a96357e03675b273feb2112dabb891ada">sys::MemoryFence</a>();
+<a name="l00092"></a>00092     <span class="keywordflow">if</span> (!tmp) <a class="code" href="classllvm_1_1ManagedStaticBase.html#a4ab2de161fef8b89c04f334c1dfd5ff5">RegisterManagedStatic</a>(object_creator<C>, <a class="code" href="structllvm_1_1object__deleter.html">object_deleter<C>::call</a>);
+<a name="l00093"></a>00093     <a class="code" href="Valgrind_8h.html#a4a8a06812caf14bdec3b541b578b8344">TsanHappensAfter</a>(<span class="keyword">this</span>);
+<a name="l00094"></a>00094 
+<a name="l00095"></a>00095     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>*<span class="keyword">></span>(<a class="code" href="classllvm_1_1ManagedStaticBase.html#ac0654478a047d852f9bc97bd67d83962">Ptr</a>);
+<a name="l00096"></a>00096   }
+<a name="l00097"></a>00097 };
+<a name="l00098"></a>00098 <span class="comment"></span>
+<a name="l00099"></a>00099 <span class="comment">/// llvm_shutdown - Deallocate and destroy all ManagedStatic variables.</span>
+<a name="l00100"></a>00100 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#ac27f7fe6f1543ef516aa0998bad20335" title="llvm_shutdown - Deallocate and destroy all ManagedStatic variables.">llvm_shutdown</a>();
+<a name="l00101"></a>00101 
+<a name="l00102"></a>00102 <span class="comment"></span>
+<a name="l00103"></a>00103 <span class="comment">/// llvm_shutdown_obj - This is a simple helper class that calls</span>
+<a name="l00104"></a>00104 <span class="comment">/// llvm_shutdown() when it is destroyed.</span>
+<a name="l00105"></a><a class="code" href="structllvm_1_1llvm__shutdown__obj.html">00105</a> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="structllvm_1_1llvm__shutdown__obj.html">llvm_shutdown_obj</a> {
+<a name="l00106"></a><a class="code" href="structllvm_1_1llvm__shutdown__obj.html#a519645712d863038ad2f0d3a9dd8fe59">00106</a>   <a class="code" href="structllvm_1_1llvm__shutdown__obj.html#a519645712d863038ad2f0d3a9dd8fe59">llvm_shutdown_obj</a>() { }
+<a name="l00107"></a><a class="code" href="structllvm_1_1llvm__shutdown__obj.html#a05ed16723aeb616a41970484031dfef7">00107</a>   <span class="keyword">explicit</span> <a class="code" href="structllvm_1_1llvm__shutdown__obj.html#a05ed16723aeb616a41970484031dfef7">llvm_shutdown_obj</a>(<span class="keywordtype">bool</span> multithreaded) {
+<a name="l00108"></a>00108     <span class="keywordflow">if</span> (multithreaded) <a class="code" href="namespacellvm.html#a9aac276a680a0ccf61524a86b24f0a4b">llvm_start_multithreaded</a>();
+<a name="l00109"></a>00109   }
+<a name="l00110"></a><a class="code" href="structllvm_1_1llvm__shutdown__obj.html#a1a7cadfa3ce533d636f731cb4379f3cb">00110</a>   <a class="code" href="structllvm_1_1llvm__shutdown__obj.html#a1a7cadfa3ce533d636f731cb4379f3cb">~llvm_shutdown_obj</a>() { <a class="code" href="namespacellvm.html#ac27f7fe6f1543ef516aa0998bad20335" title="llvm_shutdown - Deallocate and destroy all ManagedStatic variables.">llvm_shutdown</a>(); }
+<a name="l00111"></a>00111 };
+<a name="l00112"></a>00112 
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114 
+<a name="l00115"></a>00115 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:43 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_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: ManagedStringPool.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_28330962a57157e353a3b70e888e4db9.html">NVPTX</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">ManagedStringPool.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="SmallVector_8h_source.html">llvm/ADT/SmallVector.h</a>"</code><br/>
+<code>#include <string></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for ManagedStringPool.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="ManagedStringPool_8h__incl.png" border="0" usemap="#ManagedStringPool_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="ManagedStringPool_8h__dep__incl.png" border="0" usemap="#ManagedStringPool_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="ManagedStringPool_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_1ManagedStringPool.html">llvm::ManagedStringPool</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:31 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/ManagedStringPool_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,7 @@
+<map id="G" name="G">
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="547,84,715,111"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="92,161,255,188"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="5,239,179,265"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="329,161,516,188"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="331,239,515,265"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ManagedStringPool_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,105 @@
+<!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: ManagedStringPool.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_28330962a57157e353a3b70e888e4db9.html">NVPTX</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">ManagedStringPool.h</div>  </div>
+</div>
+<div class="contents">
+<a href="ManagedStringPool_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- ManagedStringPool.h - Managed String Pool ---------------*- 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">// The strings allocated from a managed string pool are owned by the string</span>
+<a name="l00011"></a>00011 <span class="comment">// pool and will be deleted together with the managed string pool.</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 
+<a name="l00016"></a>00016 <span class="preprocessor">#ifndef LLVM_SUPPORT_MANAGED_STRING_H</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_SUPPORT_MANAGED_STRING_H</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="SmallVector_8h.html">llvm/ADT/SmallVector.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <string></span>
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>llvm {
+<a name="l00023"></a>00023 <span class="comment"></span>
+<a name="l00024"></a>00024 <span class="comment">/// ManagedStringPool - The strings allocated from a managed string pool are</span>
+<a name="l00025"></a>00025 <span class="comment">/// owned by the string pool and will be deleted together with the managed</span>
+<a name="l00026"></a>00026 <span class="comment">/// string pool.</span>
+<a name="l00027"></a><a class="code" href="classllvm_1_1ManagedStringPool.html">00027</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classllvm_1_1ManagedStringPool.html">ManagedStringPool</a> {
+<a name="l00028"></a>00028   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<std::string *, 8></a> Pool;
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030 <span class="keyword">public</span>:
+<a name="l00031"></a><a class="code" href="classllvm_1_1ManagedStringPool.html#a71999731d73e0ba20ce13a7da2fd7a6c">00031</a>   <a class="code" href="classllvm_1_1ManagedStringPool.html#a71999731d73e0ba20ce13a7da2fd7a6c">ManagedStringPool</a>() {}
+<a name="l00032"></a><a class="code" href="classllvm_1_1ManagedStringPool.html#a94f48a287b77e7e9833820eed22aca4f">00032</a>   <a class="code" href="classllvm_1_1ManagedStringPool.html#a94f48a287b77e7e9833820eed22aca4f">~ManagedStringPool</a>() {
+<a name="l00033"></a>00033     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<std::string *, 8>::iterator</a> Current = Pool.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a8a045d250952c0867382a9840ee18fdf">begin</a>();
+<a name="l00034"></a>00034     <span class="keywordflow">while</span> (Current != Pool.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a075e34e98605d0e7c289763a104869ac">end</a>()) {
+<a name="l00035"></a>00035       <span class="keyword">delete</span> *Current;
+<a name="l00036"></a>00036       Current++;
+<a name="l00037"></a>00037     }
+<a name="l00038"></a>00038   }
+<a name="l00039"></a>00039 
+<a name="l00040"></a><a class="code" href="classllvm_1_1ManagedStringPool.html#a1239643fd9e41fdc714c00a45de2d751">00040</a>   std::string *<a class="code" href="classllvm_1_1ManagedStringPool.html#a1239643fd9e41fdc714c00a45de2d751">getManagedString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *S) {
+<a name="l00041"></a>00041     std::string *Str = <span class="keyword">new</span> std::string(S);
+<a name="l00042"></a>00042     Pool.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(Str);
+<a name="l00043"></a>00043     <span class="keywordflow">return</span> Str;
+<a name="l00044"></a>00044   }
+<a name="l00045"></a>00045 };
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047 }
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:43 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/Mangler_8h__dep__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Mangler_8h__dep__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Mangler_8h__dep__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Mangler_8h__dep__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,32 @@
+<map id="G" name="G">
+<area shape="rect" href="$ARMException_8cpp.html" title="ARMException.cpp" alt="" coords="5,84,144,111"/>
+<area shape="rect" href="$AsmPrinter_8cpp.html" title="AsmPrinter.cpp" alt="" coords="168,84,285,111"/>
+<area shape="rect" href="$DwarfCFIException_8cpp.html" title="DwarfCFIException.cpp" alt="" coords="309,84,475,111"/>
+<area shape="rect" href="$DwarfCompileUnit_8cpp.html" title="DwarfCompileUnit.cpp" alt="" coords="499,84,661,111"/>
+<area shape="rect" href="$DwarfException_8cpp.html" title="DwarfException.cpp" alt="" coords="685,84,832,111"/>
+<area shape="rect" href="$OcamlGCPrinter_8cpp.html" title="OcamlGCPrinter.cpp" alt="" coords="856,84,1005,111"/>
+<area shape="rect" href="$Win64Exception_8cpp.html" title="Win64Exception.cpp" alt="" coords="1029,84,1176,111"/>
+<area shape="rect" href="$TargetLoweringObjectFileImpl_8cpp.html" title="TargetLoweringObjectFileImpl.cpp" alt="" coords="1200,84,1432,111"/>
+<area shape="rect" href="$ARMAsmPrinter_8cpp.html" title="ARMAsmPrinter.cpp" alt="" coords="1456,84,1603,111"/>
+<area shape="rect" href="$ARMMCInstLower_8cpp.html" title="ARMMCInstLower.cpp" alt="" coords="1627,84,1781,111"/>
+<area shape="rect" href="$SPUAsmPrinter_8cpp.html" title="SPUAsmPrinter.cpp" alt="" coords="1805,84,1949,111"/>
+<area shape="rect" href="$HexagonAsmPrinter_8cpp.html" title="HexagonAsmPrinter.cpp" alt="" coords="1973,84,2149,111"/>
+<area shape="rect" href="$HexagonMCInstLower_8cpp.html" title="HexagonMCInstLower.cpp" alt="" coords="2173,84,2357,111"/>
+<area shape="rect" href="$Mangler_8cpp.html" title="Mangler.cpp" alt="" coords="2381,84,2480,111"/>
+<area shape="rect" href="$MBlazeAsmPrinter_8cpp.html" title="MBlazeAsmPrinter.cpp" alt="" coords="2504,84,2667,111"/>
+<area shape="rect" href="$MBlazeMCInstLower_8cpp.html" title="MBlazeMCInstLower.cpp" alt="" coords="2691,84,2864,111"/>
+<area shape="rect" href="$MipsAsmPrinter_8cpp.html" title="MipsAsmPrinter.cpp" alt="" coords="2888,84,3035,111"/>
+<area shape="rect" href="$MipsMCInstLower_8cpp.html" title="MipsMCInstLower.cpp" alt="" coords="3059,84,3213,111"/>
+<area shape="rect" href="$MSP430AsmPrinter_8cpp.html" title="MSP430AsmPrinter.cpp" alt="" coords="3237,84,3408,111"/>
+<area shape="rect" href="$MSP430MCInstLower_8cpp.html" title="MSP430MCInstLower.cpp" alt="" coords="3432,84,3611,111"/>
+<area shape="rect" href="$NVPTXAsmPrinter_8h.html" title="NVPTXAsmPrinter.h" alt="" coords="3635,84,3779,111"/>
+<area shape="rect" href="$NVPTXAsmPrinter_8cpp.html" title="NVPTXAsmPrinter.cpp" alt="" coords="3681,161,3841,188"/>
+<area shape="rect" href="$PPCAsmPrinter_8cpp.html" title="PPCAsmPrinter.cpp" alt="" coords="3853,84,3997,111"/>
+<area shape="rect" href="$PPCMCInstLower_8cpp.html" title="PPCMCInstLower.cpp" alt="" coords="4021,84,4173,111"/>
+<area shape="rect" href="$SparcAsmPrinter_8cpp.html" title="SparcAsmPrinter.cpp" alt="" coords="4197,84,4352,111"/>
+<area shape="rect" href="$TargetLoweringObjectFile_8cpp.html" title="TargetLoweringObjectFile.cpp" alt="" coords="4376,84,4579,111"/>
+<area shape="rect" href="$X86AsmPrinter_8cpp.html" title="X86AsmPrinter.cpp" alt="" coords="4603,84,4744,111"/>
+<area shape="rect" href="$X86MCInstLower_8cpp.html" title="X86MCInstLower.cpp" alt="" coords="4768,84,4920,111"/>
+<area shape="rect" href="$X86TargetObjectFile_8cpp.html" title="X86TargetObjectFile.cpp" alt="" coords="4944,84,5115,111"/>
+<area shape="rect" href="$XCoreAsmPrinter_8cpp.html" title="XCoreAsmPrinter.cpp" alt="" coords="5139,84,5293,111"/>
+</map>

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

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MapVector_8h__dep__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MapVector_8h__dep__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MapVector_8h__dep__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MapVector_8h__dep__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,3 @@
+<map id="G" name="G">
+<area shape="rect" href="$PPCAsmPrinter_8cpp.html" title="PPCAsmPrinter.cpp" alt="" coords="5,84,149,111"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MapVector_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MapVector_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MapVector_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MapVector_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,79 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="MapVector.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/ADT/ArrayRef.h",height=0.2,width=0.4,color="black",URL="$ArrayRef_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="black",URL="$SmallVector_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_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="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node8 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="memory",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="black",URL="$DenseMap_8h.html"];
+  Node21 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="black",URL="$MathExtras_8h.html"];
+  Node22 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/Support/SwapByteOrder.h",height=0.2,width=0.4,color="black",URL="$SwapByteOrder_8h.html"];
+  Node23 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="limits",height=0.2,width=0.4,color="grey75"];
+  Node21 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/Support/PointerLikeTypeTraits.h",height=0.2,width=0.4,color="black",URL="$PointerLikeTypeTraits_8h.html"];
+  Node25 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/ADT/DenseMapInfo.h",height=0.2,width=0.4,color="black",URL="$DenseMapInfo_8h.html"];
+  Node26 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="new",height=0.2,width=0.4,color="grey75"];
+  Node21 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node21 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Math_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Math_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Math_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Math_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,345 @@
+<!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: Math.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_33f9015af551a3c03ac5a968f2023d57.html">CodeGen</a>      </li>
+      <li class="navelem"><a class="el" href="dir_a8c1d57ce8183c41b9f05ccd2f5ffcb2.html">PBQP</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Math.h</div>  </div>
+</div>
+<div class="contents">
+<a href="Math_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===------ Math.h - PBQP Vector and Matrix classes -------------*- 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 
+<a name="l00010"></a>00010 <span class="preprocessor">#ifndef LLVM_CODEGEN_PBQP_MATH_H </span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CODEGEN_PBQP_MATH_H</span>
+<a name="l00012"></a>00012 <span class="preprocessor"></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <cassert></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <algorithm></span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include <functional></span>
+<a name="l00016"></a>00016 
+<a name="l00017"></a>00017 <span class="keyword">namespace </span>PBQP {
+<a name="l00018"></a>00018 
+<a name="l00019"></a><a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">00019</a> <span class="keyword">typedef</span> <span class="keywordtype">float</span> <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>;
+<a name="l00020"></a>00020 <span class="comment"></span>
+<a name="l00021"></a>00021 <span class="comment">/// \brief PBQP Vector class.</span>
+<a name="l00022"></a><a class="code" href="classPBQP_1_1Vector.html">00022</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a> {
+<a name="l00023"></a>00023   <span class="keyword">public</span>:
+<a name="l00024"></a>00024 <span class="comment"></span>
+<a name="l00025"></a>00025 <span class="comment">    /// \brief Construct a PBQP vector of the given size.</span>
+<a name="l00026"></a><a class="code" href="classPBQP_1_1Vector.html#aae15eff0f17b5faa37d97ecf491e4c99">00026</a> <span class="comment"></span>    <span class="keyword">explicit</span> <a class="code" href="classPBQP_1_1Vector.html#aae15eff0f17b5faa37d97ecf491e4c99" title="Construct a PBQP vector of the given size.">Vector</a>(<span class="keywordtype">unsigned</span> length) :
+<a name="l00027"></a>00027       length(length), data(new <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>[length]) {
+<a name="l00028"></a>00028       }
+<a name="l00029"></a>00029 <span class="comment"></span>
+<a name="l00030"></a>00030 <span class="comment">    /// \brief Construct a PBQP vector with initializer.</span>
+<a name="l00031"></a><a class="code" href="classPBQP_1_1Vector.html#a77bcf6d3ee8c480673b98618af671c7b">00031</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Vector.html#aae15eff0f17b5faa37d97ecf491e4c99" title="Construct a PBQP vector of the given size.">Vector</a>(<span class="keywordtype">unsigned</span> length, <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a> initVal) :
+<a name="l00032"></a>00032       length(length), data(new <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>[length]) {
+<a name="l00033"></a>00033         std::fill(data, data + length, initVal);
+<a name="l00034"></a>00034       }
+<a name="l00035"></a>00035 <span class="comment"></span>
+<a name="l00036"></a>00036 <span class="comment">    /// \brief Copy construct a PBQP vector.</span>
+<a name="l00037"></a><a class="code" href="classPBQP_1_1Vector.html#a0115e12ef59b23b8035a95a71a96095e">00037</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Vector.html#aae15eff0f17b5faa37d97ecf491e4c99" title="Construct a PBQP vector of the given size.">Vector</a>(<span class="keyword">const</span> <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a> &v) :
+<a name="l00038"></a>00038       length(v.length), data(new <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>[length]) {
+<a name="l00039"></a>00039         std::copy(v.data, v.data + length, data);
+<a name="l00040"></a>00040       }
+<a name="l00041"></a>00041 <span class="comment"></span>
+<a name="l00042"></a>00042 <span class="comment">    /// \brief Destroy this vector, return its memory.</span>
+<a name="l00043"></a><a class="code" href="classPBQP_1_1Vector.html#a9c2b28829c060efdb9133b3a68df4517">00043</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Vector.html#a9c2b28829c060efdb9133b3a68df4517" title="Destroy this vector, return its memory.">~Vector</a>() { <span class="keyword">delete</span>[] data; }
+<a name="l00044"></a>00044 <span class="comment"></span>
+<a name="l00045"></a>00045 <span class="comment">    /// \brief Assignment operator.</span>
+<a name="l00046"></a><a class="code" href="classPBQP_1_1Vector.html#a16471b15f227fe873baf0c0a6339b1a5">00046</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a>& <a class="code" href="classPBQP_1_1Vector.html#a16471b15f227fe873baf0c0a6339b1a5" title="Assignment operator.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a> &v) {
+<a name="l00047"></a>00047       <span class="keyword">delete</span>[] data;
+<a name="l00048"></a>00048       length = v.length;
+<a name="l00049"></a>00049       data = <span class="keyword">new</span> <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>[length];
+<a name="l00050"></a>00050       std::copy(v.data, v.data + length, data);
+<a name="l00051"></a>00051       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00052"></a>00052     }
+<a name="l00053"></a>00053 <span class="comment"></span>
+<a name="l00054"></a>00054 <span class="comment">    /// \brief Return the length of the vector</span>
+<a name="l00055"></a><a class="code" href="classPBQP_1_1Vector.html#a9a43bb2b3f00493f9d77791fe4d0e9b2">00055</a> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <a class="code" href="classPBQP_1_1Vector.html#a9a43bb2b3f00493f9d77791fe4d0e9b2" title="Return the length of the vector.">getLength</a>()<span class="keyword"> const </span>{
+<a name="l00056"></a>00056       <span class="keywordflow">return</span> length;
+<a name="l00057"></a>00057     }
+<a name="l00058"></a>00058 <span class="comment"></span>
+<a name="l00059"></a>00059 <span class="comment">    /// \brief Element access.</span>
+<a name="l00060"></a><a class="code" href="classPBQP_1_1Vector.html#a9dcd79fae23c502a31cad7bb0f66e5d8">00060</a> <span class="comment"></span>    <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>& <a class="code" href="classPBQP_1_1Vector.html#a9dcd79fae23c502a31cad7bb0f66e5d8" title="Element access.">operator[]</a>(<span class="keywordtype">unsigned</span> index) {
+<a name="l00061"></a>00061       assert(index < length && <span class="stringliteral">"Vector element access out of bounds."</span>);
+<a name="l00062"></a>00062       <span class="keywordflow">return</span> data[index];
+<a name="l00063"></a>00063     }
+<a name="l00064"></a>00064 <span class="comment"></span>
+<a name="l00065"></a>00065 <span class="comment">    /// \brief Const element access.</span>
+<a name="l00066"></a><a class="code" href="classPBQP_1_1Vector.html#af7c3a4ecb6576e08aaf7760831083a44">00066</a> <span class="comment"></span>    <span class="keyword">const</span> <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>& <a class="code" href="classPBQP_1_1Vector.html#af7c3a4ecb6576e08aaf7760831083a44" title="Const element access.">operator[]</a>(<span class="keywordtype">unsigned</span> index)<span class="keyword"> const </span>{
+<a name="l00067"></a>00067       assert(index < length && <span class="stringliteral">"Vector element access out of bounds."</span>);
+<a name="l00068"></a>00068       <span class="keywordflow">return</span> data[index];
+<a name="l00069"></a>00069     }
+<a name="l00070"></a>00070 <span class="comment"></span>
+<a name="l00071"></a>00071 <span class="comment">    /// \brief Add another vector to this one.</span>
+<a name="l00072"></a><a class="code" href="classPBQP_1_1Vector.html#a6e0deb5a2decbcc228a1af40bb11d2fd">00072</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a>& <a class="code" href="classPBQP_1_1Vector.html#a6e0deb5a2decbcc228a1af40bb11d2fd" title="Add another vector to this one.">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a> &v) {
+<a name="l00073"></a>00073       assert(length == v.length && <span class="stringliteral">"Vector length mismatch."</span>);
+<a name="l00074"></a>00074       std::transform(data, data + length, v.data, data, std::plus<PBQPNum>()); 
+<a name="l00075"></a>00075       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00076"></a>00076     }
+<a name="l00077"></a>00077 <span class="comment"></span>
+<a name="l00078"></a>00078 <span class="comment">    /// \brief Subtract another vector from this one.</span>
+<a name="l00079"></a><a class="code" href="classPBQP_1_1Vector.html#ad4d037b7662e15b82efd51d4713595f5">00079</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a>& <a class="code" href="classPBQP_1_1Vector.html#ad4d037b7662e15b82efd51d4713595f5" title="Subtract another vector from this one.">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a> &v) {
+<a name="l00080"></a>00080       assert(length == v.length && <span class="stringliteral">"Vector length mismatch."</span>);
+<a name="l00081"></a>00081       std::transform(data, data + length, v.data, data, std::minus<PBQPNum>()); 
+<a name="l00082"></a>00082       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00083"></a>00083     }
+<a name="l00084"></a>00084 <span class="comment"></span>
+<a name="l00085"></a>00085 <span class="comment">    /// \brief Returns the index of the minimum value in this vector</span>
+<a name="l00086"></a><a class="code" href="classPBQP_1_1Vector.html#a28feb1e7a2bad91120d9efb3d22c60d8">00086</a> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <a class="code" href="classPBQP_1_1Vector.html#a28feb1e7a2bad91120d9efb3d22c60d8" title="Returns the index of the minimum value in this vector.">minIndex</a>()<span class="keyword"> const </span>{
+<a name="l00087"></a>00087       <span class="keywordflow">return</span> std::min_element(data, data + length) - data;
+<a name="l00088"></a>00088     }
+<a name="l00089"></a>00089 
+<a name="l00090"></a>00090   <span class="keyword">private</span>:
+<a name="l00091"></a>00091     <span class="keywordtype">unsigned</span> length;
+<a name="l00092"></a>00092     <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a> *data;
+<a name="l00093"></a>00093 };
+<a name="l00094"></a>00094 <span class="comment"></span>
+<a name="l00095"></a>00095 <span class="comment">/// \brief Output a textual representation of the given vector on the given</span>
+<a name="l00096"></a>00096 <span class="comment">///        output stream.</span>
+<a name="l00097"></a>00097 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">typename</span> OStream>
+<a name="l00098"></a><a class="code" href="namespacePBQP.html#a4bf823978b0700b22a803e7236cfe159">00098</a> OStream& <a class="code" href="namespacePBQP.html#a4bf823978b0700b22a803e7236cfe159" title="Output a textual representation of the given vector on the given output stream.">operator<<</a>(OStream &os, <span class="keyword">const</span> <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a> &v) {
+<a name="l00099"></a>00099   assert((v.<a class="code" href="classPBQP_1_1Vector.html#a9a43bb2b3f00493f9d77791fe4d0e9b2" title="Return the length of the vector.">getLength</a>() != 0) && <span class="stringliteral">"Zero-length vector badness."</span>);
+<a name="l00100"></a>00100 
+<a name="l00101"></a>00101   os << <span class="stringliteral">"[ "</span> << v[0];
+<a name="l00102"></a>00102   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1; i < v.getLength(); ++i) {
+<a name="l00103"></a>00103     os << <span class="stringliteral">", "</span> << v[i];
+<a name="l00104"></a>00104   }
+<a name="l00105"></a>00105   os << <span class="stringliteral">" ]"</span>;
+<a name="l00106"></a>00106 
+<a name="l00107"></a>00107   <span class="keywordflow">return</span> os;
+<a name="l00108"></a>00108 } 
+<a name="l00109"></a>00109 
+<a name="l00110"></a>00110 <span class="comment"></span>
+<a name="l00111"></a>00111 <span class="comment">/// \brief PBQP Matrix class</span>
+<a name="l00112"></a><a class="code" href="classPBQP_1_1Matrix.html">00112</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a> {
+<a name="l00113"></a>00113   <span class="keyword">public</span>:
+<a name="l00114"></a>00114 <span class="comment"></span>
+<a name="l00115"></a>00115 <span class="comment">    /// \brief Construct a PBQP Matrix with the given dimensions.</span>
+<a name="l00116"></a><a class="code" href="classPBQP_1_1Matrix.html#aad8d883fa9f8c8f2c427a57834544b63">00116</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Matrix.html#aad8d883fa9f8c8f2c427a57834544b63" title="Construct a PBQP Matrix with the given dimensions.">Matrix</a>(<span class="keywordtype">unsigned</span> rows, <span class="keywordtype">unsigned</span> cols) :
+<a name="l00117"></a>00117       rows(rows), cols(cols), data(new <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>[rows * cols]) {
+<a name="l00118"></a>00118     }
+<a name="l00119"></a>00119 <span class="comment"></span>
+<a name="l00120"></a>00120 <span class="comment">    /// \brief Construct a PBQP Matrix with the given dimensions and initial</span>
+<a name="l00121"></a>00121 <span class="comment">    /// value.</span>
+<a name="l00122"></a><a class="code" href="classPBQP_1_1Matrix.html#a7cd6594b99a4eb7d3c0871ab095903f9">00122</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Matrix.html#aad8d883fa9f8c8f2c427a57834544b63" title="Construct a PBQP Matrix with the given dimensions.">Matrix</a>(<span class="keywordtype">unsigned</span> rows, <span class="keywordtype">unsigned</span> cols, <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a> initVal) :
+<a name="l00123"></a>00123       rows(rows), cols(cols), data(new <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>[rows * cols]) {
+<a name="l00124"></a>00124         std::fill(data, data + (rows * cols), initVal);
+<a name="l00125"></a>00125     }
+<a name="l00126"></a>00126 <span class="comment"></span>
+<a name="l00127"></a>00127 <span class="comment">    /// \brief Copy construct a PBQP matrix.</span>
+<a name="l00128"></a><a class="code" href="classPBQP_1_1Matrix.html#a2cbfb527916f4eef5044ca542c119adf">00128</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Matrix.html#aad8d883fa9f8c8f2c427a57834544b63" title="Construct a PBQP Matrix with the given dimensions.">Matrix</a>(<span class="keyword">const</span> <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a> &m) :
+<a name="l00129"></a>00129       rows(m.rows), cols(m.cols), data(new <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>[rows * cols]) {
+<a name="l00130"></a>00130         std::copy(m.data, m.data + (rows * cols), data);  
+<a name="l00131"></a>00131     }
+<a name="l00132"></a>00132 <span class="comment"></span>
+<a name="l00133"></a>00133 <span class="comment">    /// \brief Destroy this matrix, return its memory.</span>
+<a name="l00134"></a><a class="code" href="classPBQP_1_1Matrix.html#a6f36e39507673b9b0130954e5f130ba9">00134</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Matrix.html#a6f36e39507673b9b0130954e5f130ba9" title="Destroy this matrix, return its memory.">~Matrix</a>() { <span class="keyword">delete</span>[] data; }
+<a name="l00135"></a>00135 <span class="comment"></span>
+<a name="l00136"></a>00136 <span class="comment">    /// \brief Assignment operator.</span>
+<a name="l00137"></a><a class="code" href="classPBQP_1_1Matrix.html#ae7d10580fca8dac09f9bab8cd855a5b0">00137</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a>& <a class="code" href="classPBQP_1_1Matrix.html#ae7d10580fca8dac09f9bab8cd855a5b0" title="Assignment operator.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a> &m) {
+<a name="l00138"></a>00138       <span class="keyword">delete</span>[] data;
+<a name="l00139"></a>00139       rows = m.rows; cols = m.cols;
+<a name="l00140"></a>00140       data = <span class="keyword">new</span> <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>[rows * cols];
+<a name="l00141"></a>00141       std::copy(m.data, m.data + (rows * cols), data);
+<a name="l00142"></a>00142       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00143"></a>00143     }
+<a name="l00144"></a>00144 <span class="comment"></span>
+<a name="l00145"></a>00145 <span class="comment">    /// \brief Return the number of rows in this matrix.</span>
+<a name="l00146"></a><a class="code" href="classPBQP_1_1Matrix.html#aef97f8816fe8c90957aa77650e201f28">00146</a> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <a class="code" href="classPBQP_1_1Matrix.html#aef97f8816fe8c90957aa77650e201f28" title="Return the number of rows in this matrix.">getRows</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rows; }
+<a name="l00147"></a>00147 <span class="comment"></span>
+<a name="l00148"></a>00148 <span class="comment">    /// \brief Return the number of cols in this matrix.</span>
+<a name="l00149"></a><a class="code" href="classPBQP_1_1Matrix.html#a65dba0196c9167f83bd94ad1cb1ca275">00149</a> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <a class="code" href="classPBQP_1_1Matrix.html#a65dba0196c9167f83bd94ad1cb1ca275" title="Return the number of cols in this matrix.">getCols</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cols; }
+<a name="l00150"></a>00150 <span class="comment"></span>
+<a name="l00151"></a>00151 <span class="comment">    /// \brief Matrix element access.</span>
+<a name="l00152"></a><a class="code" href="classPBQP_1_1Matrix.html#a8fefaca8bcf7ab370700f3967dc0547e">00152</a> <span class="comment"></span>    <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>* <a class="code" href="classPBQP_1_1Matrix.html#a8fefaca8bcf7ab370700f3967dc0547e" title="Matrix element access.">operator[]</a>(<span class="keywordtype">unsigned</span> r) {
+<a name="l00153"></a>00153       assert(r < rows && <span class="stringliteral">"Row out of bounds."</span>);
+<a name="l00154"></a>00154       <span class="keywordflow">return</span> data + (r * cols);
+<a name="l00155"></a>00155     }
+<a name="l00156"></a>00156 <span class="comment"></span>
+<a name="l00157"></a>00157 <span class="comment">    /// \brief Matrix element access.</span>
+<a name="l00158"></a><a class="code" href="classPBQP_1_1Matrix.html#a9eab163afa5c5631fa2728397931fcce">00158</a> <span class="comment"></span>    <span class="keyword">const</span> <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a>* <a class="code" href="classPBQP_1_1Matrix.html#a9eab163afa5c5631fa2728397931fcce" title="Matrix element access.">operator[]</a>(<span class="keywordtype">unsigned</span> r)<span class="keyword"> const </span>{
+<a name="l00159"></a>00159       assert(r < rows && <span class="stringliteral">"Row out of bounds."</span>);
+<a name="l00160"></a>00160       <span class="keywordflow">return</span> data + (r * cols);
+<a name="l00161"></a>00161     }
+<a name="l00162"></a>00162 <span class="comment"></span>
+<a name="l00163"></a>00163 <span class="comment">    /// \brief Returns the given row as a vector.</span>
+<a name="l00164"></a><a class="code" href="classPBQP_1_1Matrix.html#a883fe95eb19de5b06f5b9134d40e56ed">00164</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a> <a class="code" href="classPBQP_1_1Matrix.html#a883fe95eb19de5b06f5b9134d40e56ed" title="Returns the given row as a vector.">getRowAsVector</a>(<span class="keywordtype">unsigned</span> r)<span class="keyword"> const </span>{
+<a name="l00165"></a>00165       <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a> v(cols);
+<a name="l00166"></a>00166       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> c = 0; c < cols; ++c)
+<a name="l00167"></a>00167         v[c] = (*<span class="keyword">this</span>)[r][c];
+<a name="l00168"></a>00168       <span class="keywordflow">return</span> v; 
+<a name="l00169"></a>00169     }
+<a name="l00170"></a>00170 <span class="comment"></span>
+<a name="l00171"></a>00171 <span class="comment">    /// \brief Returns the given column as a vector.</span>
+<a name="l00172"></a><a class="code" href="classPBQP_1_1Matrix.html#a09914f8b4874841782530b2031f644ed">00172</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a> <a class="code" href="classPBQP_1_1Matrix.html#a09914f8b4874841782530b2031f644ed" title="Returns the given column as a vector.">getColAsVector</a>(<span class="keywordtype">unsigned</span> c)<span class="keyword"> const </span>{
+<a name="l00173"></a>00173       <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a> v(rows);
+<a name="l00174"></a>00174       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> r = 0; r < rows; ++r)
+<a name="l00175"></a>00175         v[r] = (*<span class="keyword">this</span>)[r][c];
+<a name="l00176"></a>00176       <span class="keywordflow">return</span> v;
+<a name="l00177"></a>00177     }
+<a name="l00178"></a>00178 <span class="comment"></span>
+<a name="l00179"></a>00179 <span class="comment">    /// \brief Reset the matrix to the given value.</span>
+<a name="l00180"></a><a class="code" href="classPBQP_1_1Matrix.html#a1fe0fb908c5d7a3fefdbac7cfaf5e667">00180</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a>& <a class="code" href="classPBQP_1_1Matrix.html#a1fe0fb908c5d7a3fefdbac7cfaf5e667" title="Reset the matrix to the given value.">reset</a>(<a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a> val = 0) {
+<a name="l00181"></a>00181       std::fill(data, data + (rows * cols), val);
+<a name="l00182"></a>00182       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00183"></a>00183     }
+<a name="l00184"></a>00184 <span class="comment"></span>
+<a name="l00185"></a>00185 <span class="comment">    /// \brief Set a single row of this matrix to the given value.</span>
+<a name="l00186"></a><a class="code" href="classPBQP_1_1Matrix.html#a4f103e7ff8d3adfc413327d286ee0d12">00186</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a>& <a class="code" href="classPBQP_1_1Matrix.html#a4f103e7ff8d3adfc413327d286ee0d12" title="Set a single row of this matrix to the given value.">setRow</a>(<span class="keywordtype">unsigned</span> r, <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a> val) {
+<a name="l00187"></a>00187       assert(r < rows && <span class="stringliteral">"Row out of bounds."</span>);
+<a name="l00188"></a>00188       std::fill(data + (r * cols), data + ((r + 1) * cols), val);
+<a name="l00189"></a>00189       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00190"></a>00190     }
+<a name="l00191"></a>00191 <span class="comment"></span>
+<a name="l00192"></a>00192 <span class="comment">    /// \brief Set a single column of this matrix to the given value.</span>
+<a name="l00193"></a><a class="code" href="classPBQP_1_1Matrix.html#a428a1f6b2208ce2943682bc023015ff7">00193</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a>& <a class="code" href="classPBQP_1_1Matrix.html#a428a1f6b2208ce2943682bc023015ff7" title="Set a single column of this matrix to the given value.">setCol</a>(<span class="keywordtype">unsigned</span> c, <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a> val) {
+<a name="l00194"></a>00194       assert(c < cols && <span class="stringliteral">"Column out of bounds."</span>);
+<a name="l00195"></a>00195       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> r = 0; r < rows; ++r)
+<a name="l00196"></a>00196         (*<span class="keyword">this</span>)[r][c] = val;
+<a name="l00197"></a>00197       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00198"></a>00198     }
+<a name="l00199"></a>00199 <span class="comment"></span>
+<a name="l00200"></a>00200 <span class="comment">    /// \brief Matrix transpose.</span>
+<a name="l00201"></a><a class="code" href="classPBQP_1_1Matrix.html#a5b1b6f3d39440f7265563e1a54805e97">00201</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a> <a class="code" href="classPBQP_1_1Matrix.html#a5b1b6f3d39440f7265563e1a54805e97" title="Matrix transpose.">transpose</a>()<span class="keyword"> const </span>{
+<a name="l00202"></a>00202       <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a> m(cols, rows);
+<a name="l00203"></a>00203       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> r = 0; r < rows; ++r)
+<a name="l00204"></a>00204         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> c = 0; c < cols; ++c)
+<a name="l00205"></a>00205           m[c][r] = (*<span class="keyword">this</span>)[r][c];
+<a name="l00206"></a>00206       <span class="keywordflow">return</span> m;
+<a name="l00207"></a>00207     }
+<a name="l00208"></a>00208 <span class="comment"></span>
+<a name="l00209"></a>00209 <span class="comment">    /// \brief Returns the diagonal of the matrix as a vector.</span>
+<a name="l00210"></a>00210 <span class="comment">    ///</span>
+<a name="l00211"></a>00211 <span class="comment">    /// Matrix must be square.</span>
+<a name="l00212"></a><a class="code" href="classPBQP_1_1Matrix.html#ade34153e537cb7d3c6b65b2a4aefdd17">00212</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a> <a class="code" href="classPBQP_1_1Matrix.html#ade34153e537cb7d3c6b65b2a4aefdd17" title="Returns the diagonal of the matrix as a vector.">diagonalize</a>()<span class="keyword"> const </span>{
+<a name="l00213"></a>00213       assert(rows == cols && <span class="stringliteral">"Attempt to diagonalize non-square matrix."</span>);
+<a name="l00214"></a>00214 
+<a name="l00215"></a>00215       <a class="code" href="classPBQP_1_1Vector.html" title="PBQP Vector class.">Vector</a> v(rows);
+<a name="l00216"></a>00216       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> r = 0; r < rows; ++r)
+<a name="l00217"></a>00217         v[r] = (*<span class="keyword">this</span>)[r][r];
+<a name="l00218"></a>00218       <span class="keywordflow">return</span> v;
+<a name="l00219"></a>00219     } 
+<a name="l00220"></a>00220 <span class="comment"></span>
+<a name="l00221"></a>00221 <span class="comment">    /// \brief Add the given matrix to this one.</span>
+<a name="l00222"></a><a class="code" href="classPBQP_1_1Matrix.html#afa15f71208c740d57895f40b8731ab39">00222</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a>& <a class="code" href="classPBQP_1_1Matrix.html#afa15f71208c740d57895f40b8731ab39" title="Add the given matrix to this one.">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a> &m) {
+<a name="l00223"></a>00223       assert(rows == m.rows && cols == m.cols &&
+<a name="l00224"></a>00224           <span class="stringliteral">"Matrix dimensions mismatch."</span>);
+<a name="l00225"></a>00225       std::transform(data, data + (rows * cols), m.data, data,
+<a name="l00226"></a>00226           std::plus<PBQPNum>());
+<a name="l00227"></a>00227       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00228"></a>00228     }
+<a name="l00229"></a>00229 <span class="comment"></span>
+<a name="l00230"></a>00230 <span class="comment">    /// \brief Returns the minimum of the given row</span>
+<a name="l00231"></a><a class="code" href="classPBQP_1_1Matrix.html#a6de97abc354f03d4c44ecb627151632b">00231</a> <span class="comment"></span>    <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a> <a class="code" href="classPBQP_1_1Matrix.html#a6de97abc354f03d4c44ecb627151632b" title="Returns the minimum of the given row.">getRowMin</a>(<span class="keywordtype">unsigned</span> r)<span class="keyword"> const </span>{
+<a name="l00232"></a>00232       assert(r < rows && <span class="stringliteral">"Row out of bounds"</span>);
+<a name="l00233"></a>00233       <span class="keywordflow">return</span> *std::min_element(data + (r * cols), data + ((r + 1) * cols));
+<a name="l00234"></a>00234     }
+<a name="l00235"></a>00235 <span class="comment"></span>
+<a name="l00236"></a>00236 <span class="comment">    /// \brief Returns the minimum of the given column</span>
+<a name="l00237"></a><a class="code" href="classPBQP_1_1Matrix.html#adf041d13ae1f6b1c49d7035380014457">00237</a> <span class="comment"></span>    <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a> <a class="code" href="classPBQP_1_1Matrix.html#adf041d13ae1f6b1c49d7035380014457" title="Returns the minimum of the given column.">getColMin</a>(<span class="keywordtype">unsigned</span> c)<span class="keyword"> const </span>{
+<a name="l00238"></a>00238       <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a> minElem = (*this)[0][c];
+<a name="l00239"></a>00239       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> r = 1; r < rows; ++r)
+<a name="l00240"></a>00240         <span class="keywordflow">if</span> ((*<span class="keyword">this</span>)[r][c] < minElem) minElem = (*this)[r][c];
+<a name="l00241"></a>00241       <span class="keywordflow">return</span> minElem;
+<a name="l00242"></a>00242     }
+<a name="l00243"></a>00243 <span class="comment"></span>
+<a name="l00244"></a>00244 <span class="comment">    /// \brief Subtracts the given scalar from the elements of the given row.</span>
+<a name="l00245"></a><a class="code" href="classPBQP_1_1Matrix.html#a0512c6448bca1d34bdb3c19252e7d75c">00245</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a>& <a class="code" href="classPBQP_1_1Matrix.html#a0512c6448bca1d34bdb3c19252e7d75c" title="Subtracts the given scalar from the elements of the given row.">subFromRow</a>(<span class="keywordtype">unsigned</span> r, <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a> val) {
+<a name="l00246"></a>00246       assert(r < rows && <span class="stringliteral">"Row out of bounds"</span>);
+<a name="l00247"></a>00247       std::transform(data + (r * cols), data + ((r + 1) * cols),
+<a name="l00248"></a>00248           data + (r * cols),
+<a name="l00249"></a>00249           std::bind2nd(std::minus<PBQPNum>(), val));
+<a name="l00250"></a>00250       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00251"></a>00251     }
+<a name="l00252"></a>00252 <span class="comment"></span>
+<a name="l00253"></a>00253 <span class="comment">    /// \brief Subtracts the given scalar from the elements of the given column.</span>
+<a name="l00254"></a><a class="code" href="classPBQP_1_1Matrix.html#a07594300341401245817a701f4fc2946">00254</a> <span class="comment"></span>    <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a>& <a class="code" href="classPBQP_1_1Matrix.html#a07594300341401245817a701f4fc2946" title="Subtracts the given scalar from the elements of the given column.">subFromCol</a>(<span class="keywordtype">unsigned</span> c, <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a> val) {
+<a name="l00255"></a>00255       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> r = 0; r < rows; ++r)
+<a name="l00256"></a>00256         (*<span class="keyword">this</span>)[r][c] -= val;
+<a name="l00257"></a>00257       <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00258"></a>00258     }
+<a name="l00259"></a>00259 <span class="comment"></span>
+<a name="l00260"></a>00260 <span class="comment">    /// \brief Returns true if this is a zero matrix.</span>
+<a name="l00261"></a><a class="code" href="classPBQP_1_1Matrix.html#ae24514157ebf94360b16cbac9ec23213">00261</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classPBQP_1_1Matrix.html#ae24514157ebf94360b16cbac9ec23213" title="Returns true if this is a zero matrix.">isZero</a>()<span class="keyword"> const </span>{
+<a name="l00262"></a>00262       <span class="keywordflow">return</span> find_if(data, data + (rows * cols),
+<a name="l00263"></a>00263           std::bind2nd(std::not_equal_to<PBQPNum>(), 0)) ==
+<a name="l00264"></a>00264         data + (rows * cols);
+<a name="l00265"></a>00265     }
+<a name="l00266"></a>00266 
+<a name="l00267"></a>00267   <span class="keyword">private</span>:
+<a name="l00268"></a>00268     <span class="keywordtype">unsigned</span> rows, cols;
+<a name="l00269"></a>00269     <a class="code" href="namespacePBQP.html#a48fb0d5e4b0039c500b48f4375da8bea">PBQPNum</a> *data;
+<a name="l00270"></a>00270 };
+<a name="l00271"></a>00271 <span class="comment"></span>
+<a name="l00272"></a>00272 <span class="comment">/// \brief Output a textual representation of the given matrix on the given</span>
+<a name="l00273"></a>00273 <span class="comment">///        output stream.</span>
+<a name="l00274"></a>00274 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">typename</span> OStream>
+<a name="l00275"></a><a class="code" href="namespacePBQP.html#a38dfa45d1ab46d5d98a0de6b2e2e96b5">00275</a> OStream& <a class="code" href="namespacePBQP.html#a4bf823978b0700b22a803e7236cfe159" title="Output a textual representation of the given vector on the given output stream.">operator<<</a>(OStream &os, <span class="keyword">const</span> <a class="code" href="classPBQP_1_1Matrix.html" title="PBQP Matrix class.">Matrix</a> &m) {
+<a name="l00276"></a>00276 
+<a name="l00277"></a>00277   assert((m.<a class="code" href="classPBQP_1_1Matrix.html#aef97f8816fe8c90957aa77650e201f28" title="Return the number of rows in this matrix.">getRows</a>() != 0) && <span class="stringliteral">"Zero-row matrix badness."</span>);
+<a name="l00278"></a>00278 
+<a name="l00279"></a>00279   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < m.<a class="code" href="classPBQP_1_1Matrix.html#aef97f8816fe8c90957aa77650e201f28" title="Return the number of rows in this matrix.">getRows</a>(); ++i) {
+<a name="l00280"></a>00280     os << m.<a class="code" href="classPBQP_1_1Matrix.html#a883fe95eb19de5b06f5b9134d40e56ed" title="Returns the given row as a vector.">getRowAsVector</a>(i);
+<a name="l00281"></a>00281   }
+<a name="l00282"></a>00282 
+<a name="l00283"></a>00283   <span class="keywordflow">return</span> os;
+<a name="l00284"></a>00284 }
+<a name="l00285"></a>00285 
+<a name="l00286"></a>00286 }
+<a name="l00287"></a>00287 
+<a name="l00288"></a>00288 <span class="preprocessor">#endif // LLVM_CODEGEN_PBQP_MATH_H</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:43 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/MaximumSpanningTree_8h__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MaximumSpanningTree_8h__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MaximumSpanningTree_8h__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/MaximumSpanningTree_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MaximumSpanningTree_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MaximumSpanningTree_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MaximumSpanningTree_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,167 @@
+<!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: MaximumSpanningTree.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_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="headertitle">
+<div class="title">MaximumSpanningTree.h</div>  </div>
+</div>
+<div class="contents">
+<a href="MaximumSpanningTree_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/Analysis/MaximumSpanningTree.h - Interface ----------*- 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 module provides means for calculating a maximum spanning tree for a</span>
+<a name="l00011"></a>00011 <span class="comment">// given set of weighted edges. The type parameter T is the type of a node.</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_ANALYSIS_MAXIMUMSPANNINGTREE_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_ANALYSIS_MAXIMUMSPANNINGTREE_H</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="BasicBlock_8h.html">llvm/BasicBlock.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="EquivalenceClasses_8h.html">llvm/ADT/EquivalenceClasses.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <vector></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <algorithm></span>
+<a name="l00022"></a>00022 
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>llvm {
+<a name="l00024"></a>00024 <span class="comment"></span>
+<a name="l00025"></a>00025 <span class="comment">  /// MaximumSpanningTree - A MST implementation.</span>
+<a name="l00026"></a>00026 <span class="comment">  /// The type parameter T determines the type of the nodes of the graph.</span>
+<a name="l00027"></a>00027 <span class="comment"></span>  <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00028"></a><a class="code" href="classllvm_1_1MaximumSpanningTree.html">00028</a>   <span class="keyword">class </span><a class="code" href="classllvm_1_1MaximumSpanningTree.html">MaximumSpanningTree</a> {
+<a name="l00029"></a>00029   <span class="keyword">public</span>:
+<a name="l00030"></a><a class="code" href="classllvm_1_1MaximumSpanningTree.html#abe7d0b3629fcad4b918c08252d9f19ba">00030</a>     <span class="keyword">typedef</span> std::pair<const T*, const T*> <a class="code" href="classllvm_1_1MaximumSpanningTree.html#abe7d0b3629fcad4b918c08252d9f19ba">Edge</a>;
+<a name="l00031"></a><a class="code" href="classllvm_1_1MaximumSpanningTree.html#acec424d838db78b6408070a29cee49b3">00031</a>     <span class="keyword">typedef</span> std::pair<Edge, double> <a class="code" href="classllvm_1_1MaximumSpanningTree.html#acec424d838db78b6408070a29cee49b3">EdgeWeight</a>;
+<a name="l00032"></a><a class="code" href="classllvm_1_1MaximumSpanningTree.html#ae59ca807c28cea9a7301616e670195e5">00032</a>     <span class="keyword">typedef</span> std::vector<EdgeWeight> <a class="code" href="classllvm_1_1MaximumSpanningTree.html#ae59ca807c28cea9a7301616e670195e5">EdgeWeights</a>;
+<a name="l00033"></a>00033   <span class="keyword">protected</span>:
+<a name="l00034"></a><a class="code" href="classllvm_1_1MaximumSpanningTree.html#a66d78183ceccdda51bdb0d14d6686174">00034</a>     <span class="keyword">typedef</span> std::vector<Edge> <a class="code" href="classllvm_1_1MaximumSpanningTree.html#a66d78183ceccdda51bdb0d14d6686174">MaxSpanTree</a>;
+<a name="l00035"></a>00035 
+<a name="l00036"></a><a class="code" href="classllvm_1_1MaximumSpanningTree.html#a7bda0f0da025d2e0ea7c9c5bce3855e4">00036</a>     <a class="code" href="classllvm_1_1MaximumSpanningTree.html#a66d78183ceccdda51bdb0d14d6686174">MaxSpanTree</a> <a class="code" href="classllvm_1_1MaximumSpanningTree.html#a7bda0f0da025d2e0ea7c9c5bce3855e4">MST</a>;
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038   <span class="keyword">private</span>:
+<a name="l00039"></a>00039     <span class="comment">// A comparing class for comparing weighted edges.</span>
+<a name="l00040"></a>00040     <span class="keyword">struct </span>EdgeWeightCompare {
+<a name="l00041"></a>00041       <span class="keyword">static</span> <span class="keywordtype">bool</span> getBlockSize(<span class="keyword">const</span> T *<a class="code" href="namespacellvm.html#a6569d00d31a5d74e563e2f39f82271ab">X</a>) {
+<a name="l00042"></a>00042         <span class="keyword">const</span> <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB = dyn_cast_or_null<BasicBlock>(<a class="code" href="namespacellvm.html#a6569d00d31a5d74e563e2f39f82271ab">X</a>);
+<a name="l00043"></a>00043         <span class="keywordflow">return</span> BB ? BB-><a class="code" href="classllvm_1_1BasicBlock.html#aed28607f3ab19dda7ec1cf1a0319276f">size</a>() : 0;
+<a name="l00044"></a>00044       }
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046       <span class="keywordtype">bool</span> operator()(<a class="code" href="classllvm_1_1MaximumSpanningTree.html#acec424d838db78b6408070a29cee49b3">EdgeWeight</a> X, <a class="code" href="classllvm_1_1MaximumSpanningTree.html#acec424d838db78b6408070a29cee49b3">EdgeWeight</a> <a class="code" href="OcamlGCPrinter_8cpp.html#a1bdbcdc4205781eefd549946d40ff378">Y</a>)<span class="keyword"> const </span>{
+<a name="l00047"></a>00047         <span class="keywordflow">if</span> (X.second > Y.second) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00048"></a>00048         <span class="keywordflow">if</span> (X.second < Y.second) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00049"></a>00049 
+<a name="l00050"></a>00050         <span class="comment">// Equal edge weights: break ties by comparing block sizes.</span>
+<a name="l00051"></a>00051         <span class="keywordtype">size_t</span> XSizeA = getBlockSize(X.first.first);
+<a name="l00052"></a>00052         <span class="keywordtype">size_t</span> YSizeA = getBlockSize(Y.first.first);
+<a name="l00053"></a>00053         <span class="keywordflow">if</span> (XSizeA > YSizeA) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00054"></a>00054         <span class="keywordflow">if</span> (XSizeA < YSizeA) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056         <span class="keywordtype">size_t</span> XSizeB = getBlockSize(X.first.second);
+<a name="l00057"></a>00057         <span class="keywordtype">size_t</span> YSizeB = getBlockSize(Y.first.second);
+<a name="l00058"></a>00058         <span class="keywordflow">if</span> (XSizeB > YSizeB) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00059"></a>00059         <span class="keywordflow">if</span> (XSizeB < YSizeB) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00060"></a>00060 
+<a name="l00061"></a>00061         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00062"></a>00062       }
+<a name="l00063"></a>00063     };
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065   <span class="keyword">public</span>:
+<a name="l00066"></a><a class="code" href="classllvm_1_1MaximumSpanningTree.html#a939c854f1e1fb1a9192d17cbbeb17971">00066</a>     <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1MaximumSpanningTree.html#a939c854f1e1fb1a9192d17cbbeb17971">ID</a>; <span class="comment">// Class identification, replacement for typeinfo</span>
+<a name="l00067"></a>00067 <span class="comment"></span>
+<a name="l00068"></a>00068 <span class="comment">    /// MaximumSpanningTree() - Takes a vector of weighted edges and returns a</span>
+<a name="l00069"></a>00069 <span class="comment">    /// spanning tree.</span>
+<a name="l00070"></a><a class="code" href="classllvm_1_1MaximumSpanningTree.html#aa7641761329743b44d864b22530e9dc4">00070</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MaximumSpanningTree.html#aa7641761329743b44d864b22530e9dc4">MaximumSpanningTree</a>(<a class="code" href="classllvm_1_1MaximumSpanningTree.html#ae59ca807c28cea9a7301616e670195e5">EdgeWeights</a> &EdgeVector) {
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072       std::stable_sort(EdgeVector.begin(), EdgeVector.end(), EdgeWeightCompare());
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074       <span class="comment">// Create spanning tree, Forest contains a special data structure</span>
+<a name="l00075"></a>00075       <span class="comment">// that makes checking if two nodes are already in a common (sub-)tree</span>
+<a name="l00076"></a>00076       <span class="comment">// fast and cheap.</span>
+<a name="l00077"></a>00077       <a class="code" href="classllvm_1_1EquivalenceClasses.html">EquivalenceClasses<const T*></a> Forest;
+<a name="l00078"></a>00078       <span class="keywordflow">for</span> (<span class="keyword">typename</span> EdgeWeights::iterator EWi = EdgeVector.begin(),
+<a name="l00079"></a>00079            EWe = EdgeVector.end(); EWi != EWe; ++EWi) {
+<a name="l00080"></a>00080         <a class="code" href="classllvm_1_1MaximumSpanningTree.html#abe7d0b3629fcad4b918c08252d9f19ba">Edge</a> e = (*EWi).first;
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082         Forest.<a class="code" href="classllvm_1_1EquivalenceClasses.html#a902c4503f25e4565da04114268650985">insert</a>(e.first);
+<a name="l00083"></a>00083         Forest.insert(e.second);
+<a name="l00084"></a>00084       }
+<a name="l00085"></a>00085 
+<a name="l00086"></a>00086       <span class="comment">// Iterate over the sorted edges, biggest first.</span>
+<a name="l00087"></a>00087       <span class="keywordflow">for</span> (<span class="keyword">typename</span> EdgeWeights::iterator EWi = EdgeVector.begin(),
+<a name="l00088"></a>00088            EWe = EdgeVector.end(); EWi != EWe; ++EWi) {
+<a name="l00089"></a>00089         <a class="code" href="classllvm_1_1MaximumSpanningTree.html#abe7d0b3629fcad4b918c08252d9f19ba">Edge</a> e = (*EWi).first;
+<a name="l00090"></a>00090 
+<a name="l00091"></a>00091         <span class="keywordflow">if</span> (Forest.findLeader(e.first) != Forest.findLeader(e.second)) {
+<a name="l00092"></a>00092           Forest.unionSets(e.first, e.second);
+<a name="l00093"></a>00093           <span class="comment">// So we know now that the edge is not already in a subtree, so we push</span>
+<a name="l00094"></a>00094           <span class="comment">// the edge to the MST.</span>
+<a name="l00095"></a>00095           <a class="code" href="classllvm_1_1MaximumSpanningTree.html#a7bda0f0da025d2e0ea7c9c5bce3855e4">MST</a>.push_back(e);
+<a name="l00096"></a>00096         }
+<a name="l00097"></a>00097       }
+<a name="l00098"></a>00098     }
+<a name="l00099"></a>00099 
+<a name="l00100"></a><a class="code" href="classllvm_1_1MaximumSpanningTree.html#aff10364ff152e3b1cc1a5abb2ad6796b">00100</a>     <span class="keyword">typename</span> MaxSpanTree::iterator <a class="code" href="classllvm_1_1MaximumSpanningTree.html#aff10364ff152e3b1cc1a5abb2ad6796b">begin</a>() {
+<a name="l00101"></a>00101       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MaximumSpanningTree.html#a7bda0f0da025d2e0ea7c9c5bce3855e4">MST</a>.begin();
+<a name="l00102"></a>00102     }
+<a name="l00103"></a>00103 
+<a name="l00104"></a><a class="code" href="classllvm_1_1MaximumSpanningTree.html#a1f0d9814be418993d77262a632fdf43b">00104</a>     <span class="keyword">typename</span> MaxSpanTree::iterator <a class="code" href="classllvm_1_1MaximumSpanningTree.html#a1f0d9814be418993d77262a632fdf43b">end</a>() {
+<a name="l00105"></a>00105       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MaximumSpanningTree.html#a7bda0f0da025d2e0ea7c9c5bce3855e4">MST</a>.end();
+<a name="l00106"></a>00106     }
+<a name="l00107"></a>00107   };
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109 } <span class="comment">// End llvm namespace</span>
+<a name="l00110"></a>00110 
+<a name="l00111"></a>00111 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:43 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/MemCpyOptimizer_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemCpyOptimizer_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MemCpyOptimizer_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MemCpyOptimizer_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,409 @@
+<!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: MemCpyOptimizer.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_22ea62e2015f6a823fddac4ac38ba517.html">Transforms</a>      </li>
+      <li class="navelem"><a class="el" href="dir_19df7bbd99eeba0b048ee47f392d9ea7.html">Scalar</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Defines</a> |
+<a href="#func-members">Functions</a> |
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">MemCpyOptimizer.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Transforms_2Scalar_8h_source.html">llvm/Transforms/Scalar.h</a>"</code><br/>
+<code>#include "<a class="el" href="GlobalVariable_8h_source.html">llvm/GlobalVariable.h</a>"</code><br/>
+<code>#include "<a class="el" href="IRBuilder_8h_source.html">llvm/IRBuilder.h</a>"</code><br/>
+<code>#include "<a class="el" href="Instructions_8h_source.html">llvm/Instructions.h</a>"</code><br/>
+<code>#include "<a class="el" href="IntrinsicInst_8h_source.html">llvm/IntrinsicInst.h</a>"</code><br/>
+<code>#include "<a class="el" href="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="AliasAnalysis_8h_source.html">llvm/Analysis/AliasAnalysis.h</a>"</code><br/>
+<code>#include "<a class="el" href="Dominators_8h_source.html">llvm/Analysis/Dominators.h</a>"</code><br/>
+<code>#include "<a class="el" href="MemoryDependenceAnalysis_8h_source.html">llvm/Analysis/MemoryDependenceAnalysis.h</a>"</code><br/>
+<code>#include "<a class="el" href="ValueTracking_8h_source.html">llvm/Analysis/ValueTracking.h</a>"</code><br/>
+<code>#include "<a class="el" href="Debug_8h_source.html">llvm/Support/Debug.h</a>"</code><br/>
+<code>#include "<a class="el" href="GetElementPtrTypeIterator_8h_source.html">llvm/Support/GetElementPtrTypeIterator.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="TargetLibraryInfo_8h_source.html">llvm/Target/TargetLibraryInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="Local_8h_source.html">llvm/Transforms/Utils/Local.h</a>"</code><br/>
+<code>#include <list></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for MemCpyOptimizer.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="MemCpyOptimizer_8cpp__incl.png" border="0" usemap="#MemCpyOptimizer_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="MemCpyOptimizer_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="MemCpyOptimizer_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "memcpyopt"</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="MemCpyOptimizer_8cpp.html#ae52446f66e9897ccb698024fadedcdbb">STATISTIC</a> (NumMemCpyInstr,"Number of memcpy <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a> deleted")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemCpyOptimizer_8cpp.html#ac97cea4b6d3dff2af9938303a331612b">STATISTIC</a> (NumMemSetInfer,"Number of memsets inferred")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemCpyOptimizer_8cpp.html#a2573158cf31792828616dfa90a95b702">STATISTIC</a> (NumMoveToCpy,"Number of memmoves converted to memcpy")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemCpyOptimizer_8cpp.html#a6121a96d558c255ba4bb6fc93d1eb39a">STATISTIC</a> (NumCpyToSet,"Number of memcpys converted to memset")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classint64__t.html">int64_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemCpyOptimizer_8cpp.html#a550b438e70324776ea328ac8248dc268">GetOffsetFromIndex</a> (const <a class="el" href="classllvm_1_1GEPOperator.html">GEPOperator</a> *GEP, <a class="el" href="classunsigned.html">unsigned</a> Idx, <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> &VariableIdxFound, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemCpyOptimizer_8cpp.html#a6ee1a66b9681fb20cdc5f8ec6b59bef5">IsPointerOffset</a> (<a class="el" href="classllvm_1_1Value.html">Value</a> *Ptr1, <a class="el" href="classllvm_1_1Value.html">Value</a> *Ptr2, <a class="el" href="classint64__t.html">int64_t</a> &Offset, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemCpyOptimizer_8cpp.html#a66eab13a579e3333b0ab115781f01a0d">INITIALIZE_PASS_BEGIN</a> (MemCpyOpt,"memcpyopt","MemCpy <a class="el" href="MemCpyOptimizer_8cpp.html#a4c36a0753cd006d97b1aee018fe423bc">Optimization</a>", false, <a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>) INITIALIZE_PASS_END(MemCpyOpt</td></tr>
+<tr><td colspan="2"><h2><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemCpyOptimizer_8cpp.html#a7530261f1f6c8e08347b485f8ffe90b4">memcpyopt</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">MemCpy </td><td class="memItemRight" valign="bottom"><a class="el" href="MemCpyOptimizer_8cpp.html#a4c36a0753cd006d97b1aee018fe423bc">Optimization</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">MemCpy </td><td class="memItemRight" valign="bottom"><a class="el" href="MemCpyOptimizer_8cpp.html#a40e09c8c543c66f1b9a5d30d28da2086">false</a></td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="MemCpyOptimizer.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "memcpyopt"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="MemCpyOptimizer_8cpp_source.html#l00015">15</a> of file <a class="el" href="MemCpyOptimizer_8cpp_source.html">MemCpyOptimizer.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a550b438e70324776ea328ac8248dc268"></a><!-- doxytag: member="MemCpyOptimizer.cpp::GetOffsetFromIndex" ref="a550b438e70324776ea328ac8248dc268" args="(const GEPOperator *GEP, unsigned Idx, bool &VariableIdxFound, const DataLayout &TD)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classint64__t.html">int64_t</a> GetOffsetFromIndex </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1GEPOperator.html">GEPOperator</a> * </td>
+          <td class="paramname"><em>GEP</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Idx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> & </td>
+          <td class="paramname"><em>VariableIdxFound</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> & </td>
+          <td class="paramname"><em>TD</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="MemCpyOptimizer_8cpp_source.html#l00041">41</a> of file <a class="el" href="MemCpyOptimizer_8cpp_source.html">MemCpyOptimizer.cpp</a>.</p>
+
+<p>References <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="GetElementPtrTypeIterator_8h_source.html#l00085">llvm::gep_type_begin()</a>, <a class="el" href="DataLayout_8h_source.html#l00413">llvm::StructLayout::getElementOffset()</a>, <a class="el" href="GetElementPtrTypeIterator_8h_source.html#l00057">llvm::generic_gep_type_iterator< ItTy >::getIndexedType()</a>, <a class="el" href="User_8h_source.html#l00108">llvm::User::getNumOperands()</a>, <a class="el" href="User_8h_source.html#l00088">llvm::User::getOperand()</a>, <a class="el" href="Constants_8h_source.html#l00125">llvm::ConstantInt::getSExtValue()</a>, <a class="el" href="DataLayout_8cpp_source.html#l00462">llvm::DataLayout::getStructLayout()</a>, <a class="el" href="DataLayout_8h_source.html#l00308">llvm::DataLayout::getTypeAllocSize()</a>, <a class="el" href="Constants_8h_source.html#l00116">llvm::ConstantInt::getZExtValue()</a>, and <a class="el" href="Constant
 s_8h_source.html#l00161">llvm::ConstantInt::isZero()</a>.</p>
+
+<p>Referenced by <a class="el" href="MemCpyOptimizer_8cpp_source.html#l00074">IsPointerOffset()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a66eab13a579e3333b0ab115781f01a0d"></a><!-- doxytag: member="MemCpyOptimizer.cpp::INITIALIZE_PASS_BEGIN" ref="a66eab13a579e3333b0ab115781f01a0d" args="(MemCpyOpt,"memcpyopt","MemCpy Optimization", false, false) INITIALIZE_PASS_END(MemCpyOpt" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">INITIALIZE_PASS_BEGIN </td>
+          <td>(</td>
+          <td class="paramtype">MemCpyOpt </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"memcpyopt" </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"MemCpy <a class="el" href="MemCpyOptimizer_8cpp.html#a4c36a0753cd006d97b1aee018fe423bc">Optimization</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 class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a> </td>
+          <td class="paramname"> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a6ee1a66b9681fb20cdc5f8ec6b59bef5"></a><!-- doxytag: member="MemCpyOptimizer.cpp::IsPointerOffset" ref="a6ee1a66b9681fb20cdc5f8ec6b59bef5" args="(Value *Ptr1, Value *Ptr2, int64_t &Offset, const DataLayout &TD)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> IsPointerOffset </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>Ptr1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>Ptr2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classint64__t.html">int64_t</a> & </td>
+          <td class="paramname"><em>Offset</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> & </td>
+          <td class="paramname"><em>TD</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>IsPointerOffset - Return true if Ptr1 is provably equal to Ptr2 plus a constant offset, and return that constant offset. For example, Ptr1 might be &A[42], and Ptr2 might be &A[40]. In this case offset would be -8. </p>
+
+<p>Definition at line <a class="el" href="MemCpyOptimizer_8cpp_source.html#l00074">74</a> of file <a class="el" href="MemCpyOptimizer_8cpp_source.html">MemCpyOptimizer.cpp</a>.</p>
+
+<p>References <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="User_8h_source.html#l00108">llvm::User::getNumOperands()</a>, <a class="el" href="MemCpyOptimizer_8cpp_source.html#l00041">GetOffsetFromIndex()</a>, <a class="el" href="User_8h_source.html#l00088">llvm::User::getOperand()</a>, and <a class="el" href="Value_8cpp_source.html#l00376">llvm::Value::stripPointerCasts()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae52446f66e9897ccb698024fadedcdbb"></a><!-- doxytag: member="MemCpyOptimizer.cpp::STATISTIC" ref="ae52446f66e9897ccb698024fadedcdbb" args="(NumMemCpyInstr,"Number of memcpy instructions deleted")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumMemCpyInstr </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of memcpy <a class="el" href="SimplifyInstructions_8cpp.html#afbf38da490ab8cea559fee0c9081db06">instructions</a> deleted" </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="ac97cea4b6d3dff2af9938303a331612b"></a><!-- doxytag: member="MemCpyOptimizer.cpp::STATISTIC" ref="ac97cea4b6d3dff2af9938303a331612b" args="(NumMemSetInfer,"Number of memsets inferred")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumMemSetInfer </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of memsets inferred" </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="a2573158cf31792828616dfa90a95b702"></a><!-- doxytag: member="MemCpyOptimizer.cpp::STATISTIC" ref="a2573158cf31792828616dfa90a95b702" args="(NumMoveToCpy,"Number of memmoves converted to memcpy")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumMoveToCpy </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of memmoves converted to memcpy" </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="a6121a96d558c255ba4bb6fc93d1eb39a"></a><!-- doxytag: member="MemCpyOptimizer.cpp::STATISTIC" ref="a6121a96d558c255ba4bb6fc93d1eb39a" args="(NumCpyToSet,"Number of memcpys converted to memset")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumCpyToSet </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of memcpys converted to memset" </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="a40e09c8c543c66f1b9a5d30d28da2086"></a><!-- doxytag: member="MemCpyOptimizer.cpp::false" ref="a40e09c8c543c66f1b9a5d30d28da2086" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">MemCpy <a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="MemCpyOptimizer_8cpp_source.html#l00357">357</a> of file <a class="el" href="MemCpyOptimizer_8cpp_source.html">MemCpyOptimizer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7530261f1f6c8e08347b485f8ffe90b4"></a><!-- doxytag: member="MemCpyOptimizer.cpp::memcpyopt" ref="a7530261f1f6c8e08347b485f8ffe90b4" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="MemCpyOptimizer_8cpp.html#a7530261f1f6c8e08347b485f8ffe90b4">memcpyopt</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="MemCpyOptimizer_8cpp_source.html#l00357">357</a> of file <a class="el" href="MemCpyOptimizer_8cpp_source.html">MemCpyOptimizer.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4c36a0753cd006d97b1aee018fe423bc"></a><!-- doxytag: member="MemCpyOptimizer.cpp::Optimization" ref="a4c36a0753cd006d97b1aee018fe423bc" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">MemCpy <a class="el" href="MemCpyOptimizer_8cpp.html#a4c36a0753cd006d97b1aee018fe423bc">Optimization</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="MemCpyOptimizer_8cpp_source.html#l00357">357</a> of file <a class="el" href="MemCpyOptimizer_8cpp_source.html">MemCpyOptimizer.cpp</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:36 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/MemCpyOptimizer_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemCpyOptimizer_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MemCpyOptimizer_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MemCpyOptimizer_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,43 @@
+<map id="G" name="G">
+<area shape="rect" href="$Transforms_2Scalar_8h.html" title="llvm/Transforms/Scalar.h" alt="" coords="5,84,181,111"/>
+<area shape="rect" href="$GlobalVariable_8h.html" title="llvm/GlobalVariable.h" alt="" coords="1125,316,1280,343"/>
+<area shape="rect" href="$IRBuilder_8h.html" title="llvm/IRBuilder.h" alt="" coords="1963,161,2080,188"/>
+<area shape="rect" href="$Instructions_8h.html" title="llvm/Instructions.h" alt="" coords="1303,239,1439,265"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="1233,625,1401,652"/>
+<area shape="rect" href="$DataLayout_8h.html" title="llvm/DataLayout.h" alt="" coords="1524,239,1660,265"/>
+<area shape="rect" href="$IntrinsicInst_8h.html" title="llvm/IntrinsicInst.h" alt="" coords="1303,161,1439,188"/>
+<area shape="rect" href="$Statistic_8h.html" title="llvm/ADT/Statistic.h" alt="" coords="2677,84,2821,111"/>
+<area shape="rect" href="$AliasAnalysis_8h.html" title="llvm/Analysis/AliasAnalysis.h" alt="" coords="2104,161,2304,188"/>
+<area shape="rect" href="$Dominators_8h.html" title="llvm/Analysis/Dominators.h" alt="" coords="2445,239,2640,265"/>
+<area shape="rect" href="$raw__ostream_8h.html" title="llvm/Support/raw_ostream.h" alt="" coords="2640,548,2840,575"/>
+<area shape="rect" href="$MemoryDependenceAnalysis_8h.html" title="llvm/Analysis/MemoryDependenceAnalysis.h" alt="" coords="2052,84,2356,111"/>
+<area shape="rect" href="$ValueTracking_8h.html" title="llvm/Analysis/ValueTracking.h" alt="" coords="256,239,461,265"/>
+<area shape="rect" href="$Debug_8h.html" title="llvm/Support/Debug.h" alt="" coords="2845,84,3005,111"/>
+<area shape="rect" href="$GetElementPtrTypeIterator_8h.html" title="llvm/Support/GetElementPtrTypeIterator.h" alt="" coords="1653,161,1939,188"/>
+<area shape="rect" href="$TargetLibraryInfo_8h.html" title="llvm/Target/TargetLibraryInfo.h" alt="" coords="3029,84,3240,111"/>
+<area shape="rect" href="$Local_8h.html" title="llvm/Transforms/Utils/Local.h" alt="" coords="1699,84,1901,111"/>
+<area shape="rect" href="$GlobalValue_8h.html" title="llvm/GlobalValue.h" alt="" coords="1555,393,1693,420"/>
+<area shape="rect" href="$OperandTraits_8h.html" title="llvm/OperandTraits.h" alt="" coords="1128,548,1280,575"/>
+<area shape="rect" href="$ilist__node_8h.html" title="llvm/ADT/ilist_node.h" alt="" coords="1027,393,1179,420"/>
+<area shape="rect" href="$Twine_8h.html" title="llvm/ADT/Twine.h" alt="" coords="2232,471,2357,497"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="2085,625,2235,652"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="2309,548,2515,575"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="1697,703,1884,729"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="1949,780,2123,807"/>
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="533,548,677,575"/>
+<area shape="rect" href="$LLVMContext_8h.html" title="llvm/LLVMContext.h" alt="" coords="2011,471,2157,497"/>
+<area shape="rect" href="$BasicBlock_8h.html" title="llvm/BasicBlock.h" alt="" coords="2333,393,2464,420"/>
+<area shape="rect" href="$ConstantFolder_8h.html" title="llvm/Support/ConstantFolder.h" alt="" coords="1405,316,1619,343"/>
+<area shape="rect" href="$InstrTypes_8h.html" title="llvm/InstrTypes.h" alt="" coords="1405,393,1531,420"/>
+<area shape="rect" href="$DerivedTypes_8h.html" title="llvm/DerivedTypes.h" alt="" coords="1405,471,1552,497"/>
+<area shape="rect" href="$Attributes_8h.html" title="llvm/Attributes.h" alt="" coords="1764,471,1889,497"/>
+<area shape="rect" href="$CallingConv_8h.html" title="llvm/CallingConv.h" alt="" coords="1869,393,2005,420"/>
+<area shape="rect" href="$IntegersSubset_8h.html" title="llvm/Support/IntegersSubset.h" alt="" coords="787,393,1003,420"/>
+<area shape="rect" href="$IntegersSubsetMapping_8h.html" title="llvm/Support/IntegersSubsetMapping.h" alt="" coords="781,316,1051,343"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="1372,703,1535,729"/>
+<area shape="rect" href="$Constants_8h.html" title="llvm/Constants.h" alt="" coords="831,471,959,497"/>
+<area shape="rect" href="$Function_8h.html" title="llvm/Function.h" alt="" coords="1941,316,2056,343"/>
+<area shape="rect" href="$Intrinsics_8h.html" title="llvm/Intrinsics.h" alt="" coords="536,239,656,265"/>
+<area shape="rect" href="$Atomic_8h.html" title="llvm/Support/Atomic.h" alt="" coords="2677,161,2840,188"/>
+<area shape="rect" href="$Valgrind_8h.html" title="llvm/Support/Valgrind.h" alt="" coords="2763,625,2931,652"/>
+</map>

Added: www-releases/trunk/3.2/docs/doxygen/html/MemCpyOptimizer_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemCpyOptimizer_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MemCpyOptimizer_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MemCpyOptimizer_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,1076 @@
+<!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: MemCpyOptimizer.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_22ea62e2015f6a823fddac4ac38ba517.html">Transforms</a>      </li>
+      <li class="navelem"><a class="el" href="dir_19df7bbd99eeba0b048ee47f392d9ea7.html">Scalar</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">MemCpyOptimizer.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="MemCpyOptimizer_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- MemCpyOptimizer.cpp - Optimize use of memcpy and friends -----------===//</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 pass performs various transformations related to eliminating memcpy</span>
+<a name="l00011"></a>00011 <span class="comment">// calls, or transforming sets of stores into memset's.</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><a class="code" href="MemCpyOptimizer_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">00015</a> <span class="preprocessor">#define DEBUG_TYPE "memcpyopt"</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="Transforms_2Scalar_8h.html">llvm/Transforms/Scalar.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="GlobalVariable_8h.html">llvm/GlobalVariable.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="IRBuilder_8h.html">llvm/IRBuilder.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="Instructions_8h.html">llvm/Instructions.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="IntrinsicInst_8h.html">llvm/IntrinsicInst.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="SmallVector_8h.html">llvm/ADT/SmallVector.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="Statistic_8h.html">llvm/ADT/Statistic.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="AliasAnalysis_8h.html">llvm/Analysis/AliasAnalysis.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="Dominators_8h.html">llvm/Analysis/Dominators.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="MemoryDependenceAnalysis_8h.html">llvm/Analysis/MemoryDependenceAnalysis.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="ValueTracking_8h.html">llvm/Analysis/ValueTracking.h</a>"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="Debug_8h.html">llvm/Support/Debug.h</a>"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="GetElementPtrTypeIterator_8h.html">llvm/Support/GetElementPtrTypeIterator.h</a>"</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="DataLayout_8h.html">llvm/DataLayout.h</a>"</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="TargetLibraryInfo_8h.html">llvm/Target/TargetLibraryInfo.h</a>"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="Local_8h.html">llvm/Transforms/Utils/Local.h</a>"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include <list></span>
+<a name="l00034"></a>00034 <span class="keyword">using namespace </span>llvm;
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumMemCpyInstr, <span class="stringliteral">"Number of memcpy instructions deleted"</span>);
+<a name="l00037"></a>00037 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumMemSetInfer, <span class="stringliteral">"Number of memsets inferred"</span>);
+<a name="l00038"></a>00038 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumMoveToCpy,   <span class="stringliteral">"Number of memmoves converted to memcpy"</span>);
+<a name="l00039"></a>00039 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumCpyToSet,    <span class="stringliteral">"Number of memcpys converted to memset"</span>);
+<a name="l00040"></a>00040 
+<a name="l00041"></a><a class="code" href="MemCpyOptimizer_8cpp.html#a550b438e70324776ea328ac8248dc268">00041</a> <span class="keyword">static</span> <a class="code" href="classint64__t.html">int64_t</a> <a class="code" href="MemCpyOptimizer_8cpp.html#a550b438e70324776ea328ac8248dc268">GetOffsetFromIndex</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1GEPOperator.html">GEPOperator</a> *GEP, <span class="keywordtype">unsigned</span> Idx,
+<a name="l00042"></a>00042                                   <span class="keywordtype">bool</span> &VariableIdxFound, <span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD){
+<a name="l00043"></a>00043   <span class="comment">// Skip over the first indices.</span>
+<a name="l00044"></a>00044   <a class="code" href="classllvm_1_1generic__gep__type__iterator.html">gep_type_iterator</a> GTI = <a class="code" href="namespacellvm.html#ac828b9b52935f87659a4adf237f820a3">gep_type_begin</a>(GEP);
+<a name="l00045"></a>00045   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1; i != Idx; ++i, ++GTI)
+<a name="l00046"></a>00046     <span class="comment">/*skip along*/</span>;
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048   <span class="comment">// Compute the offset implied by the rest of the indices.</span>
+<a name="l00049"></a>00049   <a class="code" href="classint64__t.html">int64_t</a> Offset = 0;
+<a name="l00050"></a>00050   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = Idx, e = GEP-><a class="code" href="classllvm_1_1User.html#a2f81e0c1fc6554df7ad2eafabf5fc5a5">getNumOperands</a>(); i != e; ++i, ++GTI) {
+<a name="l00051"></a>00051     <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *OpC = <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>>(GEP-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(i));
+<a name="l00052"></a>00052     <span class="keywordflow">if</span> (OpC == 0)
+<a name="l00053"></a>00053       <span class="keywordflow">return</span> VariableIdxFound = <span class="keyword">true</span>;
+<a name="l00054"></a>00054     <span class="keywordflow">if</span> (OpC-><a class="code" href="classllvm_1_1ConstantInt.html#ad4ea4748170f687710a54c919dde5625">isZero</a>()) <span class="keywordflow">continue</span>;  <span class="comment">// No offset.</span>
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056     <span class="comment">// Handle struct indices, which add their field offset to the pointer.</span>
+<a name="l00057"></a>00057     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1StructType.html">StructType</a> *STy = dyn_cast<StructType>(*GTI)) {
+<a name="l00058"></a>00058       Offset += TD.<a class="code" href="classllvm_1_1DataLayout.html#a35c840104f32575e0d91422cf1ef3ce4">getStructLayout</a>(STy)-><a class="code" href="classllvm_1_1StructLayout.html#ae10c4483372a357a0d3411b3d64be10c">getElementOffset</a>(OpC-><a class="code" href="classllvm_1_1ConstantInt.html#a6edd823ba5e4e1effc8280ca8a1194ef" title="Return the zero extended value.">getZExtValue</a>());
+<a name="l00059"></a>00059       <span class="keywordflow">continue</span>;
+<a name="l00060"></a>00060     }
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062     <span class="comment">// Otherwise, we have a sequential type like an array or vector.  Multiply</span>
+<a name="l00063"></a>00063     <span class="comment">// the index by the ElementSize.</span>
+<a name="l00064"></a>00064     uint64_t Size = TD.<a class="code" href="classllvm_1_1DataLayout.html#a1d6fcc02e91ba24510aba42660c90e29">getTypeAllocSize</a>(GTI.<a class="code" href="classllvm_1_1generic__gep__type__iterator.html#aa9576aea404b156a949122affc839777">getIndexedType</a>());
+<a name="l00065"></a>00065     Offset += Size*OpC-><a class="code" href="classllvm_1_1ConstantInt.html#a097c2d42e4deffabe6d54b007ad83367" title="Return the sign extended value.">getSExtValue</a>();
+<a name="l00066"></a>00066   }
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068   <span class="keywordflow">return</span> Offset;
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 <span class="comment"></span>
+<a name="l00071"></a>00071 <span class="comment">/// IsPointerOffset - Return true if Ptr1 is provably equal to Ptr2 plus a</span>
+<a name="l00072"></a>00072 <span class="comment">/// constant offset, and return that constant offset.  For example, Ptr1 might</span>
+<a name="l00073"></a>00073 <span class="comment">/// be &A[42], and Ptr2 might be &A[40].  In this case offset would be -8.</span>
+<a name="l00074"></a><a class="code" href="MemCpyOptimizer_8cpp.html#a6ee1a66b9681fb20cdc5f8ec6b59bef5">00074</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="MemCpyOptimizer_8cpp.html#a6ee1a66b9681fb20cdc5f8ec6b59bef5">IsPointerOffset</a>(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ptr1, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ptr2, <a class="code" href="classint64__t.html">int64_t</a> &Offset,
+<a name="l00075"></a>00075                             <span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD) {
+<a name="l00076"></a>00076   Ptr1 = Ptr1-><a class="code" href="classllvm_1_1Value.html#a38ea12c04523d63adda732b9c5d6da0a">stripPointerCasts</a>();
+<a name="l00077"></a>00077   Ptr2 = Ptr2-><a class="code" href="classllvm_1_1Value.html#a38ea12c04523d63adda732b9c5d6da0a">stripPointerCasts</a>();
+<a name="l00078"></a>00078   <a class="code" href="classllvm_1_1GEPOperator.html">GEPOperator</a> *GEP1 = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1GEPOperator.html">GEPOperator</a>>(Ptr1);
+<a name="l00079"></a>00079   <a class="code" href="classllvm_1_1GEPOperator.html">GEPOperator</a> *GEP2 = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1GEPOperator.html">GEPOperator</a>>(Ptr2);
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081   <span class="keywordtype">bool</span> VariableIdxFound = <span class="keyword">false</span>;
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083   <span class="comment">// If one pointer is a GEP and the other isn't, then see if the GEP is a</span>
+<a name="l00084"></a>00084   <span class="comment">// constant offset from the base, as in "P" and "gep P, 1".</span>
+<a name="l00085"></a>00085   <span class="keywordflow">if</span> (GEP1 && GEP2 == 0 && GEP1-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0)-><a class="code" href="classllvm_1_1Value.html#a38ea12c04523d63adda732b9c5d6da0a">stripPointerCasts</a>() == Ptr2) {
+<a name="l00086"></a>00086     Offset = -<a class="code" href="MemCpyOptimizer_8cpp.html#a550b438e70324776ea328ac8248dc268">GetOffsetFromIndex</a>(GEP1, 1, VariableIdxFound, TD);
+<a name="l00087"></a>00087     <span class="keywordflow">return</span> !VariableIdxFound;
+<a name="l00088"></a>00088   }
+<a name="l00089"></a>00089 
+<a name="l00090"></a>00090   <span class="keywordflow">if</span> (GEP2 && GEP1 == 0 && GEP2-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0)-><a class="code" href="classllvm_1_1Value.html#a38ea12c04523d63adda732b9c5d6da0a">stripPointerCasts</a>() == Ptr1) {
+<a name="l00091"></a>00091     Offset = <a class="code" href="MemCpyOptimizer_8cpp.html#a550b438e70324776ea328ac8248dc268">GetOffsetFromIndex</a>(GEP2, 1, VariableIdxFound, TD);
+<a name="l00092"></a>00092     <span class="keywordflow">return</span> !VariableIdxFound;
+<a name="l00093"></a>00093   }
+<a name="l00094"></a>00094 
+<a name="l00095"></a>00095   <span class="comment">// Right now we handle the case when Ptr1/Ptr2 are both GEPs with an identical</span>
+<a name="l00096"></a>00096   <span class="comment">// base.  After that base, they may have some number of common (and</span>
+<a name="l00097"></a>00097   <span class="comment">// potentially variable) indices.  After that they handle some constant</span>
+<a name="l00098"></a>00098   <span class="comment">// offset, which determines their offset from each other.  At this point, we</span>
+<a name="l00099"></a>00099   <span class="comment">// handle no other case.</span>
+<a name="l00100"></a>00100   <span class="keywordflow">if</span> (!GEP1 || !GEP2 || GEP1-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0) != GEP2->getOperand(0))
+<a name="l00101"></a>00101     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00102"></a>00102 
+<a name="l00103"></a>00103   <span class="comment">// Skip any common indices and track the GEP types.</span>
+<a name="l00104"></a>00104   <span class="keywordtype">unsigned</span> Idx = 1;
+<a name="l00105"></a>00105   <span class="keywordflow">for</span> (; Idx != GEP1-><a class="code" href="classllvm_1_1User.html#a2f81e0c1fc6554df7ad2eafabf5fc5a5">getNumOperands</a>() && Idx != GEP2->getNumOperands(); ++Idx)
+<a name="l00106"></a>00106     <span class="keywordflow">if</span> (GEP1-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(Idx) != GEP2->getOperand(Idx))
+<a name="l00107"></a>00107       <span class="keywordflow">break</span>;
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109   <a class="code" href="classint64__t.html">int64_t</a> Offset1 = <a class="code" href="MemCpyOptimizer_8cpp.html#a550b438e70324776ea328ac8248dc268">GetOffsetFromIndex</a>(GEP1, Idx, VariableIdxFound, TD);
+<a name="l00110"></a>00110   <a class="code" href="classint64__t.html">int64_t</a> Offset2 = <a class="code" href="MemCpyOptimizer_8cpp.html#a550b438e70324776ea328ac8248dc268">GetOffsetFromIndex</a>(GEP2, Idx, VariableIdxFound, TD);
+<a name="l00111"></a>00111   <span class="keywordflow">if</span> (VariableIdxFound) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00112"></a>00112 
+<a name="l00113"></a>00113   Offset = Offset2-Offset1;
+<a name="l00114"></a>00114   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116 
+<a name="l00117"></a>00117 <span class="comment"></span>
+<a name="l00118"></a>00118 <span class="comment">/// MemsetRange - Represents a range of memset'd bytes with the ByteVal value.</span>
+<a name="l00119"></a>00119 <span class="comment">/// This allows us to analyze stores like:</span>
+<a name="l00120"></a>00120 <span class="comment">///   store 0 -> P+1</span>
+<a name="l00121"></a>00121 <span class="comment">///   store 0 -> P+0</span>
+<a name="l00122"></a>00122 <span class="comment">///   store 0 -> P+3</span>
+<a name="l00123"></a>00123 <span class="comment">///   store 0 -> P+2</span>
+<a name="l00124"></a>00124 <span class="comment">/// which sometimes happens with stores to arrays of structs etc.  When we see</span>
+<a name="l00125"></a>00125 <span class="comment">/// the first store, we make a range [1, 2).  The second store extends the range</span>
+<a name="l00126"></a>00126 <span class="comment">/// to [0, 2).  The third makes a new range [2, 3).  The fourth store joins the</span>
+<a name="l00127"></a>00127 <span class="comment">/// two ranges into [0, 3) which is memset'able.</span>
+<a name="l00128"></a>00128 <span class="comment"></span><span class="keyword">namespace </span>{
+<a name="l00129"></a>00129 <span class="keyword">struct </span>MemsetRange {
+<a name="l00130"></a>00130   <span class="comment">// Start/End - A semi range that describes the span that this range covers.</span>
+<a name="l00131"></a>00131   <span class="comment">// The range is closed at the start and open at the end: [Start, End).</span>
+<a name="l00132"></a>00132   <a class="code" href="classint64__t.html">int64_t</a> Start, End;
+<a name="l00133"></a>00133 <span class="comment"></span>
+<a name="l00134"></a>00134 <span class="comment">  /// StartPtr - The getelementptr instruction that points to the start of the</span>
+<a name="l00135"></a>00135 <span class="comment">  /// range.</span>
+<a name="l00136"></a>00136 <span class="comment"></span>  <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *StartPtr;
+<a name="l00137"></a>00137 <span class="comment"></span>
+<a name="l00138"></a>00138 <span class="comment">  /// Alignment - The known alignment of the first store.</span>
+<a name="l00139"></a>00139 <span class="comment"></span>  <span class="keywordtype">unsigned</span> Alignment;
+<a name="l00140"></a>00140 <span class="comment"></span>
+<a name="l00141"></a>00141 <span class="comment">  /// TheStores - The actual stores that make up this range.</span>
+<a name="l00142"></a>00142 <span class="comment"></span>  <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Instruction*, 16></a> TheStores;
+<a name="l00143"></a>00143 
+<a name="l00144"></a>00144   <span class="keywordtype">bool</span> isProfitableToUseMemset(<span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD) <span class="keyword">const</span>;
+<a name="l00145"></a>00145 
+<a name="l00146"></a>00146 };
+<a name="l00147"></a>00147 } <span class="comment">// end anon namespace</span>
+<a name="l00148"></a>00148 
+<a name="l00149"></a>00149 <span class="keywordtype">bool</span> MemsetRange::isProfitableToUseMemset(<span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD)<span class="keyword"> const </span>{
+<a name="l00150"></a>00150   <span class="comment">// If we found more than 4 stores to merge or 16 bytes, use memset.</span>
+<a name="l00151"></a>00151   <span class="keywordflow">if</span> (TheStores.size() >= 4 || End-Start >= 16) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00152"></a>00152 
+<a name="l00153"></a>00153   <span class="comment">// If there is nothing to merge, don't do anything.</span>
+<a name="l00154"></a>00154   <span class="keywordflow">if</span> (TheStores.size() < 2) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156   <span class="comment">// If any of the stores are a memset, then it is always good to extend the</span>
+<a name="l00157"></a>00157   <span class="comment">// memset.</span>
+<a name="l00158"></a>00158   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = TheStores.size(); i != e; ++i)
+<a name="l00159"></a>00159     <span class="keywordflow">if</span> (!isa<StoreInst>(TheStores[i]))
+<a name="l00160"></a>00160       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00161"></a>00161 
+<a name="l00162"></a>00162   <span class="comment">// Assume that the code generator is capable of merging pairs of stores</span>
+<a name="l00163"></a>00163   <span class="comment">// together if it wants to.</span>
+<a name="l00164"></a>00164   <span class="keywordflow">if</span> (TheStores.size() == 2) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00165"></a>00165 
+<a name="l00166"></a>00166   <span class="comment">// If we have fewer than 8 stores, it can still be worthwhile to do this.</span>
+<a name="l00167"></a>00167   <span class="comment">// For example, merging 4 i8 stores into an i32 store is useful almost always.</span>
+<a name="l00168"></a>00168   <span class="comment">// However, merging 2 32-bit stores isn't useful on a 32-bit architecture (the</span>
+<a name="l00169"></a>00169   <span class="comment">// memset will be split into 2 32-bit stores anyway) and doing so can</span>
+<a name="l00170"></a>00170   <span class="comment">// pessimize the llvm optimizer.</span>
+<a name="l00171"></a>00171   <span class="comment">//</span>
+<a name="l00172"></a>00172   <span class="comment">// Since we don't have perfect knowledge here, make some assumptions: assume</span>
+<a name="l00173"></a>00173   <span class="comment">// the maximum GPR width is the same size as the pointer size and assume that</span>
+<a name="l00174"></a>00174   <span class="comment">// this width can be stored.  If so, check to see whether we will end up</span>
+<a name="l00175"></a>00175   <span class="comment">// actually reducing the number of stores used.</span>
+<a name="l00176"></a>00176   <span class="keywordtype">unsigned</span> Bytes = <a class="code" href="classunsigned.html">unsigned</a>(End-Start);
+<a name="l00177"></a>00177   <span class="keywordtype">unsigned</span> NumPointerStores = Bytes/TD.<a class="code" href="classllvm_1_1DataLayout.html#aaee0a912e1a03a81cf2e4045c77b253e">getPointerSize</a>();
+<a name="l00178"></a>00178 
+<a name="l00179"></a>00179   <span class="comment">// Assume the remaining bytes if any are done a byte at a time.</span>
+<a name="l00180"></a>00180   <span class="keywordtype">unsigned</span> NumByteStores = Bytes - NumPointerStores*TD.<a class="code" href="classllvm_1_1DataLayout.html#aaee0a912e1a03a81cf2e4045c77b253e">getPointerSize</a>();
+<a name="l00181"></a>00181 
+<a name="l00182"></a>00182   <span class="comment">// If we will reduce the # stores (according to this heuristic), do the</span>
+<a name="l00183"></a>00183   <span class="comment">// transformation.  This encourages merging 4 x i8 -> i32 and 2 x i16 -> i32</span>
+<a name="l00184"></a>00184   <span class="comment">// etc.</span>
+<a name="l00185"></a>00185   <span class="keywordflow">return</span> TheStores.size() > NumPointerStores+NumByteStores;
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187 
+<a name="l00188"></a>00188 
+<a name="l00189"></a>00189 <span class="keyword">namespace </span>{
+<a name="l00190"></a>00190 <span class="keyword">class </span>MemsetRanges {<span class="comment"></span>
+<a name="l00191"></a>00191 <span class="comment">  /// Ranges - A sorted list of the memset ranges.  We use std::list here</span>
+<a name="l00192"></a>00192 <span class="comment">  /// because each element is relatively large and expensive to copy.</span>
+<a name="l00193"></a>00193 <span class="comment"></span>  std::list<MemsetRange> <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a>;
+<a name="l00194"></a>00194   <span class="keyword">typedef</span> std::list<MemsetRange>::iterator range_iterator;
+<a name="l00195"></a>00195   <span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD;
+<a name="l00196"></a>00196 <span class="keyword">public</span>:
+<a name="l00197"></a>00197   MemsetRanges(<span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> &td) : TD(td) {}
+<a name="l00198"></a>00198 
+<a name="l00199"></a>00199   <span class="keyword">typedef</span> std::list<MemsetRange>::const_iterator const_iterator;
+<a name="l00200"></a>00200   const_iterator <a class="code" href="namespacellvm_1_1sys_1_1path.html#a33706aab89e700b8f79e1fa6f4f0e3ee" title="Get begin iterator over path.">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a>.<a class="code" href="classllvm_1_1LoopBase.html#a22b3e904c08bd922efd707282aed89d9">begin</a>(); }
+<a name="l00201"></a>00201   const_iterator <a class="code" href="namespacellvm_1_1sys_1_1path.html#a214ec2f04ffd92636ed4bd2717607a1d" title="Get end iterator over path.">end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a>.<a class="code" href="classllvm_1_1LoopBase.html#a5a3b8a8269ba0c61102f71a2a3bd42cd">end</a>(); }
+<a name="l00202"></a>00202   <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a>.<a class="code" href="classllvm_1_1LoopBase.html#ab191396dd1d8556d8e0a057f7fd2aaab">empty</a>(); }
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204   <span class="keywordtype">void</span> addInst(<a class="code" href="classint64__t.html">int64_t</a> OffsetFromFirst, <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *Inst) {
+<a name="l00205"></a>00205     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a> *SI = dyn_cast<StoreInst>(Inst))
+<a name="l00206"></a>00206       addStore(OffsetFromFirst, SI);
+<a name="l00207"></a>00207     <span class="keywordflow">else</span>
+<a name="l00208"></a>00208       addMemSet(OffsetFromFirst, cast<MemSetInst>(Inst));
+<a name="l00209"></a>00209   }
+<a name="l00210"></a>00210 
+<a name="l00211"></a>00211   <span class="keywordtype">void</span> addStore(<a class="code" href="classint64__t.html">int64_t</a> OffsetFromFirst, <a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a> *SI) {
+<a name="l00212"></a>00212     <a class="code" href="classint64__t.html">int64_t</a> StoreSize = TD.<a class="code" href="classllvm_1_1DataLayout.html#a4b979cd93852fd44c48851c94ee00758">getTypeStoreSize</a>(SI-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0)-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00213"></a>00213 
+<a name="l00214"></a>00214     <a class="code" href="Metadata_8cpp.html#a1349c8bab1dd053a69a4c6559596b3c5">addRange</a>(OffsetFromFirst, StoreSize,
+<a name="l00215"></a>00215              SI-><a class="code" href="classllvm_1_1StoreInst.html#ac03c1c093059ea000216af8dd6f2dbf4">getPointerOperand</a>(), SI-><a class="code" href="classllvm_1_1StoreInst.html#a3084f1dd69d67e1965fd1fe721a69f2e">getAlignment</a>(), SI);
+<a name="l00216"></a>00216   }
+<a name="l00217"></a>00217 
+<a name="l00218"></a>00218   <span class="keywordtype">void</span> addMemSet(<a class="code" href="classint64__t.html">int64_t</a> OffsetFromFirst, <a class="code" href="classllvm_1_1MemSetInst.html">MemSetInst</a> *MSI) {
+<a name="l00219"></a>00219     <a class="code" href="classint64__t.html">int64_t</a> Size = cast<ConstantInt>(MSI-><a class="code" href="classllvm_1_1MemIntrinsic.html#abad10f74789466601c7a025540c1c072">getLength</a>())->getZExtValue();
+<a name="l00220"></a>00220     <a class="code" href="Metadata_8cpp.html#a1349c8bab1dd053a69a4c6559596b3c5">addRange</a>(OffsetFromFirst, Size, MSI-><a class="code" href="classllvm_1_1MemIntrinsic.html#ad8bf46d46e8f14bc23bd30df57cc9a77">getDest</a>(), MSI-><a class="code" href="classllvm_1_1MemIntrinsic.html#a42dd65db3521498f10afb8c6f66e1bb5">getAlignment</a>(), MSI);
+<a name="l00221"></a>00221   }
+<a name="l00222"></a>00222 
+<a name="l00223"></a>00223   <span class="keywordtype">void</span> <a class="code" href="Metadata_8cpp.html#a1349c8bab1dd053a69a4c6559596b3c5">addRange</a>(<a class="code" href="classint64__t.html">int64_t</a> Start, <a class="code" href="classint64__t.html">int64_t</a> Size, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ptr,
+<a name="l00224"></a>00224                 <span class="keywordtype">unsigned</span> Alignment, <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *Inst);
+<a name="l00225"></a>00225 
+<a name="l00226"></a>00226 };
+<a name="l00227"></a>00227 
+<a name="l00228"></a>00228 } <span class="comment">// end anon namespace</span>
+<a name="l00229"></a>00229 
+<a name="l00230"></a>00230 <span class="comment"></span>
+<a name="l00231"></a>00231 <span class="comment">/// addRange - Add a new store to the MemsetRanges data structure.  This adds a</span>
+<a name="l00232"></a>00232 <span class="comment">/// new range for the specified store at the specified offset, merging into</span>
+<a name="l00233"></a>00233 <span class="comment">/// existing ranges as appropriate.</span>
+<a name="l00234"></a>00234 <span class="comment">///</span>
+<a name="l00235"></a>00235 <span class="comment">/// Do a linear search of the ranges to see if this can be joined and/or to</span>
+<a name="l00236"></a>00236 <span class="comment">/// find the insertion point in the list.  We keep the ranges sorted for</span>
+<a name="l00237"></a>00237 <span class="comment">/// simplicity here.  This is a linear search of a linked list, which is ugly,</span>
+<a name="l00238"></a>00238 <span class="comment">/// however the number of ranges is limited, so this won't get crazy slow.</span>
+<a name="l00239"></a>00239 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="Metadata_8cpp.html#a1349c8bab1dd053a69a4c6559596b3c5">MemsetRanges::addRange</a>(<a class="code" href="classint64__t.html">int64_t</a> Start, <a class="code" href="classint64__t.html">int64_t</a> Size, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ptr,
+<a name="l00240"></a>00240                             <span class="keywordtype">unsigned</span> Alignment, <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *Inst) {
+<a name="l00241"></a>00241   <a class="code" href="classint64__t.html">int64_t</a> End = Start+Size;
+<a name="l00242"></a>00242   range_iterator <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a>.<a class="code" href="classllvm_1_1LoopBase.html#a22b3e904c08bd922efd707282aed89d9">begin</a>(), E = <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a>.<a class="code" href="classllvm_1_1LoopBase.html#a5a3b8a8269ba0c61102f71a2a3bd42cd">end</a>();
+<a name="l00243"></a>00243 
+<a name="l00244"></a>00244   <span class="keywordflow">while</span> (I != E && Start > I->End)
+<a name="l00245"></a>00245     ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00246"></a>00246 
+<a name="l00247"></a>00247   <span class="comment">// We now know that I == E, in which case we didn't find anything to merge</span>
+<a name="l00248"></a>00248   <span class="comment">// with, or that Start <= I->End.  If End < I->Start or I == E, then we need</span>
+<a name="l00249"></a>00249   <span class="comment">// to insert a new range.  Handle this now.</span>
+<a name="l00250"></a>00250   <span class="keywordflow">if</span> (I == E || End < I->Start) {
+<a name="l00251"></a>00251     MemsetRange &R = *<a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a>.insert(I, MemsetRange());
+<a name="l00252"></a>00252     R.Start        = Start;
+<a name="l00253"></a>00253     R.End          = End;
+<a name="l00254"></a>00254     R.StartPtr     = Ptr;
+<a name="l00255"></a>00255     R.Alignment    = Alignment;
+<a name="l00256"></a>00256     R.TheStores.push_back(Inst);
+<a name="l00257"></a>00257     <span class="keywordflow">return</span>;
+<a name="l00258"></a>00258   }
+<a name="l00259"></a>00259 
+<a name="l00260"></a>00260   <span class="comment">// This store overlaps with I, add it.</span>
+<a name="l00261"></a>00261   I->TheStores.push_back(Inst);
+<a name="l00262"></a>00262 
+<a name="l00263"></a>00263   <span class="comment">// At this point, we may have an interval that completely contains our store.</span>
+<a name="l00264"></a>00264   <span class="comment">// If so, just add it to the interval and return.</span>
+<a name="l00265"></a>00265   <span class="keywordflow">if</span> (I->Start <= Start && I->End >= End)
+<a name="l00266"></a>00266     <span class="keywordflow">return</span>;
+<a name="l00267"></a>00267 
+<a name="l00268"></a>00268   <span class="comment">// Now we know that Start <= I->End and End >= I->Start so the range overlaps</span>
+<a name="l00269"></a>00269   <span class="comment">// but is not entirely contained within the range.</span>
+<a name="l00270"></a>00270 
+<a name="l00271"></a>00271   <span class="comment">// See if the range extends the start of the range.  In this case, it couldn't</span>
+<a name="l00272"></a>00272   <span class="comment">// possibly cause it to join the prior range, because otherwise we would have</span>
+<a name="l00273"></a>00273   <span class="comment">// stopped on *it*.</span>
+<a name="l00274"></a>00274   <span class="keywordflow">if</span> (Start < I->Start) {
+<a name="l00275"></a>00275     I->Start = Start;
+<a name="l00276"></a>00276     I->StartPtr = Ptr;
+<a name="l00277"></a>00277     I->Alignment = Alignment;
+<a name="l00278"></a>00278   }
+<a name="l00279"></a>00279 
+<a name="l00280"></a>00280   <span class="comment">// Now we know that Start <= I->End and Start >= I->Start (so the startpoint</span>
+<a name="l00281"></a>00281   <span class="comment">// is in or right at the end of I), and that End >= I->Start.  Extend I out to</span>
+<a name="l00282"></a>00282   <span class="comment">// End.</span>
+<a name="l00283"></a>00283   <span class="keywordflow">if</span> (End > I->End) {
+<a name="l00284"></a>00284     I->End = End;
+<a name="l00285"></a>00285     range_iterator NextI = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00286"></a>00286     <span class="keywordflow">while</span> (++NextI != E && End >= NextI->Start) {
+<a name="l00287"></a>00287       <span class="comment">// Merge the range in.</span>
+<a name="l00288"></a>00288       I->TheStores.append(NextI->TheStores.begin(), NextI->TheStores.end());
+<a name="l00289"></a>00289       <span class="keywordflow">if</span> (NextI->End > I->End)
+<a name="l00290"></a>00290         I->End = NextI->End;
+<a name="l00291"></a>00291       <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a>.erase(NextI);
+<a name="l00292"></a>00292       NextI = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00293"></a>00293     }
+<a name="l00294"></a>00294   }
+<a name="l00295"></a>00295 }
+<a name="l00296"></a>00296 
+<a name="l00297"></a>00297 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00298"></a>00298 <span class="comment">//                         MemCpyOpt Pass</span>
+<a name="l00299"></a>00299 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00300"></a>00300 
+<a name="l00301"></a>00301 <span class="keyword">namespace </span>{
+<a name="l00302"></a>00302   <span class="keyword">class </span>MemCpyOpt : <span class="keyword">public</span> <a class="code" href="classllvm_1_1FunctionPass.html">FunctionPass</a> {
+<a name="l00303"></a>00303     <a class="code" href="classllvm_1_1MemoryDependenceAnalysis.html">MemoryDependenceAnalysis</a> *MD;
+<a name="l00304"></a>00304     <a class="code" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a> *TLI;
+<a name="l00305"></a>00305     <span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD;
+<a name="l00306"></a>00306   <span class="keyword">public</span>:
+<a name="l00307"></a>00307     <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="l00308"></a>00308     MemCpyOpt() : <a class="code" href="classllvm_1_1FunctionPass.html">FunctionPass</a>(<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>) {
+<a name="l00309"></a>00309       <a class="code" href="namespacellvm.html#ad2abfd9d12d19ae450d3db0b6ecadc08">initializeMemCpyOptPass</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00310"></a>00310       MD = 0;
+<a name="l00311"></a>00311       TLI = 0;
+<a name="l00312"></a>00312       TD = 0;
+<a name="l00313"></a>00313     }
+<a name="l00314"></a>00314 
+<a name="l00315"></a>00315     <span class="keywordtype">bool</span> runOnFunction(<a class="code" href="classllvm_1_1Function.html">Function</a> &<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>);
+<a name="l00316"></a>00316 
+<a name="l00317"></a>00317   <span class="keyword">private</span>:
+<a name="l00318"></a>00318     <span class="comment">// This transformation requires dominator postdominator info</span>
+<a name="l00319"></a>00319     <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="l00320"></a>00320       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#af11a6ebf7ab3c388234cb6d5378439a3">setPreservesCFG</a>();
+<a name="l00321"></a>00321       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1DominatorTree.html">DominatorTree</a>>();
+<a name="l00322"></a>00322       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1MemoryDependenceAnalysis.html">MemoryDependenceAnalysis</a>>();
+<a name="l00323"></a>00323       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>>();
+<a name="l00324"></a>00324       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a>>();
+<a name="l00325"></a>00325       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a884f90190bca4bd354f2d5c91c264028">addPreserved</a><<a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>>();
+<a name="l00326"></a>00326       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a884f90190bca4bd354f2d5c91c264028">addPreserved</a><<a class="code" href="classllvm_1_1MemoryDependenceAnalysis.html">MemoryDependenceAnalysis</a>>();
+<a name="l00327"></a>00327     }
+<a name="l00328"></a>00328 
+<a name="l00329"></a>00329     <span class="comment">// Helper fuctions</span>
+<a name="l00330"></a>00330     <span class="keywordtype">bool</span> processStore(<a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a> *SI, <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> &BBI);
+<a name="l00331"></a>00331     <span class="keywordtype">bool</span> processMemSet(<a class="code" href="classllvm_1_1MemSetInst.html">MemSetInst</a> *SI, <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> &BBI);
+<a name="l00332"></a>00332     <span class="keywordtype">bool</span> processMemCpy(<a class="code" href="classllvm_1_1MemCpyInst.html">MemCpyInst</a> *M);
+<a name="l00333"></a>00333     <span class="keywordtype">bool</span> processMemMove(<a class="code" href="classllvm_1_1MemMoveInst.html">MemMoveInst</a> *M);
+<a name="l00334"></a>00334     <span class="keywordtype">bool</span> performCallSlotOptzn(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *cpy, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *cpyDst, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *cpySrc,
+<a name="l00335"></a>00335                               uint64_t cpyLen, <span class="keywordtype">unsigned</span> cpyAlign, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00336"></a>00336     <span class="keywordtype">bool</span> processMemCpyMemCpyDependence(<a class="code" href="classllvm_1_1MemCpyInst.html">MemCpyInst</a> *M, <a class="code" href="classllvm_1_1MemCpyInst.html">MemCpyInst</a> *MDep,
+<a name="l00337"></a>00337                                        uint64_t MSize);
+<a name="l00338"></a>00338     <span class="keywordtype">bool</span> processByValArgument(<a class="code" href="classllvm_1_1CallSite.html">CallSite</a> CS, <span class="keywordtype">unsigned</span> ArgNo);
+<a name="l00339"></a>00339     <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *tryMergingIntoMemset(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *I, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *StartPtr,
+<a name="l00340"></a>00340                                       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *ByteVal);
+<a name="l00341"></a>00341 
+<a name="l00342"></a>00342     <span class="keywordtype">bool</span> iterateOnFunction(<a class="code" href="classllvm_1_1Function.html">Function</a> &<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>);
+<a name="l00343"></a>00343   };
+<a name="l00344"></a>00344 
+<a name="l00345"></a>00345   <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">MemCpyOpt::ID</a> = 0;
+<a name="l00346"></a>00346 }
+<a name="l00347"></a>00347 
+<a name="l00348"></a>00348 <span class="comment">// createMemCpyOptPass - The public interface to this file...</span>
+<a name="l00349"></a><a class="code" href="namespacellvm.html#a493e8685b388eb24064e2eb6c90e88d6">00349</a> <a class="code" href="classllvm_1_1FunctionPass.html">FunctionPass</a> *<a class="code" href="namespacellvm.html#a493e8685b388eb24064e2eb6c90e88d6">llvm::createMemCpyOptPass</a>() { <span class="keywordflow">return</span> <span class="keyword">new</span> MemCpyOpt(); }
+<a name="l00350"></a>00350 
+<a name="l00351"></a>00351 <a class="code" href="PassSupport_8h.html#aaa970fc931c1c63037a8182e028d04b1">INITIALIZE_PASS_BEGIN</a>(MemCpyOpt, <span class="stringliteral">"memcpyopt"</span>, <span class="stringliteral">"MemCpy Optimization"</span>,
+<a name="l00352"></a>00352                       <span class="keyword">false</span>, <span class="keyword">false</span>)
+<a name="l00353"></a>00353 <a class="code" href="PassSupport_8h.html#a14724f1ccf528e73bb29bc9230737967">INITIALIZE_PASS_DEPENDENCY</a>(<a class="code" href="classllvm_1_1DominatorTree.html">DominatorTree</a>)
+<a name="l00354"></a>00354 <a class="code" href="PassSupport_8h.html#a14724f1ccf528e73bb29bc9230737967">INITIALIZE_PASS_DEPENDENCY</a>(<a class="code" href="classllvm_1_1MemoryDependenceAnalysis.html">MemoryDependenceAnalysis</a>)
+<a name="l00355"></a>00355 <a class="code" href="PassSupport_8h.html#a14724f1ccf528e73bb29bc9230737967">INITIALIZE_PASS_DEPENDENCY</a>(<a class="code" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a>)
+<a name="l00356"></a>00356 <a class="code" href="PassSupport_8h.html#af0564bcdde2dd4400c670ca278c6035f">INITIALIZE_AG_DEPENDENCY</a>(<a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>)
+<a name="l00357"></a><a class="code" href="MemCpyOptimizer_8cpp.html#a4c36a0753cd006d97b1aee018fe423bc">00357</a> <a class="code" href="PassSupport_8h.html#a74ce8276b89067e806f67c45a6d92575">INITIALIZE_PASS_END</a>(MemCpyOpt, "<a class="code" href="MemCpyOptimizer_8cpp.html#a7530261f1f6c8e08347b485f8ffe90b4">memcpyopt</a>", "MemCpy <a class="code" href="MemCpyOptimizer_8cpp.html#a4c36a0753cd006d97b1aee018fe423bc">Optimization</a>",
+<a name="l00358"></a>00358                     <a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>, false)
+<a name="l00359"></a>00359 <span class="comment"></span>
+<a name="l00360"></a>00360 <span class="comment">/// tryMergingIntoMemset - When scanning forward over instructions, we look for</span>
+<a name="l00361"></a>00361 <span class="comment">/// some other patterns to fold away.  In particular, this looks for stores to</span>
+<a name="l00362"></a>00362 <span class="comment">/// neighboring locations of memory.  If it sees enough consecutive ones, it</span>
+<a name="l00363"></a>00363 <span class="comment">/// attempts to merge them together into a memcpy/memset.</span>
+<a name="l00364"></a>00364 <span class="comment"></span><a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *MemCpyOpt::tryMergingIntoMemset(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *StartInst,
+<a name="l00365"></a>00365                                              <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *StartPtr, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *ByteVal) {
+<a name="l00366"></a>00366   <span class="keywordflow">if</span> (TD == 0) <span class="keywordflow">return</span> 0;
+<a name="l00367"></a>00367 
+<a name="l00368"></a>00368   <span class="comment">// Okay, so we now have a single store that can be splatable.  Scan to find</span>
+<a name="l00369"></a>00369   <span class="comment">// all subsequent stores of the same value to offset from the same pointer.</span>
+<a name="l00370"></a>00370   <span class="comment">// Join these together into ranges, so we can decide whether contiguous blocks</span>
+<a name="l00371"></a>00371   <span class="comment">// are stored.</span>
+<a name="l00372"></a>00372   MemsetRanges <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a>(*TD);
+<a name="l00373"></a>00373 
+<a name="l00374"></a>00374   <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> BI = StartInst;
+<a name="l00375"></a>00375   <span class="keywordflow">for</span> (++BI; !isa<TerminatorInst>(BI); ++BI) {
+<a name="l00376"></a>00376     <span class="keywordflow">if</span> (!isa<StoreInst>(BI) && !isa<MemSetInst>(BI)) {
+<a name="l00377"></a>00377       <span class="comment">// If the instruction is readnone, ignore it, otherwise bail out.  We</span>
+<a name="l00378"></a>00378       <span class="comment">// don't even allow readonly here because we don't want something like:</span>
+<a name="l00379"></a>00379       <span class="comment">// A[1] = 2; strlen(A); A[2] = 2; -> memcpy(A, ...); strlen(A).</span>
+<a name="l00380"></a>00380       <span class="keywordflow">if</span> (BI->mayWriteToMemory() || BI->mayReadFromMemory())
+<a name="l00381"></a>00381         <span class="keywordflow">break</span>;
+<a name="l00382"></a>00382       <span class="keywordflow">continue</span>;
+<a name="l00383"></a>00383     }
+<a name="l00384"></a>00384 
+<a name="l00385"></a>00385     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a> *NextStore = dyn_cast<StoreInst>(BI)) {
+<a name="l00386"></a>00386       <span class="comment">// If this is a store, see if we can merge it in.</span>
+<a name="l00387"></a>00387       <span class="keywordflow">if</span> (!NextStore->isSimple()) <span class="keywordflow">break</span>;
+<a name="l00388"></a>00388 
+<a name="l00389"></a>00389       <span class="comment">// Check to see if this stored value is of the same byte-splattable value.</span>
+<a name="l00390"></a>00390       <span class="keywordflow">if</span> (ByteVal != <a class="code" href="namespacellvm.html#a9945de214e3ba2b16f664bcdc953f0e0">isBytewiseValue</a>(NextStore->getOperand(0)))
+<a name="l00391"></a>00391         <span class="keywordflow">break</span>;
+<a name="l00392"></a>00392 
+<a name="l00393"></a>00393       <span class="comment">// Check to see if this store is to a constant offset from the start ptr.</span>
+<a name="l00394"></a>00394       <a class="code" href="classint64__t.html">int64_t</a> Offset;
+<a name="l00395"></a>00395       <span class="keywordflow">if</span> (!<a class="code" href="MemCpyOptimizer_8cpp.html#a6ee1a66b9681fb20cdc5f8ec6b59bef5">IsPointerOffset</a>(StartPtr, NextStore->getPointerOperand(),
+<a name="l00396"></a>00396                            Offset, *TD))
+<a name="l00397"></a>00397         <span class="keywordflow">break</span>;
+<a name="l00398"></a>00398 
+<a name="l00399"></a>00399       Ranges.addStore(Offset, NextStore);
+<a name="l00400"></a>00400     } <span class="keywordflow">else</span> {
+<a name="l00401"></a>00401       <a class="code" href="classllvm_1_1MemSetInst.html">MemSetInst</a> *MSI = cast<MemSetInst>(BI);
+<a name="l00402"></a>00402 
+<a name="l00403"></a>00403       <span class="keywordflow">if</span> (MSI-><a class="code" href="classllvm_1_1MemIntrinsic.html#a9558faebdbb62c072aed98e33604889d">isVolatile</a>() || ByteVal != MSI-><a class="code" href="classllvm_1_1MemSetInst.html#a357f35c4ac1c01e84d73a4a9e26f6aac">getValue</a>() ||
+<a name="l00404"></a>00404           !isa<ConstantInt>(MSI-><a class="code" href="classllvm_1_1MemIntrinsic.html#abad10f74789466601c7a025540c1c072">getLength</a>()))
+<a name="l00405"></a>00405         <span class="keywordflow">break</span>;
+<a name="l00406"></a>00406 
+<a name="l00407"></a>00407       <span class="comment">// Check to see if this store is to a constant offset from the start ptr.</span>
+<a name="l00408"></a>00408       <a class="code" href="classint64__t.html">int64_t</a> Offset;
+<a name="l00409"></a>00409       <span class="keywordflow">if</span> (!<a class="code" href="MemCpyOptimizer_8cpp.html#a6ee1a66b9681fb20cdc5f8ec6b59bef5">IsPointerOffset</a>(StartPtr, MSI-><a class="code" href="classllvm_1_1MemIntrinsic.html#ad8bf46d46e8f14bc23bd30df57cc9a77">getDest</a>(), Offset, *TD))
+<a name="l00410"></a>00410         <span class="keywordflow">break</span>;
+<a name="l00411"></a>00411 
+<a name="l00412"></a>00412       Ranges.addMemSet(Offset, MSI);
+<a name="l00413"></a>00413     }
+<a name="l00414"></a>00414   }
+<a name="l00415"></a>00415 
+<a name="l00416"></a>00416   <span class="comment">// If we have no ranges, then we just had a single store with nothing that</span>
+<a name="l00417"></a>00417   <span class="comment">// could be merged in.  This is a very common case of course.</span>
+<a name="l00418"></a>00418   <span class="keywordflow">if</span> (Ranges.empty())
+<a name="l00419"></a>00419     <span class="keywordflow">return</span> 0;
+<a name="l00420"></a>00420 
+<a name="l00421"></a>00421   <span class="comment">// If we had at least one store that could be merged in, add the starting</span>
+<a name="l00422"></a>00422   <span class="comment">// store as well.  We try to avoid this unless there is at least something</span>
+<a name="l00423"></a>00423   <span class="comment">// interesting as a small compile-time optimization.</span>
+<a name="l00424"></a>00424   Ranges.addInst(0, StartInst);
+<a name="l00425"></a>00425 
+<a name="l00426"></a>00426   <span class="comment">// If we create any memsets, we put it right before the first instruction that</span>
+<a name="l00427"></a>00427   <span class="comment">// isn't part of the memset block.  This ensure that the memset is dominated</span>
+<a name="l00428"></a>00428   <span class="comment">// by any addressing instruction needed by the start of the block.</span>
+<a name="l00429"></a>00429   <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> Builder(BI);
+<a name="l00430"></a>00430 
+<a name="l00431"></a>00431   <span class="comment">// Now that we have full information about ranges, loop over the ranges and</span>
+<a name="l00432"></a>00432   <span class="comment">// emit memset's for anything big enough to be worthwhile.</span>
+<a name="l00433"></a>00433   <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *AMemSet = 0;
+<a name="l00434"></a>00434   <span class="keywordflow">for</span> (MemsetRanges::const_iterator I = Ranges.begin(), E = Ranges.end();
+<a name="l00435"></a>00435        I != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00436"></a>00436     <span class="keyword">const</span> MemsetRange &Range = *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00437"></a>00437 
+<a name="l00438"></a>00438     <span class="keywordflow">if</span> (Range.TheStores.size() == 1) <span class="keywordflow">continue</span>;
+<a name="l00439"></a>00439 
+<a name="l00440"></a>00440     <span class="comment">// If it is profitable to lower this range to memset, do so now.</span>
+<a name="l00441"></a>00441     <span class="keywordflow">if</span> (!Range.isProfitableToUseMemset(*TD))
+<a name="l00442"></a>00442       <span class="keywordflow">continue</span>;
+<a name="l00443"></a>00443 
+<a name="l00444"></a>00444     <span class="comment">// Otherwise, we do want to transform this!  Create a new memset.</span>
+<a name="l00445"></a>00445     <span class="comment">// Get the starting pointer of the block.</span>
+<a name="l00446"></a>00446     StartPtr = Range.StartPtr;
+<a name="l00447"></a>00447 
+<a name="l00448"></a>00448     <span class="comment">// Determine alignment</span>
+<a name="l00449"></a>00449     <span class="keywordtype">unsigned</span> Alignment = Range.Alignment;
+<a name="l00450"></a>00450     <span class="keywordflow">if</span> (Alignment == 0) {
+<a name="l00451"></a>00451       <a class="code" href="classllvm_1_1Type.html">Type</a> *EltType =
+<a name="l00452"></a>00452         cast<PointerType>(StartPtr->getType())->getElementType();
+<a name="l00453"></a>00453       Alignment = TD-><a class="code" href="classllvm_1_1DataLayout.html#abb381519d34dcb9ccf673bf7689d0721">getABITypeAlignment</a>(EltType);
+<a name="l00454"></a>00454     }
+<a name="l00455"></a>00455 
+<a name="l00456"></a>00456     AMemSet =
+<a name="l00457"></a>00457       Builder.<a class="code" href="classllvm_1_1IRBuilderBase.html#a58f62481bd3a4bfc5d07102fe857741a">CreateMemSet</a>(StartPtr, ByteVal, Range.End-Range.Start, Alignment);
+<a name="l00458"></a>00458 
+<a name="l00459"></a>00459     <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">"Replace stores:\n"</span>;
+<a name="l00460"></a>00460           <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Range.TheStores.size(); i != e; ++i)
+<a name="l00461"></a>00461             <a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << *Range.TheStores[i] << <span class="charliteral">'\n'</span>;
+<a name="l00462"></a>00462           <a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"With: "</span> << *AMemSet << <span class="charliteral">'\n'</span>);
+<a name="l00463"></a>00463 
+<a name="l00464"></a>00464     <span class="keywordflow">if</span> (!Range.TheStores.empty())
+<a name="l00465"></a>00465       AMemSet-><a class="code" href="classllvm_1_1Instruction.html#a7bd545769621a0a9d2cfb074f86f4295" title="setDebugLoc - Set the debug location information for this instruction.">setDebugLoc</a>(Range.TheStores[0]->getDebugLoc());
+<a name="l00466"></a>00466 
+<a name="l00467"></a>00467     <span class="comment">// Zap all the stores.</span>
+<a name="l00468"></a>00468     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Instruction*, 16>::const_iterator</a>
+<a name="l00469"></a>00469          SI = Range.TheStores.begin(),
+<a name="l00470"></a>00470          SE = Range.TheStores.end(); SI != SE; ++SI) {
+<a name="l00471"></a>00471       MD->removeInstruction(*SI);
+<a name="l00472"></a>00472       (*SI)->eraseFromParent();
+<a name="l00473"></a>00473     }
+<a name="l00474"></a>00474     ++NumMemSetInfer;
+<a name="l00475"></a>00475   }
+<a name="l00476"></a>00476 
+<a name="l00477"></a>00477   <span class="keywordflow">return</span> AMemSet;
+<a name="l00478"></a>00478 }
+<a name="l00479"></a>00479 
+<a name="l00480"></a>00480 
+<a name="l00481"></a>00481 <span class="keywordtype">bool</span> MemCpyOpt::processStore(<a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a> *SI, <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> &BBI) {
+<a name="l00482"></a>00482   <span class="keywordflow">if</span> (!SI-><a class="code" href="classllvm_1_1StoreInst.html#a1149c7eeefca671ac2685bca13843568">isSimple</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00483"></a>00483 
+<a name="l00484"></a>00484   <span class="keywordflow">if</span> (TD == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00485"></a>00485 
+<a name="l00486"></a>00486   <span class="comment">// Detect cases where we're performing call slot forwarding, but</span>
+<a name="l00487"></a>00487   <span class="comment">// happen to be using a load-store pair to implement it, rather than</span>
+<a name="l00488"></a>00488   <span class="comment">// a memcpy.</span>
+<a name="l00489"></a>00489   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1LoadInst.html">LoadInst</a> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a> = dyn_cast<LoadInst>(SI-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0))) {
+<a name="l00490"></a>00490     <span class="keywordflow">if</span> (<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->isSimple() && <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->hasOneUse() &&
+<a name="l00491"></a>00491         <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->getParent() == SI-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>()) {
+<a name="l00492"></a>00492       <a class="code" href="classllvm_1_1MemDepResult.html">MemDepResult</a> ldep = MD->getDependency(<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>);
+<a name="l00493"></a>00493       <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a> = 0;
+<a name="l00494"></a>00494       <span class="keywordflow">if</span> (ldep.<a class="code" href="classllvm_1_1MemDepResult.html#ae409b288c7f70a6c57586535abed3808">isClobber</a>() && !isa<MemCpyInst>(ldep.<a class="code" href="classllvm_1_1MemDepResult.html#a8452eb6508c00e2b6d56926bebc79f57">getInst</a>()))
+<a name="l00495"></a>00495         C = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1CallInst.html">CallInst</a>>(ldep.<a class="code" href="classllvm_1_1MemDepResult.html#a8452eb6508c00e2b6d56926bebc79f57">getInst</a>());
+<a name="l00496"></a>00496 
+<a name="l00497"></a>00497       <span class="keywordflow">if</span> (C) {
+<a name="l00498"></a>00498         <span class="comment">// Check that nothing touches the dest of the "copy" between</span>
+<a name="l00499"></a>00499         <span class="comment">// the call and the store.</span>
+<a name="l00500"></a>00500         <a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a> &AA = getAnalysis<AliasAnalysis>();
+<a name="l00501"></a>00501         <a class="code" href="structllvm_1_1AliasAnalysis_1_1Location.html" title="Location - A description of a memory location.">AliasAnalysis::Location</a> StoreLoc = AA.<a class="code" href="classllvm_1_1AliasAnalysis.html#aec9dbab832cd8052f85cd2a9dbb3816e">getLocation</a>(SI);
+<a name="l00502"></a>00502         <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> I = --<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a>(SI),
+<a name="l00503"></a>00503                                   E = C; I != E; --<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00504"></a>00504           <span class="keywordflow">if</span> (AA.<a class="code" href="classllvm_1_1AliasAnalysis.html#a3f09a65a9c9d7bfff6c6271976d1baba">getModRefInfo</a>(&*I, StoreLoc) != <a class="code" href="classllvm_1_1AliasAnalysis.html#a83d29c51155787c607268c2659559460a52fc7f344e74f168cb4b4c808dcfde1c">AliasAnalysis::NoModRef</a>) {
+<a name="l00505"></a>00505             C = 0;
+<a name="l00506"></a>00506             <span class="keywordflow">break</span>;
+<a name="l00507"></a>00507           }
+<a name="l00508"></a>00508         }
+<a name="l00509"></a>00509       }
+<a name="l00510"></a>00510 
+<a name="l00511"></a>00511       <span class="keywordflow">if</span> (C) {
+<a name="l00512"></a>00512         <span class="keywordtype">unsigned</span> storeAlign = SI-><a class="code" href="classllvm_1_1StoreInst.html#a3084f1dd69d67e1965fd1fe721a69f2e">getAlignment</a>();
+<a name="l00513"></a>00513         <span class="keywordflow">if</span> (!storeAlign)
+<a name="l00514"></a>00514           storeAlign = TD-><a class="code" href="classllvm_1_1DataLayout.html#abb381519d34dcb9ccf673bf7689d0721">getABITypeAlignment</a>(SI-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0)-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00515"></a>00515         <span class="keywordtype">unsigned</span> loadAlign = <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->getAlignment();
+<a name="l00516"></a>00516         <span class="keywordflow">if</span> (!loadAlign)
+<a name="l00517"></a>00517           loadAlign = TD-><a class="code" href="classllvm_1_1DataLayout.html#abb381519d34dcb9ccf673bf7689d0721">getABITypeAlignment</a>(<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->getType());
+<a name="l00518"></a>00518 
+<a name="l00519"></a>00519         <span class="keywordtype">bool</span> changed = performCallSlotOptzn(<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>,
+<a name="l00520"></a>00520                         SI-><a class="code" href="classllvm_1_1StoreInst.html#ac03c1c093059ea000216af8dd6f2dbf4">getPointerOperand</a>()-><a class="code" href="classllvm_1_1Value.html#a38ea12c04523d63adda732b9c5d6da0a">stripPointerCasts</a>(),
+<a name="l00521"></a>00521                         <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->getPointerOperand()->stripPointerCasts(),
+<a name="l00522"></a>00522                         TD-><a class="code" href="classllvm_1_1DataLayout.html#a4b979cd93852fd44c48851c94ee00758">getTypeStoreSize</a>(SI-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0)-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()),
+<a name="l00523"></a>00523                         std::min(storeAlign, loadAlign), <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00524"></a>00524         <span class="keywordflow">if</span> (changed) {
+<a name="l00525"></a>00525           MD->removeInstruction(SI);
+<a name="l00526"></a>00526           SI-><a class="code" href="classllvm_1_1Instruction.html#a6fe2f06b8a4b2c3d6308afb223a0238a">eraseFromParent</a>();
+<a name="l00527"></a>00527           MD->removeInstruction(<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>);
+<a name="l00528"></a>00528           <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->eraseFromParent();
+<a name="l00529"></a>00529           ++NumMemCpyInstr;
+<a name="l00530"></a>00530           <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00531"></a>00531         }
+<a name="l00532"></a>00532       }
+<a name="l00533"></a>00533     }
+<a name="l00534"></a>00534   }
+<a name="l00535"></a>00535 
+<a name="l00536"></a>00536   <span class="comment">// There are two cases that are interesting for this code to handle: memcpy</span>
+<a name="l00537"></a>00537   <span class="comment">// and memset.  Right now we only handle memset.</span>
+<a name="l00538"></a>00538 
+<a name="l00539"></a>00539   <span class="comment">// Ensure that the value being stored is something that can be memset'able a</span>
+<a name="l00540"></a>00540   <span class="comment">// byte at a time like "0" or "-1" or any width, as well as things like</span>
+<a name="l00541"></a>00541   <span class="comment">// 0xA0A0A0A0 and 0.0.</span>
+<a name="l00542"></a>00542   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *ByteVal = <a class="code" href="namespacellvm.html#a9945de214e3ba2b16f664bcdc953f0e0">isBytewiseValue</a>(SI-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0)))
+<a name="l00543"></a>00543     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *I = tryMergingIntoMemset(SI, SI-><a class="code" href="classllvm_1_1StoreInst.html#ac03c1c093059ea000216af8dd6f2dbf4">getPointerOperand</a>(),
+<a name="l00544"></a>00544                                               ByteVal)) {
+<a name="l00545"></a>00545       BBI = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;  <span class="comment">// Don't invalidate iterator.</span>
+<a name="l00546"></a>00546       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00547"></a>00547     }
+<a name="l00548"></a>00548 
+<a name="l00549"></a>00549   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00550"></a>00550 }
+<a name="l00551"></a>00551 
+<a name="l00552"></a>00552 <span class="keywordtype">bool</span> MemCpyOpt::processMemSet(<a class="code" href="classllvm_1_1MemSetInst.html">MemSetInst</a> *MSI, <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> &BBI) {
+<a name="l00553"></a>00553   <span class="comment">// See if there is another memset or store neighboring this memset which</span>
+<a name="l00554"></a>00554   <span class="comment">// allows us to widen out the memset to do a single larger store.</span>
+<a name="l00555"></a>00555   <span class="keywordflow">if</span> (isa<ConstantInt>(MSI-><a class="code" href="classllvm_1_1MemIntrinsic.html#abad10f74789466601c7a025540c1c072">getLength</a>()) && !MSI-><a class="code" href="classllvm_1_1MemIntrinsic.html#a9558faebdbb62c072aed98e33604889d">isVolatile</a>())
+<a name="l00556"></a>00556     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *I = tryMergingIntoMemset(MSI, MSI-><a class="code" href="classllvm_1_1MemIntrinsic.html#ad8bf46d46e8f14bc23bd30df57cc9a77">getDest</a>(),
+<a name="l00557"></a>00557                                               MSI-><a class="code" href="classllvm_1_1MemSetInst.html#a357f35c4ac1c01e84d73a4a9e26f6aac">getValue</a>())) {
+<a name="l00558"></a>00558       BBI = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;  <span class="comment">// Don't invalidate iterator.</span>
+<a name="l00559"></a>00559       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00560"></a>00560     }
+<a name="l00561"></a>00561   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00562"></a>00562 }
+<a name="l00563"></a>00563 
+<a name="l00564"></a>00564 <span class="comment"></span>
+<a name="l00565"></a>00565 <span class="comment">/// performCallSlotOptzn - takes a memcpy and a call that it depends on,</span>
+<a name="l00566"></a>00566 <span class="comment">/// and checks for the possibility of a call slot optimization by having</span>
+<a name="l00567"></a>00567 <span class="comment">/// the call write its result directly into the destination of the memcpy.</span>
+<a name="l00568"></a>00568 <span class="comment"></span><span class="keywordtype">bool</span> MemCpyOpt::performCallSlotOptzn(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *cpy,
+<a name="l00569"></a>00569                                      <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *cpyDest, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *cpySrc,
+<a name="l00570"></a>00570                                      uint64_t cpyLen, <span class="keywordtype">unsigned</span> cpyAlign,
+<a name="l00571"></a>00571                                      <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *C) {
+<a name="l00572"></a>00572   <span class="comment">// The general transformation to keep in mind is</span>
+<a name="l00573"></a>00573   <span class="comment">//</span>
+<a name="l00574"></a>00574   <span class="comment">//   call @func(..., src, ...)</span>
+<a name="l00575"></a>00575   <span class="comment">//   memcpy(dest, src, ...)</span>
+<a name="l00576"></a>00576   <span class="comment">//</span>
+<a name="l00577"></a>00577   <span class="comment">// -></span>
+<a name="l00578"></a>00578   <span class="comment">//</span>
+<a name="l00579"></a>00579   <span class="comment">//   memcpy(dest, src, ...)</span>
+<a name="l00580"></a>00580   <span class="comment">//   call @func(..., dest, ...)</span>
+<a name="l00581"></a>00581   <span class="comment">//</span>
+<a name="l00582"></a>00582   <span class="comment">// Since moving the memcpy is technically awkward, we additionally check that</span>
+<a name="l00583"></a>00583   <span class="comment">// src only holds uninitialized values at the moment of the call, meaning that</span>
+<a name="l00584"></a>00584   <span class="comment">// the memcpy can be discarded rather than moved.</span>
+<a name="l00585"></a>00585 
+<a name="l00586"></a>00586   <span class="comment">// Deliberately get the source and destination with bitcasts stripped away,</span>
+<a name="l00587"></a>00587   <span class="comment">// because we'll need to do type comparisons based on the underlying type.</span>
+<a name="l00588"></a>00588   <a class="code" href="classllvm_1_1CallSite.html">CallSite</a> CS(C);
+<a name="l00589"></a>00589 
+<a name="l00590"></a>00590   <span class="comment">// Require that src be an alloca.  This simplifies the reasoning considerably.</span>
+<a name="l00591"></a>00591   <a class="code" href="classllvm_1_1AllocaInst.html">AllocaInst</a> *srcAlloca = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1AllocaInst.html">AllocaInst</a>>(cpySrc);
+<a name="l00592"></a>00592   <span class="keywordflow">if</span> (!srcAlloca)
+<a name="l00593"></a>00593     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00594"></a>00594 
+<a name="l00595"></a>00595   <span class="comment">// Check that all of src is copied to dest.</span>
+<a name="l00596"></a>00596   <span class="keywordflow">if</span> (TD == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00597"></a>00597 
+<a name="l00598"></a>00598   <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *srcArraySize = <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>>(srcAlloca-><a class="code" href="classllvm_1_1AllocaInst.html#a642f52c0f081ad0de10258c1d8d67b23">getArraySize</a>());
+<a name="l00599"></a>00599   <span class="keywordflow">if</span> (!srcArraySize)
+<a name="l00600"></a>00600     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00601"></a>00601 
+<a name="l00602"></a>00602   uint64_t srcSize = TD-><a class="code" href="classllvm_1_1DataLayout.html#a1d6fcc02e91ba24510aba42660c90e29">getTypeAllocSize</a>(srcAlloca-><a class="code" href="classllvm_1_1AllocaInst.html#a214c60dbb4f1ed467e5a3420db6eefd6">getAllocatedType</a>()) *
+<a name="l00603"></a>00603     srcArraySize-><a class="code" href="classllvm_1_1ConstantInt.html#a6edd823ba5e4e1effc8280ca8a1194ef" title="Return the zero extended value.">getZExtValue</a>();
+<a name="l00604"></a>00604 
+<a name="l00605"></a>00605   <span class="keywordflow">if</span> (cpyLen < srcSize)
+<a name="l00606"></a>00606     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00607"></a>00607 
+<a name="l00608"></a>00608   <span class="comment">// Check that accessing the first srcSize bytes of dest will not cause a</span>
+<a name="l00609"></a>00609   <span class="comment">// trap.  Otherwise the transform is invalid since it might cause a trap</span>
+<a name="l00610"></a>00610   <span class="comment">// to occur earlier than it otherwise would.</span>
+<a name="l00611"></a>00611   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1AllocaInst.html">AllocaInst</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a> = dyn_cast<AllocaInst>(cpyDest)) {
+<a name="l00612"></a>00612     <span class="comment">// The destination is an alloca.  Check it is larger than srcSize.</span>
+<a name="l00613"></a>00613     <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *destArraySize = <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>>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>->getArraySize());
+<a name="l00614"></a>00614     <span class="keywordflow">if</span> (!destArraySize)
+<a name="l00615"></a>00615       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00616"></a>00616 
+<a name="l00617"></a>00617     uint64_t destSize = TD-><a class="code" href="classllvm_1_1DataLayout.html#a1d6fcc02e91ba24510aba42660c90e29">getTypeAllocSize</a>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>->getAllocatedType()) *
+<a name="l00618"></a>00618       destArraySize-><a class="code" href="classllvm_1_1ConstantInt.html#a6edd823ba5e4e1effc8280ca8a1194ef" title="Return the zero extended value.">getZExtValue</a>();
+<a name="l00619"></a>00619 
+<a name="l00620"></a>00620     <span class="keywordflow">if</span> (destSize < srcSize)
+<a name="l00621"></a>00621       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00622"></a>00622   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Argument.html" title="LLVM Argument representation.">Argument</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a> = dyn_cast<Argument>(cpyDest)) {
+<a name="l00623"></a>00623     <span class="comment">// If the destination is an sret parameter then only accesses that are</span>
+<a name="l00624"></a>00624     <span class="comment">// outside of the returned struct type can trap.</span>
+<a name="l00625"></a>00625     <span class="keywordflow">if</span> (!<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>->hasStructRetAttr())
+<a name="l00626"></a>00626       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00627"></a>00627 
+<a name="l00628"></a>00628     <a class="code" href="classllvm_1_1Type.html">Type</a> *StructTy = cast<PointerType>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>->getType())->getElementType();
+<a name="l00629"></a>00629     uint64_t destSize = TD-><a class="code" href="classllvm_1_1DataLayout.html#a1d6fcc02e91ba24510aba42660c90e29">getTypeAllocSize</a>(StructTy);
+<a name="l00630"></a>00630 
+<a name="l00631"></a>00631     <span class="keywordflow">if</span> (destSize < srcSize)
+<a name="l00632"></a>00632       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00633"></a>00633   } <span class="keywordflow">else</span> {
+<a name="l00634"></a>00634     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00635"></a>00635   }
+<a name="l00636"></a>00636 
+<a name="l00637"></a>00637   <span class="comment">// Check that dest points to memory that is at least as aligned as src.</span>
+<a name="l00638"></a>00638   <span class="keywordtype">unsigned</span> srcAlign = srcAlloca-><a class="code" href="classllvm_1_1AllocaInst.html#ad441932c20e5b9ba36c8c72a6c7f5ec3">getAlignment</a>();
+<a name="l00639"></a>00639   <span class="keywordflow">if</span> (!srcAlign)
+<a name="l00640"></a>00640     srcAlign = TD-><a class="code" href="classllvm_1_1DataLayout.html#abb381519d34dcb9ccf673bf7689d0721">getABITypeAlignment</a>(srcAlloca-><a class="code" href="classllvm_1_1AllocaInst.html#a214c60dbb4f1ed467e5a3420db6eefd6">getAllocatedType</a>());
+<a name="l00641"></a>00641   <span class="keywordtype">bool</span> isDestSufficientlyAligned = srcAlign <= cpyAlign;
+<a name="l00642"></a>00642   <span class="comment">// If dest is not aligned enough and we can't increase its alignment then</span>
+<a name="l00643"></a>00643   <span class="comment">// bail out.</span>
+<a name="l00644"></a>00644   <span class="keywordflow">if</span> (!isDestSufficientlyAligned && !isa<AllocaInst>(cpyDest))
+<a name="l00645"></a>00645     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00646"></a>00646 
+<a name="l00647"></a>00647   <span class="comment">// Check that src is not accessed except via the call and the memcpy.  This</span>
+<a name="l00648"></a>00648   <span class="comment">// guarantees that it holds only undefined values when passed in (so the final</span>
+<a name="l00649"></a>00649   <span class="comment">// memcpy can be dropped), that it is not read or written between the call and</span>
+<a name="l00650"></a>00650   <span class="comment">// the memcpy, and that writing beyond the end of it is undefined.</span>
+<a name="l00651"></a>00651   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<User*, 8></a> srcUseList(srcAlloca-><a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>(),
+<a name="l00652"></a>00652                                    srcAlloca-><a class="code" href="classllvm_1_1Value.html#ad86469939d2a8bdd4169be9403b89f5a">use_end</a>());
+<a name="l00653"></a>00653   <span class="keywordflow">while</span> (!srcUseList.empty()) {
+<a name="l00654"></a>00654     <a class="code" href="classllvm_1_1User.html">User</a> *UI = srcUseList.pop_back_val();
+<a name="l00655"></a>00655 
+<a name="l00656"></a>00656     <span class="keywordflow">if</span> (isa<BitCastInst>(UI)) {
+<a name="l00657"></a>00657       <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1Value.html#ac33c7ecbf1c0f1e8bf93403522e6976b">User::use_iterator</a> I = UI-><a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>(), E = UI-><a class="code" href="classllvm_1_1Value.html#ad86469939d2a8bdd4169be9403b89f5a">use_end</a>();
+<a name="l00658"></a>00658            I != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)
+<a name="l00659"></a>00659         srcUseList.push_back(*I);
+<a name="l00660"></a>00660     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1GetElementPtrInst.html">GetElementPtrInst</a> *G = dyn_cast<GetElementPtrInst>(UI)) {
+<a name="l00661"></a>00661       <span class="keywordflow">if</span> (G->hasAllZeroIndices())
+<a name="l00662"></a>00662         <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1Value.html#ac33c7ecbf1c0f1e8bf93403522e6976b">User::use_iterator</a> I = UI-><a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>(), E = UI-><a class="code" href="classllvm_1_1Value.html#ad86469939d2a8bdd4169be9403b89f5a">use_end</a>();
+<a name="l00663"></a>00663              I != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)
+<a name="l00664"></a>00664           srcUseList.push_back(*I);
+<a name="l00665"></a>00665       <span class="keywordflow">else</span>
+<a name="l00666"></a>00666         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00667"></a>00667     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (UI != C && UI != cpy) {
+<a name="l00668"></a>00668       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00669"></a>00669     }
+<a name="l00670"></a>00670   }
+<a name="l00671"></a>00671 
+<a name="l00672"></a>00672   <span class="comment">// Since we're changing the parameter to the callsite, we need to make sure</span>
+<a name="l00673"></a>00673   <span class="comment">// that what would be the new parameter dominates the callsite.</span>
+<a name="l00674"></a>00674   <a class="code" href="classllvm_1_1DominatorTree.html">DominatorTree</a> &DT = getAnalysis<DominatorTree>();
+<a name="l00675"></a>00675   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *cpyDestInst = dyn_cast<Instruction>(cpyDest))
+<a name="l00676"></a>00676     <span class="keywordflow">if</span> (!DT.<a class="code" href="classllvm_1_1DominatorTree.html#a6fe9272dc67fe2ff4cafc33b895c4a6c">dominates</a>(cpyDestInst, C))
+<a name="l00677"></a>00677       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00678"></a>00678 
+<a name="l00679"></a>00679   <span class="comment">// In addition to knowing that the call does not access src in some</span>
+<a name="l00680"></a>00680   <span class="comment">// unexpected manner, for example via a global, which we deduce from</span>
+<a name="l00681"></a>00681   <span class="comment">// the use analysis, we also need to know that it does not sneakily</span>
+<a name="l00682"></a>00682   <span class="comment">// access dest.  We rely on AA to figure this out for us.</span>
+<a name="l00683"></a>00683   <a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a> &AA = getAnalysis<AliasAnalysis>();
+<a name="l00684"></a>00684   <a class="code" href="classllvm_1_1AliasAnalysis.html#a83d29c51155787c607268c2659559460">AliasAnalysis::ModRefResult</a> MR = AA.<a class="code" href="classllvm_1_1AliasAnalysis.html#a3f09a65a9c9d7bfff6c6271976d1baba">getModRefInfo</a>(C, cpyDest, srcSize);
+<a name="l00685"></a>00685   <span class="comment">// If necessary, perform additional analysis.</span>
+<a name="l00686"></a>00686   <span class="keywordflow">if</span> (MR != <a class="code" href="classllvm_1_1AliasAnalysis.html#a83d29c51155787c607268c2659559460a52fc7f344e74f168cb4b4c808dcfde1c">AliasAnalysis::NoModRef</a>)
+<a name="l00687"></a>00687     MR = AA.<a class="code" href="classllvm_1_1AliasAnalysis.html#a650241dcf00905f4085c878ec988e27f">callCapturesBefore</a>(C, cpyDest, srcSize, &DT);
+<a name="l00688"></a>00688   <span class="keywordflow">if</span> (MR != <a class="code" href="classllvm_1_1AliasAnalysis.html#a83d29c51155787c607268c2659559460a52fc7f344e74f168cb4b4c808dcfde1c">AliasAnalysis::NoModRef</a>)
+<a name="l00689"></a>00689     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00690"></a>00690 
+<a name="l00691"></a>00691   <span class="comment">// All the checks have passed, so do the transformation.</span>
+<a name="l00692"></a>00692   <span class="keywordtype">bool</span> changedArgument = <span class="keyword">false</span>;
+<a name="l00693"></a>00693   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < CS.arg_size(); ++i)
+<a name="l00694"></a>00694     <span class="keywordflow">if</span> (CS.getArgument(i)->stripPointerCasts() == cpySrc) {
+<a name="l00695"></a>00695       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Dest = cpySrc-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>() == cpyDest-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>() ?  cpyDest
+<a name="l00696"></a>00696         : <a class="code" href="classllvm_1_1CastInst.html#acd347d07162a5a80dac61e5bdea9616c" title="Create a BitCast or a PtrToInt cast instruction.">CastInst::CreatePointerCast</a>(cpyDest, cpySrc-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(),
+<a name="l00697"></a>00697                                       cpyDest-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>(), <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>);
+<a name="l00698"></a>00698       changedArgument = <span class="keyword">true</span>;
+<a name="l00699"></a>00699       <span class="keywordflow">if</span> (CS.getArgument(i)->getType() == Dest-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>())
+<a name="l00700"></a>00700         CS.setArgument(i, Dest);
+<a name="l00701"></a>00701       <span class="keywordflow">else</span>
+<a name="l00702"></a>00702         CS.setArgument(i, <a class="code" href="classllvm_1_1CastInst.html#acd347d07162a5a80dac61e5bdea9616c" title="Create a BitCast or a PtrToInt cast instruction.">CastInst::CreatePointerCast</a>(Dest,
+<a name="l00703"></a>00703                           CS.getArgument(i)-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), Dest-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>(), <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>));
+<a name="l00704"></a>00704     }
+<a name="l00705"></a>00705 
+<a name="l00706"></a>00706   <span class="keywordflow">if</span> (!changedArgument)
+<a name="l00707"></a>00707     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00708"></a>00708 
+<a name="l00709"></a>00709   <span class="comment">// If the destination wasn't sufficiently aligned then increase its alignment.</span>
+<a name="l00710"></a>00710   <span class="keywordflow">if</span> (!isDestSufficientlyAligned) {
+<a name="l00711"></a>00711     assert(isa<AllocaInst>(cpyDest) && <span class="stringliteral">"Can only increase alloca alignment!"</span>);
+<a name="l00712"></a>00712     cast<AllocaInst>(cpyDest)->setAlignment(srcAlign);
+<a name="l00713"></a>00713   }
+<a name="l00714"></a>00714 
+<a name="l00715"></a>00715   <span class="comment">// Drop any cached information about the call, because we may have changed</span>
+<a name="l00716"></a>00716   <span class="comment">// its dependence information by changing its parameter.</span>
+<a name="l00717"></a>00717   MD->removeInstruction(C);
+<a name="l00718"></a>00718 
+<a name="l00719"></a>00719   <span class="comment">// Remove the memcpy.</span>
+<a name="l00720"></a>00720   MD->removeInstruction(cpy);
+<a name="l00721"></a>00721   ++NumMemCpyInstr;
+<a name="l00722"></a>00722 
+<a name="l00723"></a>00723   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00724"></a>00724 }
+<a name="l00725"></a>00725 <span class="comment"></span>
+<a name="l00726"></a>00726 <span class="comment">/// processMemCpyMemCpyDependence - We've found that the (upward scanning)</span>
+<a name="l00727"></a>00727 <span class="comment">/// memory dependence of memcpy 'M' is the memcpy 'MDep'.  Try to simplify M to</span>
+<a name="l00728"></a>00728 <span class="comment">/// copy from MDep's input if we can.  MSize is the size of M's copy.</span>
+<a name="l00729"></a>00729 <span class="comment">///</span>
+<a name="l00730"></a>00730 <span class="comment"></span><span class="keywordtype">bool</span> MemCpyOpt::processMemCpyMemCpyDependence(<a class="code" href="classllvm_1_1MemCpyInst.html">MemCpyInst</a> *M, <a class="code" href="classllvm_1_1MemCpyInst.html">MemCpyInst</a> *MDep,
+<a name="l00731"></a>00731                                               uint64_t MSize) {
+<a name="l00732"></a>00732   <span class="comment">// We can only transforms memcpy's where the dest of one is the source of the</span>
+<a name="l00733"></a>00733   <span class="comment">// other.</span>
+<a name="l00734"></a>00734   <span class="keywordflow">if</span> (M-><a class="code" href="classllvm_1_1MemTransferInst.html#a1d23e59237a8e4a61f4af0deb7320104">getSource</a>() != MDep-><a class="code" href="classllvm_1_1MemIntrinsic.html#ad8bf46d46e8f14bc23bd30df57cc9a77">getDest</a>() || MDep-><a class="code" href="classllvm_1_1MemIntrinsic.html#a9558faebdbb62c072aed98e33604889d">isVolatile</a>())
+<a name="l00735"></a>00735     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00736"></a>00736 
+<a name="l00737"></a>00737   <span class="comment">// If dep instruction is reading from our current input, then it is a noop</span>
+<a name="l00738"></a>00738   <span class="comment">// transfer and substituting the input won't change this instruction.  Just</span>
+<a name="l00739"></a>00739   <span class="comment">// ignore the input and let someone else zap MDep.  This handles cases like:</span>
+<a name="l00740"></a>00740   <span class="comment">//    memcpy(a <- a)</span>
+<a name="l00741"></a>00741   <span class="comment">//    memcpy(b <- a)</span>
+<a name="l00742"></a>00742   <span class="keywordflow">if</span> (M-><a class="code" href="classllvm_1_1MemTransferInst.html#a1d23e59237a8e4a61f4af0deb7320104">getSource</a>() == MDep-><a class="code" href="classllvm_1_1MemTransferInst.html#a1d23e59237a8e4a61f4af0deb7320104">getSource</a>())
+<a name="l00743"></a>00743     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00744"></a>00744 
+<a name="l00745"></a>00745   <span class="comment">// Second, the length of the memcpy's must be the same, or the preceding one</span>
+<a name="l00746"></a>00746   <span class="comment">// must be larger than the following one.</span>
+<a name="l00747"></a>00747   <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *MDepLen = <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>>(MDep-><a class="code" href="classllvm_1_1MemIntrinsic.html#abad10f74789466601c7a025540c1c072">getLength</a>());
+<a name="l00748"></a>00748   <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *MLen = <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>>(M-><a class="code" href="classllvm_1_1MemIntrinsic.html#abad10f74789466601c7a025540c1c072">getLength</a>());
+<a name="l00749"></a>00749   <span class="keywordflow">if</span> (!MDepLen || !MLen || MDepLen-><a class="code" href="classllvm_1_1ConstantInt.html#a6edd823ba5e4e1effc8280ca8a1194ef" title="Return the zero extended value.">getZExtValue</a>() < MLen->getZExtValue())
+<a name="l00750"></a>00750     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00751"></a>00751 
+<a name="l00752"></a>00752   <a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a> &AA = getAnalysis<AliasAnalysis>();
+<a name="l00753"></a>00753 
+<a name="l00754"></a>00754   <span class="comment">// Verify that the copied-from memory doesn't change in between the two</span>
+<a name="l00755"></a>00755   <span class="comment">// transfers.  For example, in:</span>
+<a name="l00756"></a>00756   <span class="comment">//    memcpy(a <- b)</span>
+<a name="l00757"></a>00757   <span class="comment">//    *b = 42;</span>
+<a name="l00758"></a>00758   <span class="comment">//    memcpy(c <- a)</span>
+<a name="l00759"></a>00759   <span class="comment">// It would be invalid to transform the second memcpy into memcpy(c <- b).</span>
+<a name="l00760"></a>00760   <span class="comment">//</span>
+<a name="l00761"></a>00761   <span class="comment">// TODO: If the code between M and MDep is transparent to the destination "c",</span>
+<a name="l00762"></a>00762   <span class="comment">// then we could still perform the xform by moving M up to the first memcpy.</span>
+<a name="l00763"></a>00763   <span class="comment">//</span>
+<a name="l00764"></a>00764   <span class="comment">// NOTE: This is conservative, it will stop on any read from the source loc,</span>
+<a name="l00765"></a>00765   <span class="comment">// not just the defining memcpy.</span>
+<a name="l00766"></a>00766   <a class="code" href="classllvm_1_1MemDepResult.html">MemDepResult</a> SourceDep =
+<a name="l00767"></a>00767     MD->getPointerDependencyFrom(AA.<a class="code" href="classllvm_1_1AliasAnalysis.html#a7130fcc16699c8bad067d00ccc5a8c95">getLocationForSource</a>(MDep),
+<a name="l00768"></a>00768                                  <span class="keyword">false</span>, M, M-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>());
+<a name="l00769"></a>00769   <span class="keywordflow">if</span> (!SourceDep.isClobber() || SourceDep.getInst() != MDep)
+<a name="l00770"></a>00770     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00771"></a>00771 
+<a name="l00772"></a>00772   <span class="comment">// If the dest of the second might alias the source of the first, then the</span>
+<a name="l00773"></a>00773   <span class="comment">// source and dest might overlap.  We still want to eliminate the intermediate</span>
+<a name="l00774"></a>00774   <span class="comment">// value, but we have to generate a memmove instead of memcpy.</span>
+<a name="l00775"></a>00775   <span class="keywordtype">bool</span> UseMemMove = <span class="keyword">false</span>;
+<a name="l00776"></a>00776   <span class="keywordflow">if</span> (!AA.<a class="code" href="classllvm_1_1AliasAnalysis.html#a18afcc2fefe15651254db4a92c29f5c4">isNoAlias</a>(AA.<a class="code" href="classllvm_1_1AliasAnalysis.html#af02eef65834a820ff7a4f05a831d39ea">getLocationForDest</a>(M), AA.<a class="code" href="classllvm_1_1AliasAnalysis.html#a7130fcc16699c8bad067d00ccc5a8c95">getLocationForSource</a>(MDep)))
+<a name="l00777"></a>00777     UseMemMove = <span class="keyword">true</span>;
+<a name="l00778"></a>00778 
+<a name="l00779"></a>00779   <span class="comment">// If all checks passed, then we can transform M.</span>
+<a name="l00780"></a>00780 
+<a name="l00781"></a>00781   <span class="comment">// Make sure to use the lesser of the alignment of the source and the dest</span>
+<a name="l00782"></a>00782   <span class="comment">// since we're changing where we're reading from, but don't want to increase</span>
+<a name="l00783"></a>00783   <span class="comment">// the alignment past what can be read from or written to.</span>
+<a name="l00784"></a>00784   <span class="comment">// TODO: Is this worth it if we're creating a less aligned memcpy? For</span>
+<a name="l00785"></a>00785   <span class="comment">// example we could be moving from movaps -> movq on x86.</span>
+<a name="l00786"></a>00786   <span class="keywordtype">unsigned</span> Align = std::min(MDep-><a class="code" href="classllvm_1_1MemIntrinsic.html#a42dd65db3521498f10afb8c6f66e1bb5">getAlignment</a>(), M-><a class="code" href="classllvm_1_1MemIntrinsic.html#a42dd65db3521498f10afb8c6f66e1bb5">getAlignment</a>());
+<a name="l00787"></a>00787 
+<a name="l00788"></a>00788   <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> Builder(M);
+<a name="l00789"></a>00789   <span class="keywordflow">if</span> (UseMemMove)
+<a name="l00790"></a>00790     Builder.CreateMemMove(M-><a class="code" href="classllvm_1_1MemIntrinsic.html#a3ec0c47a5532e568d54c8d452dfb58df">getRawDest</a>(), MDep-><a class="code" href="classllvm_1_1MemTransferInst.html#a26bfca1607622229a625f2db73aed2ba">getRawSource</a>(), M-><a class="code" href="classllvm_1_1MemIntrinsic.html#abad10f74789466601c7a025540c1c072">getLength</a>(),
+<a name="l00791"></a>00791                           Align, M-><a class="code" href="classllvm_1_1MemIntrinsic.html#a9558faebdbb62c072aed98e33604889d">isVolatile</a>());
+<a name="l00792"></a>00792   <span class="keywordflow">else</span>
+<a name="l00793"></a>00793     Builder.CreateMemCpy(M-><a class="code" href="classllvm_1_1MemIntrinsic.html#a3ec0c47a5532e568d54c8d452dfb58df">getRawDest</a>(), MDep-><a class="code" href="classllvm_1_1MemTransferInst.html#a26bfca1607622229a625f2db73aed2ba">getRawSource</a>(), M-><a class="code" href="classllvm_1_1MemIntrinsic.html#abad10f74789466601c7a025540c1c072">getLength</a>(),
+<a name="l00794"></a>00794                          Align, M-><a class="code" href="classllvm_1_1MemIntrinsic.html#a9558faebdbb62c072aed98e33604889d">isVolatile</a>());
+<a name="l00795"></a>00795 
+<a name="l00796"></a>00796   <span class="comment">// Remove the instruction we're replacing.</span>
+<a name="l00797"></a>00797   MD->removeInstruction(M);
+<a name="l00798"></a>00798   M-><a class="code" href="classllvm_1_1Instruction.html#a6fe2f06b8a4b2c3d6308afb223a0238a">eraseFromParent</a>();
+<a name="l00799"></a>00799   ++NumMemCpyInstr;
+<a name="l00800"></a>00800   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00801"></a>00801 }
+<a name="l00802"></a>00802 
+<a name="l00803"></a>00803 <span class="comment"></span>
+<a name="l00804"></a>00804 <span class="comment">/// processMemCpy - perform simplification of memcpy's.  If we have memcpy A</span>
+<a name="l00805"></a>00805 <span class="comment">/// which copies X to Y, and memcpy B which copies Y to Z, then we can rewrite</span>
+<a name="l00806"></a>00806 <span class="comment">/// B to be a memcpy from X to Z (or potentially a memmove, depending on</span>
+<a name="l00807"></a>00807 <span class="comment">/// circumstances). This allows later passes to remove the first memcpy</span>
+<a name="l00808"></a>00808 <span class="comment">/// altogether.</span>
+<a name="l00809"></a>00809 <span class="comment"></span><span class="keywordtype">bool</span> MemCpyOpt::processMemCpy(<a class="code" href="classllvm_1_1MemCpyInst.html">MemCpyInst</a> *M) {
+<a name="l00810"></a>00810   <span class="comment">// We can only optimize statically-sized memcpy's that are non-volatile.</span>
+<a name="l00811"></a>00811   <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *CopySize = <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>>(M-><a class="code" href="classllvm_1_1MemIntrinsic.html#abad10f74789466601c7a025540c1c072">getLength</a>());
+<a name="l00812"></a>00812   <span class="keywordflow">if</span> (CopySize == 0 || M-><a class="code" href="classllvm_1_1MemIntrinsic.html#a9558faebdbb62c072aed98e33604889d">isVolatile</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00813"></a>00813 
+<a name="l00814"></a>00814   <span class="comment">// If the source and destination of the memcpy are the same, then zap it.</span>
+<a name="l00815"></a>00815   <span class="keywordflow">if</span> (M-><a class="code" href="classllvm_1_1MemTransferInst.html#a1d23e59237a8e4a61f4af0deb7320104">getSource</a>() == M-><a class="code" href="classllvm_1_1MemIntrinsic.html#ad8bf46d46e8f14bc23bd30df57cc9a77">getDest</a>()) {
+<a name="l00816"></a>00816     MD->removeInstruction(M);
+<a name="l00817"></a>00817     M-><a class="code" href="classllvm_1_1Instruction.html#a6fe2f06b8a4b2c3d6308afb223a0238a">eraseFromParent</a>();
+<a name="l00818"></a>00818     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00819"></a>00819   }
+<a name="l00820"></a>00820 
+<a name="l00821"></a>00821   <span class="comment">// If copying from a constant, try to turn the memcpy into a memset.</span>
+<a name="l00822"></a>00822   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1GlobalVariable.html">GlobalVariable</a> *GV = dyn_cast<GlobalVariable>(M-><a class="code" href="classllvm_1_1MemTransferInst.html#a1d23e59237a8e4a61f4af0deb7320104">getSource</a>()))
+<a name="l00823"></a>00823     <span class="keywordflow">if</span> (GV->isConstant() && GV->hasDefinitiveInitializer())
+<a name="l00824"></a>00824       <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *ByteVal = <a class="code" href="namespacellvm.html#a9945de214e3ba2b16f664bcdc953f0e0">isBytewiseValue</a>(GV->getInitializer())) {
+<a name="l00825"></a>00825         <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> Builder(M);
+<a name="l00826"></a>00826         Builder.CreateMemSet(M-><a class="code" href="classllvm_1_1MemIntrinsic.html#a3ec0c47a5532e568d54c8d452dfb58df">getRawDest</a>(), ByteVal, CopySize,
+<a name="l00827"></a>00827                              M-><a class="code" href="classllvm_1_1MemIntrinsic.html#a42dd65db3521498f10afb8c6f66e1bb5">getAlignment</a>(), <span class="keyword">false</span>);
+<a name="l00828"></a>00828         MD->removeInstruction(M);
+<a name="l00829"></a>00829         M-><a class="code" href="classllvm_1_1Instruction.html#a6fe2f06b8a4b2c3d6308afb223a0238a">eraseFromParent</a>();
+<a name="l00830"></a>00830         ++NumCpyToSet;
+<a name="l00831"></a>00831         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00832"></a>00832       }
+<a name="l00833"></a>00833 
+<a name="l00834"></a>00834   <span class="comment">// The are two possible optimizations we can do for memcpy:</span>
+<a name="l00835"></a>00835   <span class="comment">//   a) memcpy-memcpy xform which exposes redundance for DSE.</span>
+<a name="l00836"></a>00836   <span class="comment">//   b) call-memcpy xform for return slot optimization.</span>
+<a name="l00837"></a>00837   <a class="code" href="classllvm_1_1MemDepResult.html">MemDepResult</a> DepInfo = MD->getDependency(M);
+<a name="l00838"></a>00838   <span class="keywordflow">if</span> (DepInfo.<a class="code" href="classllvm_1_1MemDepResult.html#ae409b288c7f70a6c57586535abed3808">isClobber</a>()) {
+<a name="l00839"></a>00839     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *C = dyn_cast<CallInst>(DepInfo.<a class="code" href="classllvm_1_1MemDepResult.html#a8452eb6508c00e2b6d56926bebc79f57">getInst</a>())) {
+<a name="l00840"></a>00840       <span class="keywordflow">if</span> (performCallSlotOptzn(M, M-><a class="code" href="classllvm_1_1MemIntrinsic.html#ad8bf46d46e8f14bc23bd30df57cc9a77">getDest</a>(), M-><a class="code" href="classllvm_1_1MemTransferInst.html#a1d23e59237a8e4a61f4af0deb7320104">getSource</a>(),
+<a name="l00841"></a>00841                                CopySize->getZExtValue(), M-><a class="code" href="classllvm_1_1MemIntrinsic.html#a42dd65db3521498f10afb8c6f66e1bb5">getAlignment</a>(),
+<a name="l00842"></a>00842                                <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>)) {
+<a name="l00843"></a>00843         MD->removeInstruction(M);
+<a name="l00844"></a>00844         M-><a class="code" href="classllvm_1_1Instruction.html#a6fe2f06b8a4b2c3d6308afb223a0238a">eraseFromParent</a>();
+<a name="l00845"></a>00845         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00846"></a>00846       }
+<a name="l00847"></a>00847     }
+<a name="l00848"></a>00848   }
+<a name="l00849"></a>00849 
+<a name="l00850"></a>00850   <a class="code" href="structllvm_1_1AliasAnalysis_1_1Location.html" title="Location - A description of a memory location.">AliasAnalysis::Location</a> SrcLoc = <a class="code" href="classllvm_1_1AliasAnalysis.html#a7130fcc16699c8bad067d00ccc5a8c95">AliasAnalysis::getLocationForSource</a>(M);
+<a name="l00851"></a>00851   <a class="code" href="classllvm_1_1MemDepResult.html">MemDepResult</a> SrcDepInfo = MD->getPointerDependencyFrom(SrcLoc, <span class="keyword">true</span>,
+<a name="l00852"></a>00852                                                          M, M-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>());
+<a name="l00853"></a>00853   <span class="keywordflow">if</span> (SrcDepInfo.<a class="code" href="classllvm_1_1MemDepResult.html#ae409b288c7f70a6c57586535abed3808">isClobber</a>()) {
+<a name="l00854"></a>00854     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1MemCpyInst.html">MemCpyInst</a> *MDep = dyn_cast<MemCpyInst>(SrcDepInfo.<a class="code" href="classllvm_1_1MemDepResult.html#a8452eb6508c00e2b6d56926bebc79f57">getInst</a>()))
+<a name="l00855"></a>00855       <span class="keywordflow">return</span> processMemCpyMemCpyDependence(M, MDep, CopySize->getZExtValue());
+<a name="l00856"></a>00856   }
+<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">/// processMemMove - Transforms memmove calls to memcpy calls when the src/dst</span>
+<a name="l00862"></a>00862 <span class="comment">/// are guaranteed not to alias.</span>
+<a name="l00863"></a>00863 <span class="comment"></span><span class="keywordtype">bool</span> MemCpyOpt::processMemMove(<a class="code" href="classllvm_1_1MemMoveInst.html">MemMoveInst</a> *M) {
+<a name="l00864"></a>00864   <a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a> &AA = getAnalysis<AliasAnalysis>();
+<a name="l00865"></a>00865 
+<a name="l00866"></a>00866   <span class="keywordflow">if</span> (!TLI->has(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa9e02525b88a00a1d0e8dcded032acbee" title="void *memmove(void *s1, const void *s2, size_t n);">LibFunc::memmove</a>))
+<a name="l00867"></a>00867     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00868"></a>00868 
+<a name="l00869"></a>00869   <span class="comment">// See if the pointers alias.</span>
+<a name="l00870"></a>00870   <span class="keywordflow">if</span> (!AA.<a class="code" href="classllvm_1_1AliasAnalysis.html#a18afcc2fefe15651254db4a92c29f5c4">isNoAlias</a>(AA.<a class="code" href="classllvm_1_1AliasAnalysis.html#af02eef65834a820ff7a4f05a831d39ea">getLocationForDest</a>(M), AA.<a class="code" href="classllvm_1_1AliasAnalysis.html#a7130fcc16699c8bad067d00ccc5a8c95">getLocationForSource</a>(M)))
+<a name="l00871"></a>00871     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00872"></a>00872 
+<a name="l00873"></a>00873   <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">"MemCpyOpt: Optimizing memmove -> memcpy: "</span> << *M << <span class="stringliteral">"\n"</span>);
+<a name="l00874"></a>00874 
+<a name="l00875"></a>00875   <span class="comment">// If not, then we know we can transform this.</span>
+<a name="l00876"></a>00876   <a class="code" href="classllvm_1_1Module.html" title="The main container class for the LLVM Intermediate Representation.">Module</a> *Mod = M-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>()-><a class="code" href="classllvm_1_1GlobalValue.html#a9e1fc23a17e97d2d1732e753ae9251ac">getParent</a>();
+<a name="l00877"></a>00877   <a class="code" href="classllvm_1_1Type.html">Type</a> *ArgTys[3] = { M-><a class="code" href="classllvm_1_1MemIntrinsic.html#a3ec0c47a5532e568d54c8d452dfb58df">getRawDest</a>()-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(),
+<a name="l00878"></a>00878                       M-><a class="code" href="classllvm_1_1MemTransferInst.html#a26bfca1607622229a625f2db73aed2ba">getRawSource</a>()-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(),
+<a name="l00879"></a>00879                       M-><a class="code" href="classllvm_1_1MemIntrinsic.html#abad10f74789466601c7a025540c1c072">getLength</a>()-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>() };
+<a name="l00880"></a>00880   M-><a class="code" href="classllvm_1_1CallInst.html#a61f747edd1ca001427e02e02a320b709" title="setCalledFunction - Set the function called.">setCalledFunction</a>(<a class="code" href="namespacellvm_1_1Intrinsic.html#a77b5c176e55722134f1fa5bf16f4d0c1">Intrinsic::getDeclaration</a>(Mod, <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fad5203242bc89eaa644dc7b7ba2371c1d" title="void *memcpy(void *s1, const void *s2, size_t n);">Intrinsic::memcpy</a>,
+<a name="l00881"></a>00881                                                  ArgTys));
+<a name="l00882"></a>00882 
+<a name="l00883"></a>00883   <span class="comment">// MemDep may have over conservative information about this instruction, just</span>
+<a name="l00884"></a>00884   <span class="comment">// conservatively flush it from the cache.</span>
+<a name="l00885"></a>00885   MD->removeInstruction(M);
+<a name="l00886"></a>00886 
+<a name="l00887"></a>00887   ++NumMoveToCpy;
+<a name="l00888"></a>00888   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00889"></a>00889 }
+<a name="l00890"></a>00890 <span class="comment"></span>
+<a name="l00891"></a>00891 <span class="comment">/// processByValArgument - This is called on every byval argument in call sites.</span>
+<a name="l00892"></a>00892 <span class="comment"></span><span class="keywordtype">bool</span> MemCpyOpt::processByValArgument(<a class="code" href="classllvm_1_1CallSite.html">CallSite</a> CS, <span class="keywordtype">unsigned</span> ArgNo) {
+<a name="l00893"></a>00893   <span class="keywordflow">if</span> (TD == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00894"></a>00894 
+<a name="l00895"></a>00895   <span class="comment">// Find out what feeds this byval argument.</span>
+<a name="l00896"></a>00896   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *ByValArg = CS.<a class="code" href="classllvm_1_1CallSiteBase.html#a65a550af73bd99c96abea847916aa4e9">getArgument</a>(ArgNo);
+<a name="l00897"></a>00897   <a class="code" href="classllvm_1_1Type.html">Type</a> *ByValTy = cast<PointerType>(ByValArg-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>())->getElementType();
+<a name="l00898"></a>00898   uint64_t ByValSize = TD-><a class="code" href="classllvm_1_1DataLayout.html#a1d6fcc02e91ba24510aba42660c90e29">getTypeAllocSize</a>(ByValTy);
+<a name="l00899"></a>00899   <a class="code" href="classllvm_1_1MemDepResult.html">MemDepResult</a> DepInfo =
+<a name="l00900"></a>00900     MD->getPointerDependencyFrom(<a class="code" href="structllvm_1_1AliasAnalysis_1_1Location.html" title="Location - A description of a memory location.">AliasAnalysis::Location</a>(ByValArg, ByValSize),
+<a name="l00901"></a>00901                                  <span class="keyword">true</span>, CS.<a class="code" href="classllvm_1_1CallSiteBase.html#ae4c67f835911559821939fb23a2e7aff">getInstruction</a>(),
+<a name="l00902"></a>00902                                  CS.<a class="code" href="classllvm_1_1CallSiteBase.html#ae4c67f835911559821939fb23a2e7aff">getInstruction</a>()-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>());
+<a name="l00903"></a>00903   <span class="keywordflow">if</span> (!DepInfo.<a class="code" href="classllvm_1_1MemDepResult.html#ae409b288c7f70a6c57586535abed3808">isClobber</a>())
+<a name="l00904"></a>00904     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00905"></a>00905 
+<a name="l00906"></a>00906   <span class="comment">// If the byval argument isn't fed by a memcpy, ignore it.  If it is fed by</span>
+<a name="l00907"></a>00907   <span class="comment">// a memcpy, see if we can byval from the source of the memcpy instead of the</span>
+<a name="l00908"></a>00908   <span class="comment">// result.</span>
+<a name="l00909"></a>00909   <a class="code" href="classllvm_1_1MemCpyInst.html">MemCpyInst</a> *MDep = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1MemCpyInst.html">MemCpyInst</a>>(DepInfo.<a class="code" href="classllvm_1_1MemDepResult.html#a8452eb6508c00e2b6d56926bebc79f57">getInst</a>());
+<a name="l00910"></a>00910   <span class="keywordflow">if</span> (MDep == 0 || MDep-><a class="code" href="classllvm_1_1MemIntrinsic.html#a9558faebdbb62c072aed98e33604889d">isVolatile</a>() ||
+<a name="l00911"></a>00911       ByValArg-><a class="code" href="classllvm_1_1Value.html#a38ea12c04523d63adda732b9c5d6da0a">stripPointerCasts</a>() != MDep-><a class="code" href="classllvm_1_1MemIntrinsic.html#ad8bf46d46e8f14bc23bd30df57cc9a77">getDest</a>())
+<a name="l00912"></a>00912     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00913"></a>00913 
+<a name="l00914"></a>00914   <span class="comment">// The length of the memcpy must be larger or equal to the size of the byval.</span>
+<a name="l00915"></a>00915   <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *C1 = <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>>(MDep-><a class="code" href="classllvm_1_1MemIntrinsic.html#abad10f74789466601c7a025540c1c072">getLength</a>());
+<a name="l00916"></a>00916   <span class="keywordflow">if</span> (C1 == 0 || C1-><a class="code" href="classllvm_1_1ConstantInt.html#af8dde13a97efce293a7b04daf1e208fb" title="Return the constant's value.">getValue</a>().<a class="code" href="classllvm_1_1APInt.html#a7dc983ebf0eb2d255fa90a67063c72e2" title="Get zero extended value.">getZExtValue</a>() < ByValSize)
+<a name="l00917"></a>00917     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00918"></a>00918 
+<a name="l00919"></a>00919   <span class="comment">// Get the alignment of the byval.  If the call doesn't specify the alignment,</span>
+<a name="l00920"></a>00920   <span class="comment">// then it is some target specific value that we can't know.</span>
+<a name="l00921"></a>00921   <span class="keywordtype">unsigned</span> ByValAlign = CS.<a class="code" href="classllvm_1_1CallSiteBase.html#af23ecc474bd52056428ee09ebe9f044f" title="Extract the alignment for a call or parameter (0=unknown).">getParamAlignment</a>(ArgNo+1);
+<a name="l00922"></a>00922   <span class="keywordflow">if</span> (ByValAlign == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00923"></a>00923 
+<a name="l00924"></a>00924   <span class="comment">// If it is greater than the memcpy, then we check to see if we can force the</span>
+<a name="l00925"></a>00925   <span class="comment">// source of the memcpy to the alignment we need.  If we fail, we bail out.</span>
+<a name="l00926"></a>00926   <span class="keywordflow">if</span> (MDep-><a class="code" href="classllvm_1_1MemIntrinsic.html#a42dd65db3521498f10afb8c6f66e1bb5">getAlignment</a>() < ByValAlign &&
+<a name="l00927"></a>00927       <a class="code" href="namespacellvm.html#a3dd948f1535b4b28f2a7d45a5c11a34a">getOrEnforceKnownAlignment</a>(MDep-><a class="code" href="classllvm_1_1MemTransferInst.html#a1d23e59237a8e4a61f4af0deb7320104">getSource</a>(),ByValAlign, TD) < ByValAlign)
+<a name="l00928"></a>00928     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00929"></a>00929 
+<a name="l00930"></a>00930   <span class="comment">// Verify that the copied-from memory doesn't change in between the memcpy and</span>
+<a name="l00931"></a>00931   <span class="comment">// the byval call.</span>
+<a name="l00932"></a>00932   <span class="comment">//    memcpy(a <- b)</span>
+<a name="l00933"></a>00933   <span class="comment">//    *b = 42;</span>
+<a name="l00934"></a>00934   <span class="comment">//    foo(*a)</span>
+<a name="l00935"></a>00935   <span class="comment">// It would be invalid to transform the second memcpy into foo(*b).</span>
+<a name="l00936"></a>00936   <span class="comment">//</span>
+<a name="l00937"></a>00937   <span class="comment">// NOTE: This is conservative, it will stop on any read from the source loc,</span>
+<a name="l00938"></a>00938   <span class="comment">// not just the defining memcpy.</span>
+<a name="l00939"></a>00939   <a class="code" href="classllvm_1_1MemDepResult.html">MemDepResult</a> SourceDep =
+<a name="l00940"></a>00940     MD->getPointerDependencyFrom(<a class="code" href="classllvm_1_1AliasAnalysis.html#a7130fcc16699c8bad067d00ccc5a8c95">AliasAnalysis::getLocationForSource</a>(MDep),
+<a name="l00941"></a>00941                                  <span class="keyword">false</span>, CS.<a class="code" href="classllvm_1_1CallSiteBase.html#ae4c67f835911559821939fb23a2e7aff">getInstruction</a>(), MDep-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>());
+<a name="l00942"></a>00942   <span class="keywordflow">if</span> (!SourceDep.<a class="code" href="classllvm_1_1MemDepResult.html#ae409b288c7f70a6c57586535abed3808">isClobber</a>() || SourceDep.<a class="code" href="classllvm_1_1MemDepResult.html#a8452eb6508c00e2b6d56926bebc79f57">getInst</a>() != MDep)
+<a name="l00943"></a>00943     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00944"></a>00944 
+<a name="l00945"></a>00945   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *TmpCast = MDep-><a class="code" href="classllvm_1_1MemTransferInst.html#a1d23e59237a8e4a61f4af0deb7320104">getSource</a>();
+<a name="l00946"></a>00946   <span class="keywordflow">if</span> (MDep-><a class="code" href="classllvm_1_1MemTransferInst.html#a1d23e59237a8e4a61f4af0deb7320104">getSource</a>()-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>() != ByValArg-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>())
+<a name="l00947"></a>00947     TmpCast = <span class="keyword">new</span> <a class="code" href="classllvm_1_1BitCastInst.html" title="This class represents a no-op cast from one type to another.">BitCastInst</a>(MDep-><a class="code" href="classllvm_1_1MemTransferInst.html#a1d23e59237a8e4a61f4af0deb7320104">getSource</a>(), ByValArg-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(),
+<a name="l00948"></a>00948                               <span class="stringliteral">"tmpcast"</span>, CS.<a class="code" href="classllvm_1_1CallSiteBase.html#ae4c67f835911559821939fb23a2e7aff">getInstruction</a>());
+<a name="l00949"></a>00949 
+<a name="l00950"></a>00950   <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">"MemCpyOpt: Forwarding memcpy to byval:\n"</span>
+<a name="l00951"></a>00951                << <span class="stringliteral">"  "</span> << *MDep << <span class="stringliteral">"\n"</span>
+<a name="l00952"></a>00952                << <span class="stringliteral">"  "</span> << *CS.<a class="code" href="classllvm_1_1CallSiteBase.html#ae4c67f835911559821939fb23a2e7aff">getInstruction</a>() << <span class="stringliteral">"\n"</span>);
+<a name="l00953"></a>00953 
+<a name="l00954"></a>00954   <span class="comment">// Otherwise we're good!  Update the byval argument.</span>
+<a name="l00955"></a>00955   CS.<a class="code" href="classllvm_1_1CallSiteBase.html#addab854f674836e5497dcfafff324e27">setArgument</a>(ArgNo, TmpCast);
+<a name="l00956"></a>00956   ++NumMemCpyInstr;
+<a name="l00957"></a>00957   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00958"></a>00958 }
+<a name="l00959"></a>00959 <span class="comment"></span>
+<a name="l00960"></a>00960 <span class="comment">/// iterateOnFunction - Executes one iteration of MemCpyOpt.</span>
+<a name="l00961"></a>00961 <span class="comment"></span><span class="keywordtype">bool</span> MemCpyOpt::iterateOnFunction(<a class="code" href="classllvm_1_1Function.html">Function</a> &<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>) {
+<a name="l00962"></a>00962   <span class="keywordtype">bool</span> MadeChange = <span class="keyword">false</span>;
+<a name="l00963"></a>00963 
+<a name="l00964"></a>00964   <span class="comment">// Walk all instruction in the function.</span>
+<a name="l00965"></a>00965   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">Function::iterator</a> BB = F.<a class="code" href="classllvm_1_1Function.html#a88a5e60837674780a9d812d661897ac5">begin</a>(), BBE = F.<a class="code" href="classllvm_1_1Function.html#ae4ca2261b8b901e415fda7feac5051ea">end</a>(); BB != BBE; ++BB) {
+<a name="l00966"></a>00966     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> BI = BB->begin(), BE = BB->end(); BI != BE;) {
+<a name="l00967"></a>00967       <span class="comment">// Avoid invalidating the iterator.</span>
+<a name="l00968"></a>00968       <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *I = BI++;
+<a name="l00969"></a>00969 
+<a name="l00970"></a>00970       <span class="keywordtype">bool</span> RepeatInstruction = <span class="keyword">false</span>;
+<a name="l00971"></a>00971 
+<a name="l00972"></a>00972       <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a> *SI = dyn_cast<StoreInst>(I))
+<a name="l00973"></a>00973         MadeChange |= processStore(SI, BI);
+<a name="l00974"></a>00974       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1MemSetInst.html">MemSetInst</a> *M = dyn_cast<MemSetInst>(I))
+<a name="l00975"></a>00975         RepeatInstruction = processMemSet(M, BI);
+<a name="l00976"></a>00976       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1MemCpyInst.html">MemCpyInst</a> *M = dyn_cast<MemCpyInst>(I))
+<a name="l00977"></a>00977         RepeatInstruction = processMemCpy(M);
+<a name="l00978"></a>00978       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1MemMoveInst.html">MemMoveInst</a> *M = dyn_cast<MemMoveInst>(I))
+<a name="l00979"></a>00979         RepeatInstruction = processMemMove(M);
+<a name="l00980"></a>00980       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1CallSite.html">CallSite</a> CS = (<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>*)<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00981"></a>00981         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CS.<a class="code" href="classllvm_1_1CallSiteBase.html#a13ce8cb4c50c5b3505915467e14ad95a">arg_size</a>(); i != e; ++i)
+<a name="l00982"></a>00982           <span class="keywordflow">if</span> (CS.<a class="code" href="classllvm_1_1CallSiteBase.html#a2b51df7c4694230be653c4b5a3186029" title="Determine whether this argument is passed by value.">isByValArgument</a>(i))
+<a name="l00983"></a>00983             MadeChange |= processByValArgument(CS, i);
+<a name="l00984"></a>00984       }
+<a name="l00985"></a>00985 
+<a name="l00986"></a>00986       <span class="comment">// Reprocess the instruction if desired.</span>
+<a name="l00987"></a>00987       <span class="keywordflow">if</span> (RepeatInstruction) {
+<a name="l00988"></a>00988         <span class="keywordflow">if</span> (BI != BB->begin()) --BI;
+<a name="l00989"></a>00989         MadeChange = <span class="keyword">true</span>;
+<a name="l00990"></a>00990       }
+<a name="l00991"></a>00991     }
+<a name="l00992"></a>00992   }
+<a name="l00993"></a>00993 
+<a name="l00994"></a>00994   <span class="keywordflow">return</span> MadeChange;
+<a name="l00995"></a>00995 }
+<a name="l00996"></a>00996 
+<a name="l00997"></a>00997 <span class="comment">// MemCpyOpt::runOnFunction - This is the main transformation entry point for a</span>
+<a name="l00998"></a>00998 <span class="comment">// function.</span>
+<a name="l00999"></a>00999 <span class="comment">//</span>
+<a name="l01000"></a>01000 <span class="keywordtype">bool</span> MemCpyOpt::runOnFunction(<a class="code" href="classllvm_1_1Function.html">Function</a> &F) {
+<a name="l01001"></a>01001   <span class="keywordtype">bool</span> MadeChange = <span class="keyword">false</span>;
+<a name="l01002"></a>01002   MD = &getAnalysis<MemoryDependenceAnalysis>();
+<a name="l01003"></a>01003   TD = getAnalysisIfAvailable<DataLayout>();
+<a name="l01004"></a>01004   TLI = &getAnalysis<TargetLibraryInfo>();
+<a name="l01005"></a>01005 
+<a name="l01006"></a>01006   <span class="comment">// If we don't have at least memset and memcpy, there is little point of doing</span>
+<a name="l01007"></a>01007   <span class="comment">// anything here.  These are required by a freestanding implementation, so if</span>
+<a name="l01008"></a>01008   <span class="comment">// even they are disabled, there is no point in trying hard.</span>
+<a name="l01009"></a>01009   <span class="keywordflow">if</span> (!TLI->has(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa9f7f1b6be1144152902121f2463d0368" title="void *memset(void *b, int c, size_t len);">LibFunc::memset</a>) || !TLI->has(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fad5203242bc89eaa644dc7b7ba2371c1d" title="void *memcpy(void *s1, const void *s2, size_t n);">LibFunc::memcpy</a>))
+<a name="l01010"></a>01010     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01011"></a>01011 
+<a name="l01012"></a>01012   <span class="keywordflow">while</span> (1) {
+<a name="l01013"></a>01013     <span class="keywordflow">if</span> (!iterateOnFunction(F))
+<a name="l01014"></a>01014       <span class="keywordflow">break</span>;
+<a name="l01015"></a>01015     MadeChange = <span class="keyword">true</span>;
+<a name="l01016"></a>01016   }
+<a name="l01017"></a>01017 
+<a name="l01018"></a>01018   MD = 0;
+<a name="l01019"></a>01019   <span class="keywordflow">return</span> MadeChange;
+<a name="l01020"></a>01020 }
+</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/MemDepPrinter_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemDepPrinter_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MemDepPrinter_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MemDepPrinter_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,41 @@
+<map id="G" name="G">
+<area shape="rect" href="$MemoryDependenceAnalysis_8h.html" title="llvm/Analysis/MemoryDependenceAnalysis.h" alt="" coords="1264,84,1568,111"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="189,548,395,575"/>
+<area shape="rect" href="$CallSite_8h.html" title="llvm/Support/CallSite.h" alt="" coords="1805,239,1971,265"/>
+<area shape="rect" href="$LLVMContext_8h.html" title="llvm/LLVMContext.h" alt="" coords="913,161,1060,188"/>
+<area shape="rect" href="$Analysis_2Passes_8h.html" title="llvm/Analysis/Passes.h" alt="" coords="1592,84,1755,111"/>
+<area shape="rect" href="$Writer_8h.html" title="llvm/Assembly/Writer.h" alt="" coords="1779,84,1941,111"/>
+<area shape="rect" href="$InstIterator_8h.html" title="llvm/Support/InstIterator.h" alt="" coords="2407,239,2593,265"/>
+<area shape="rect" href="$raw__ostream_8h.html" title="llvm/Support/raw_ostream.h" alt="" coords="711,548,911,575"/>
+<area shape="rect" href="$SetVector_8h.html" title="llvm/ADT/SetVector.h" alt="" coords="2499,471,2653,497"/>
+<area shape="rect" href="$BasicBlock_8h.html" title="llvm/BasicBlock.h" alt="" coords="2203,393,2333,420"/>
+<area shape="rect" href="$Pass_8h.html" title="llvm/Pass.h" alt="" coords="525,393,616,420"/>
+<area shape="rect" href="$ValueHandle_8h.html" title="llvm/Support/ValueHandle.h" alt="" coords="1829,548,2027,575"/>
+<area shape="rect" href="$PointerIntPair_8h.html" title="llvm/ADT/PointerIntPair.h" alt="" coords="2745,625,2921,652"/>
+<area shape="rect" href="$AliasAnalysis_8h.html" title="llvm/Analysis/AliasAnalysis.h" alt="" coords="1316,161,1516,188"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="1017,548,1177,575"/>
+<area shape="rect" href="$SmallPtrSet_8h.html" title="llvm/ADT/SmallPtrSet.h" alt="" coords="2060,625,2228,652"/>
+<area shape="rect" href="$OwningPtr_8h.html" title="llvm/ADT/OwningPtr.h" alt="" coords="1831,625,1985,652"/>
+<area shape="rect" href="$Instruction_8h.html" title="llvm/Instruction.h" alt="" coords="1856,471,1987,497"/>
+<area shape="rect" href="$SymbolTableListTraits_8h.html" title="llvm/SymbolTableListTraits.h" alt="" coords="2203,471,2400,497"/>
+<area shape="rect" href="$ilist_8h.html" title="llvm/ADT/ilist.h" alt="" coords="2404,625,2519,652"/>
+<area shape="rect" href="$Twine_8h.html" title="llvm/ADT/Twine.h" alt="" coords="1656,471,1781,497"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="2343,780,2527,807"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="1325,703,1499,729"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="215,625,364,652"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="489,703,676,729"/>
+<area shape="rect" href="$PassSupport_8h.html" title="llvm/PassSupport.h" alt="" coords="692,471,836,497"/>
+<area shape="rect" href="$PassAnalysisSupport_8h.html" title="llvm/PassAnalysisSupport.h" alt="" coords="473,471,668,497"/>
+<area shape="rect" href="$DenseMapInfo_8h.html" title="llvm/ADT/DenseMapInfo.h" alt="" coords="1449,625,1633,652"/>
+<area shape="rect" href="$Value_8h.html" title="llvm/Value.h" alt="" coords="1708,625,1807,652"/>
+<area shape="rect" href="$PointerLikeTypeTraits_8h.html" title="llvm/Support/PointerLikeTypeTraits.h" alt="" coords="2528,703,2776,729"/>
+<area shape="rect" href="$Attributes_8h.html" title="llvm/Attributes.h" alt="" coords="1405,393,1531,420"/>
+<area shape="rect" href="$CallingConv_8h.html" title="llvm/CallingConv.h" alt="" coords="1805,393,1941,420"/>
+<area shape="rect" href="$Instructions_8h.html" title="llvm/Instructions.h" alt="" coords="1505,316,1641,343"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="1185,625,1375,652"/>
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="1236,471,1380,497"/>
+<area shape="rect" href="$InstrTypes_8h.html" title="llvm/InstrTypes.h" alt="" coords="1605,393,1731,420"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="743,625,905,652"/>
+<area shape="rect" href="$Function_8h.html" title="llvm/Function.h" alt="" coords="1877,316,1992,343"/>
+<area shape="rect" href="$SmallSet_8h.html" title="llvm/ADT/SmallSet.h" alt="" coords="2272,548,2424,575"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MemDepPrinter_8cpp__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemDepPrinter_8cpp__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MemDepPrinter_8cpp__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/MemoryBuffer_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemoryBuffer_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MemoryBuffer_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MemoryBuffer_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,160 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="MemoryBuffer.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/MemoryBuffer.h",height=0.2,width=0.4,color="black",URL="$MemoryBuffer_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="black",URL="$StringRef_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_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="black",URL="$DataTypes_8h.html"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="limits",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> 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"];
+  Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/ADT/OwningPtr.h",height=0.2,width=0.4,color="black",URL="$OwningPtr_8h.html"];
+  Node18 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/ADT/SmallString.h",height=0.2,width=0.4,color="black",URL="$SmallString_8h.html"];
+  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 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node10 [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 -> Node14 [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 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/Config/config.h",height=0.2,width=0.4,color="black",URL="$config_8h.html"];
+  Node1 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="black",URL="$MathExtras_8h.html"];
+  Node26 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/Support/SwapByteOrder.h",height=0.2,width=0.4,color="black",URL="$SwapByteOrder_8h.html"];
+  Node27 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Support/Errno.h",height=0.2,width=0.4,color="black",URL="$Errno_8h.html"];
+  Node28 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Support/FileSystem.h",height=0.2,width=0.4,color="black",URL="$FileSystem_8h.html"];
+  Node29 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/ADT/IntrusiveRefCntPtr.h",height=0.2,width=0.4,color="black",URL="$IntrusiveRefCntPtr_8h.html"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Support/Casting.h",height=0.2,width=0.4,color="black",URL="$Casting_8h.html"];
+  Node31 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> 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 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8h.html"];
+  Node33 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Support/system_error.h",height=0.2,width=0.4,color="black",URL="$system__error_8h.html"];
+  Node34 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/Config/llvm-config.h",height=0.2,width=0.4,color="black",URL="$llvm-config_8h.html"];
+  Node34 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="cerrno",height=0.2,width=0.4,color="grey75"];
+  Node34 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="ctime",height=0.2,width=0.4,color="grey75"];
+  Node29 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="stack",height=0.2,width=0.4,color="grey75"];
+  Node29 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/Support/Path.h",height=0.2,width=0.4,color="black",URL="$Path_8h.html"];
+  Node40 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/Support/PathV1.h",height=0.2,width=0.4,color="red",URL="$PathV1_8h.html"];
+  Node41 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/Support/TimeValue.h",height=0.2,width=0.4,color="black",URL="$TimeValue_8h.html"];
+  Node42 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/Support/PathV2.h",height=0.2,width=0.4,color="black",URL="$PathV2_8h.html"];
+  Node43 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/Support/Process.h",height=0.2,width=0.4,color="black",URL="$Process_8h.html"];
+  Node44 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/Support/Program.h",height=0.2,width=0.4,color="black",URL="$Program_8h.html"];
+  Node45 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="cstdio",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="new",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="sys/stat.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="unistd.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="fcntl.h",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/MemoryBuffer_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemoryBuffer_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MemoryBuffer_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MemoryBuffer_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,460 @@
+<!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: MemoryBuffer.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">MemoryBuffer.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="MemoryBuffer_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===--- MemoryBuffer.cpp - Memory Buffer implementation ------------------===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">//  This file implements the MemoryBuffer interface.</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="MemoryBuffer_8h.html">llvm/Support/MemoryBuffer.h</a>"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="OwningPtr_8h.html">llvm/ADT/OwningPtr.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="SmallString_8h.html">llvm/ADT/SmallString.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="config_8h.html">llvm/Config/config.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="MathExtras_8h.html">llvm/Support/MathExtras.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="Errno_8h.html">llvm/Support/Errno.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="FileSystem_8h.html">llvm/Support/FileSystem.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="Path_8h.html">llvm/Support/Path.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="Process_8h.html">llvm/Support/Process.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="Program_8h.html">llvm/Support/Program.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="system__error_8h.html">llvm/Support/system_error.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <cassert></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <cstdio></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <cstring></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include <cerrno></span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include <new></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include <sys/types.h></span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include <sys/stat.h></span>
+<a name="l00032"></a>00032 <span class="preprocessor">#if !defined(_MSC_VER) && !defined(__MINGW32__)</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#include <unistd.h></span>
+<a name="l00034"></a>00034 <span class="preprocessor">#else</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include <io.h></span>
+<a name="l00036"></a>00036 <span class="preprocessor">#ifndef S_ISFIFO</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#define S_ISFIFO(x) (0)</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#include <fcntl.h></span>
+<a name="l00041"></a>00041 <span class="keyword">using namespace </span>llvm;
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00044"></a>00044 <span class="comment">// MemoryBuffer implementation itself.</span>
+<a name="l00045"></a>00045 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00046"></a>00046 
+<a name="l00047"></a><a class="code" href="classllvm_1_1MemoryBuffer.html#a98ee6c2cc704397982f60f930a60089e">00047</a> <a class="code" href="classllvm_1_1MemoryBuffer.html#a98ee6c2cc704397982f60f930a60089e">MemoryBuffer::~MemoryBuffer</a>() { }
+<a name="l00048"></a>00048 <span class="comment"></span>
+<a name="l00049"></a>00049 <span class="comment">/// init - Initialize this MemoryBuffer as a reference to externally allocated</span>
+<a name="l00050"></a>00050 <span class="comment">/// memory, memory that we know is already null terminated.</span>
+<a name="l00051"></a><a class="code" href="classllvm_1_1MemoryBuffer.html#a57bdc0595208acb83e6b715bbed8e331">00051</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MemoryBuffer.html#a57bdc0595208acb83e6b715bbed8e331">MemoryBuffer::init</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *BufStart, <span class="keyword">const</span> <span class="keywordtype">char</span> *BufEnd,
+<a name="l00052"></a>00052                         <span class="keywordtype">bool</span> RequiresNullTerminator) {
+<a name="l00053"></a>00053   assert((!RequiresNullTerminator || BufEnd[0] == 0) &&
+<a name="l00054"></a>00054          <span class="stringliteral">"Buffer is not null terminated!"</span>);
+<a name="l00055"></a>00055   BufferStart = BufStart;
+<a name="l00056"></a>00056   BufferEnd = BufEnd;
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 
+<a name="l00059"></a>00059 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00060"></a>00060 <span class="comment">// MemoryBufferMem implementation.</span>
+<a name="l00061"></a>00061 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00062"></a>00062 <span class="comment"></span>
+<a name="l00063"></a>00063 <span class="comment">/// CopyStringRef - Copies contents of a StringRef into a block of memory and</span>
+<a name="l00064"></a>00064 <span class="comment">/// null-terminates it.</span>
+<a name="l00065"></a><a class="code" href="MemoryBuffer_8cpp.html#a9886e033885181e8d14e3fddce06af8c">00065</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="MemoryBuffer_8cpp.html#a9886e033885181e8d14e3fddce06af8c">CopyStringRef</a>(<span class="keywordtype">char</span> *<a class="code" href="classllvm_1_1sys_1_1Memory.html" title="An abstraction for memory operations.">Memory</a>, <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1object_1_1macho.html#a56678f646a4a478d777eb8821f710db0a557a58f6e018464dcf0635728ef14dd1">Data</a>) {
+<a name="l00066"></a>00066   <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fad5203242bc89eaa644dc7b7ba2371c1d" title="void *memcpy(void *s1, const void *s2, size_t n);">memcpy</a>(Memory, Data.<a class="code" href="classllvm_1_1StringRef.html#a7d9b88d042ae1da8afd5509875c90a04">data</a>(), Data.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>());
+<a name="l00067"></a>00067   Memory[Data.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>()] = 0; <span class="comment">// Null terminate string.</span>
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069 <span class="comment"></span>
+<a name="l00070"></a>00070 <span class="comment">/// GetNamedBuffer - Allocates a new MemoryBuffer with Name copied after it.</span>
+<a name="l00071"></a>00071 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00072"></a><a class="code" href="MemoryBuffer_8cpp.html#a7f57628f80caf4ccbe82d9251d670d30">00072</a> <span class="keyword">static</span> T *<a class="code" href="MemoryBuffer_8cpp.html#a7f57628f80caf4ccbe82d9251d670d30" title="GetNamedBuffer - Allocates a new MemoryBuffer with Name copied after it.">GetNamedBuffer</a>(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Buffer, <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>,
+<a name="l00073"></a>00073                          <span class="keywordtype">bool</span> RequiresNullTerminator) {
+<a name="l00074"></a>00074   <span class="keywordtype">char</span> *Mem = <span class="keyword">static_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(<a class="code" href="MCContext_8h.html#a81d1ea38121f9228f3a2e1aa924bffae" title="Placement new for using the MCContext's allocator.">operator new</a>(<span class="keyword">sizeof</span>(T) + Name.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>() + 1));
+<a name="l00075"></a>00075   <a class="code" href="MemoryBuffer_8cpp.html#a9886e033885181e8d14e3fddce06af8c">CopyStringRef</a>(Mem + <span class="keyword">sizeof</span>(T), Name);
+<a name="l00076"></a>00076   <span class="keywordflow">return</span> <span class="keyword">new</span> (Mem) T(Buffer, RequiresNullTerminator);
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079 <span class="keyword">namespace </span>{<span class="comment"></span>
+<a name="l00080"></a>00080 <span class="comment">/// MemoryBufferMem - Named MemoryBuffer pointing to a block of memory.</span>
+<a name="l00081"></a>00081 <span class="comment"></span><span class="keyword">class </span>MemoryBufferMem : <span class="keyword">public</span> <a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> {
+<a name="l00082"></a>00082 <span class="keyword">public</span>:
+<a name="l00083"></a>00083   MemoryBufferMem(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> InputData, <span class="keywordtype">bool</span> RequiresNullTerminator) {
+<a name="l00084"></a>00084     <a class="code" href="namespacellvm_1_1cl.html#a10a041239ae1870cfcc064bfaa79fb65">init</a>(InputData.<a class="code" href="classllvm_1_1StringRef.html#a4a0abf8eb4fa5989df63172649cba99f">begin</a>(), InputData.<a class="code" href="classllvm_1_1StringRef.html#a9e277b660236bb0318b61ab9cdf60dc7">end</a>(), RequiresNullTerminator);
+<a name="l00085"></a>00085   }
+<a name="l00086"></a>00086 
+<a name="l00087"></a>00087   <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *getBufferIdentifier() const <a class="code" href="Compiler_8h.html#a68c26c4a3531dcda6b04ab5ca7955947">LLVM_OVERRIDE</a> {
+<a name="l00088"></a>00088      <span class="comment">// The name is stored after the class itself.</span>
+<a name="l00089"></a>00089     <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">></span>(<span class="keyword">this</span> + 1);
+<a name="l00090"></a>00090   }
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092   <span class="keyword">virtual</span> BufferKind getBufferKind() const <a class="code" href="Compiler_8h.html#a68c26c4a3531dcda6b04ab5ca7955947">LLVM_OVERRIDE</a> {
+<a name="l00093"></a>00093     <span class="keywordflow">return</span> MemoryBuffer_Malloc;
+<a name="l00094"></a>00094   }
+<a name="l00095"></a>00095 };
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 <span class="comment"></span>
+<a name="l00098"></a>00098 <span class="comment">/// getMemBuffer - Open the specified memory range as a MemoryBuffer.  Note</span>
+<a name="l00099"></a>00099 <span class="comment">/// that InputData must be a null terminated if RequiresNullTerminator is true!</span>
+<a name="l00100"></a><a class="code" href="classllvm_1_1MemoryBuffer.html#ad8f9be47d83e0deeaf8668f37fadb896">00100</a> <span class="comment"></span><a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *<a class="code" href="classllvm_1_1MemoryBuffer.html#ad8f9be47d83e0deeaf8668f37fadb896">MemoryBuffer::getMemBuffer</a>(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> InputData,
+<a name="l00101"></a>00101                                          <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> BufferName,
+<a name="l00102"></a>00102                                          <span class="keywordtype">bool</span> RequiresNullTerminator) {
+<a name="l00103"></a>00103   <span class="keywordflow">return</span> GetNamedBuffer<MemoryBufferMem>(InputData, BufferName,
+<a name="l00104"></a>00104                                          RequiresNullTerminator);
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106 <span class="comment"></span>
+<a name="l00107"></a>00107 <span class="comment">/// getMemBufferCopy - Open the specified memory range as a MemoryBuffer,</span>
+<a name="l00108"></a>00108 <span class="comment">/// copying the contents and taking ownership of it.  This has no requirements</span>
+<a name="l00109"></a>00109 <span class="comment">/// on EndPtr[0].</span>
+<a name="l00110"></a><a class="code" href="classllvm_1_1MemoryBuffer.html#ae73588815c1ba2a28f95472e566f5d4a">00110</a> <span class="comment"></span><a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *<a class="code" href="classllvm_1_1MemoryBuffer.html#ae73588815c1ba2a28f95472e566f5d4a">MemoryBuffer::getMemBufferCopy</a>(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> InputData,
+<a name="l00111"></a>00111                                              <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> BufferName) {
+<a name="l00112"></a>00112   <a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *Buf = <a class="code" href="classllvm_1_1MemoryBuffer.html#a8269e0c9ef65a7098cc20e799647dc29">getNewUninitMemBuffer</a>(InputData.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>(), BufferName);
+<a name="l00113"></a>00113   <span class="keywordflow">if</span> (!Buf) <span class="keywordflow">return</span> 0;
+<a name="l00114"></a>00114   <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fad5203242bc89eaa644dc7b7ba2371c1d" title="void *memcpy(void *s1, const void *s2, size_t n);">memcpy</a>(const_cast<char*>(Buf-><a class="code" href="classllvm_1_1MemoryBuffer.html#aee393164c8a4d591450d28bdd5aebfbd">getBufferStart</a>()), InputData.<a class="code" href="classllvm_1_1StringRef.html#a7d9b88d042ae1da8afd5509875c90a04">data</a>(),
+<a name="l00115"></a>00115          InputData.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>());
+<a name="l00116"></a>00116   <span class="keywordflow">return</span> Buf;
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118 <span class="comment"></span>
+<a name="l00119"></a>00119 <span class="comment">/// getNewUninitMemBuffer - Allocate a new MemoryBuffer of the specified size</span>
+<a name="l00120"></a>00120 <span class="comment">/// that is not initialized.  Note that the caller should initialize the</span>
+<a name="l00121"></a>00121 <span class="comment">/// memory allocated by this method.  The memory is owned by the MemoryBuffer</span>
+<a name="l00122"></a>00122 <span class="comment">/// object.</span>
+<a name="l00123"></a><a class="code" href="classllvm_1_1MemoryBuffer.html#a8269e0c9ef65a7098cc20e799647dc29">00123</a> <span class="comment"></span><a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *<a class="code" href="classllvm_1_1MemoryBuffer.html#a8269e0c9ef65a7098cc20e799647dc29">MemoryBuffer::getNewUninitMemBuffer</a>(<span class="keywordtype">size_t</span> Size,
+<a name="l00124"></a>00124                                                   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> BufferName) {
+<a name="l00125"></a>00125   <span class="comment">// Allocate space for the MemoryBuffer, the data and the name. It is important</span>
+<a name="l00126"></a>00126   <span class="comment">// that MemoryBuffer and data are aligned so PointerIntPair works with them.</span>
+<a name="l00127"></a>00127   <span class="keywordtype">size_t</span> AlignedStringLen =
+<a name="l00128"></a>00128     <a class="code" href="namespacellvm.html#aadf66db071227857a2ae14e078d6b4cd">RoundUpToAlignment</a>(<span class="keyword">sizeof</span>(MemoryBufferMem) + BufferName.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>() + 1,
+<a name="l00129"></a>00129                        <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*)); <span class="comment">// TODO: Is sizeof(void*) enough?</span>
+<a name="l00130"></a>00130   <span class="keywordtype">size_t</span> RealLen = AlignedStringLen + Size + 1;
+<a name="l00131"></a>00131   <span class="keywordtype">char</span> *Mem = <span class="keyword">static_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(<a class="code" href="MCContext_8h.html#a81d1ea38121f9228f3a2e1aa924bffae" title="Placement new for using the MCContext's allocator.">operator new</a>(RealLen, std::nothrow));
+<a name="l00132"></a>00132   <span class="keywordflow">if</span> (!Mem) <span class="keywordflow">return</span> 0;
+<a name="l00133"></a>00133 
+<a name="l00134"></a>00134   <span class="comment">// The name is stored after the class itself.</span>
+<a name="l00135"></a>00135   <a class="code" href="MemoryBuffer_8cpp.html#a9886e033885181e8d14e3fddce06af8c">CopyStringRef</a>(Mem + <span class="keyword">sizeof</span>(MemoryBufferMem), BufferName);
+<a name="l00136"></a>00136 
+<a name="l00137"></a>00137   <span class="comment">// The buffer begins after the name and must be aligned.</span>
+<a name="l00138"></a>00138   <span class="keywordtype">char</span> *Buf = Mem + AlignedStringLen;
+<a name="l00139"></a>00139   Buf[Size] = 0; <span class="comment">// Null terminate buffer.</span>
+<a name="l00140"></a>00140 
+<a name="l00141"></a>00141   <span class="keywordflow">return</span> <span class="keyword">new</span> (Mem) MemoryBufferMem(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(Buf, Size), <span class="keyword">true</span>);
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 <span class="comment"></span>
+<a name="l00144"></a>00144 <span class="comment">/// getNewMemBuffer - Allocate a new MemoryBuffer of the specified size that</span>
+<a name="l00145"></a>00145 <span class="comment">/// is completely initialized to zeros.  Note that the caller should</span>
+<a name="l00146"></a>00146 <span class="comment">/// initialize the memory allocated by this method.  The memory is owned by</span>
+<a name="l00147"></a>00147 <span class="comment">/// the MemoryBuffer object.</span>
+<a name="l00148"></a><a class="code" href="classllvm_1_1MemoryBuffer.html#a4ecf460a83065260ef1dc2ae3c52634c">00148</a> <span class="comment"></span><a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *<a class="code" href="classllvm_1_1MemoryBuffer.html#a4ecf460a83065260ef1dc2ae3c52634c">MemoryBuffer::getNewMemBuffer</a>(<span class="keywordtype">size_t</span> Size, <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> BufferName) {
+<a name="l00149"></a>00149   <a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *SB = <a class="code" href="classllvm_1_1MemoryBuffer.html#a8269e0c9ef65a7098cc20e799647dc29">getNewUninitMemBuffer</a>(Size, BufferName);
+<a name="l00150"></a>00150   <span class="keywordflow">if</span> (!SB) <span class="keywordflow">return</span> 0;
+<a name="l00151"></a>00151   <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa9f7f1b6be1144152902121f2463d0368" title="void *memset(void *b, int c, size_t len);">memset</a>(const_cast<char*>(SB-><a class="code" href="classllvm_1_1MemoryBuffer.html#aee393164c8a4d591450d28bdd5aebfbd">getBufferStart</a>()), 0, Size);
+<a name="l00152"></a>00152   <span class="keywordflow">return</span> SB;
+<a name="l00153"></a>00153 }
+<a name="l00154"></a>00154 
+<a name="l00155"></a>00155 <span class="comment"></span>
+<a name="l00156"></a>00156 <span class="comment">/// getFileOrSTDIN - Open the specified file as a MemoryBuffer, or open stdin</span>
+<a name="l00157"></a>00157 <span class="comment">/// if the Filename is "-".  If an error occurs, this returns null and fills</span>
+<a name="l00158"></a>00158 <span class="comment">/// in *ErrStr with a reason.  If stdin is empty, this API (unlike getSTDIN)</span>
+<a name="l00159"></a>00159 <span class="comment">/// returns an empty buffer.</span>
+<a name="l00160"></a><a class="code" href="classllvm_1_1MemoryBuffer.html#a5997e214c757f7c378223049a442233b">00160</a> <span class="comment"></span><a class="code" href="classllvm_1_1error__code.html">error_code</a> <a class="code" href="classllvm_1_1MemoryBuffer.html#a5997e214c757f7c378223049a442233b">MemoryBuffer::getFileOrSTDIN</a>(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Filename,
+<a name="l00161"></a>00161                                         <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<MemoryBuffer></a> &result,
+<a name="l00162"></a>00162                                         <a class="code" href="classint64__t.html">int64_t</a> FileSize) {
+<a name="l00163"></a>00163   <span class="keywordflow">if</span> (Filename == <span class="stringliteral">"-"</span>)
+<a name="l00164"></a>00164     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MemoryBuffer.html#acdeb6901d4c9a287bb5a2eb6dab301bf">getSTDIN</a>(result);
+<a name="l00165"></a>00165   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MemoryBuffer.html#ac56ed9cc173c06abecd73d74abe21ef7">getFile</a>(Filename, result, FileSize);
+<a name="l00166"></a>00166 }
+<a name="l00167"></a>00167 
+<a name="l00168"></a><a class="code" href="classllvm_1_1MemoryBuffer.html#ab8bbe3652994668fddf1f28e769d4d8b">00168</a> <a class="code" href="classllvm_1_1error__code.html">error_code</a> <a class="code" href="classllvm_1_1MemoryBuffer.html#a5997e214c757f7c378223049a442233b">MemoryBuffer::getFileOrSTDIN</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *Filename,
+<a name="l00169"></a>00169                                         <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<MemoryBuffer></a> &result,
+<a name="l00170"></a>00170                                         <a class="code" href="classint64__t.html">int64_t</a> FileSize) {
+<a name="l00171"></a>00171   <span class="keywordflow">if</span> (<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa8574b01ba1bbc031cb5dd73572783e94" title="int strcmp(const char *s1, const char *s2);">strcmp</a>(Filename, <span class="stringliteral">"-"</span>) == 0)
+<a name="l00172"></a>00172     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MemoryBuffer.html#acdeb6901d4c9a287bb5a2eb6dab301bf">getSTDIN</a>(result);
+<a name="l00173"></a>00173   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MemoryBuffer.html#ac56ed9cc173c06abecd73d74abe21ef7">getFile</a>(Filename, result, FileSize);
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175 
+<a name="l00176"></a>00176 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00177"></a>00177 <span class="comment">// MemoryBuffer::getFile implementation.</span>
+<a name="l00178"></a>00178 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00179"></a>00179 
+<a name="l00180"></a>00180 <span class="keyword">namespace </span>{<span class="comment"></span>
+<a name="l00181"></a>00181 <span class="comment">/// MemoryBufferMMapFile - This represents a file that was mapped in with the</span>
+<a name="l00182"></a>00182 <span class="comment">/// sys::Path::MapInFilePages method.  When destroyed, it calls the</span>
+<a name="l00183"></a>00183 <span class="comment">/// sys::Path::UnMapFilePages method.</span>
+<a name="l00184"></a>00184 <span class="comment"></span><span class="keyword">class </span>MemoryBufferMMapFile : <span class="keyword">public</span> MemoryBufferMem {
+<a name="l00185"></a>00185 <span class="keyword">public</span>:
+<a name="l00186"></a>00186   MemoryBufferMMapFile(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Buffer, <span class="keywordtype">bool</span> RequiresNullTerminator)
+<a name="l00187"></a>00187     : MemoryBufferMem(Buffer, RequiresNullTerminator) { }
+<a name="l00188"></a>00188 
+<a name="l00189"></a>00189   ~MemoryBufferMMapFile() {
+<a name="l00190"></a>00190     <span class="keyword">static</span> <span class="keywordtype">int</span> PageSize = <a class="code" href="classllvm_1_1sys_1_1Process.html#a353ba15e22ed1084a430e440dc14b756" title="Get the virtual memory page size.">sys::Process::GetPageSize</a>();
+<a name="l00191"></a>00191 
+<a name="l00192"></a>00192     uintptr_t Start = <span class="keyword">reinterpret_cast<</span>uintptr_t<span class="keyword">></span>(getBufferStart());
+<a name="l00193"></a>00193     <span class="keywordtype">size_t</span> Size = getBufferSize();
+<a name="l00194"></a>00194     uintptr_t RealStart = Start & ~(PageSize - 1);
+<a name="l00195"></a>00195     <span class="keywordtype">size_t</span> RealSize = Size + (Start - RealStart);
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197     <a class="code" href="classllvm_1_1sys_1_1Path.html#adf5ee3e83a29034955c965872d23e7a0">sys::Path::UnMapFilePages</a>(reinterpret_cast<const char*>(RealStart),
+<a name="l00198"></a>00198                               RealSize);
+<a name="l00199"></a>00199   }
+<a name="l00200"></a>00200 
+<a name="l00201"></a>00201   <span class="keyword">virtual</span> BufferKind getBufferKind() const <a class="code" href="Compiler_8h.html#a68c26c4a3531dcda6b04ab5ca7955947">LLVM_OVERRIDE</a> {
+<a name="l00202"></a>00202     <span class="keywordflow">return</span> MemoryBuffer_MMap;
+<a name="l00203"></a>00203   }
+<a name="l00204"></a>00204 };
+<a name="l00205"></a>00205 }
+<a name="l00206"></a>00206 
+<a name="l00207"></a><a class="code" href="MemoryBuffer_8cpp.html#acdfecc0d1fd4b60a67e76c95bfcee481">00207</a> <span class="keyword">static</span> <a class="code" href="classllvm_1_1error__code.html">error_code</a> <a class="code" href="MemoryBuffer_8cpp.html#acdfecc0d1fd4b60a67e76c95bfcee481">getMemoryBufferForStream</a>(<span class="keywordtype">int</span> FD, 
+<a name="l00208"></a>00208                                            <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> BufferName,
+<a name="l00209"></a>00209                                            <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<MemoryBuffer></a> &result) {
+<a name="l00210"></a>00210   <span class="keyword">const</span> ssize_t ChunkSize = 4096*4;
+<a name="l00211"></a>00211   <a class="code" href="classllvm_1_1SmallString.html">SmallString<ChunkSize></a> Buffer;
+<a name="l00212"></a>00212   ssize_t ReadBytes;
+<a name="l00213"></a>00213   <span class="comment">// Read into Buffer until we hit EOF.</span>
+<a name="l00214"></a>00214   <span class="keywordflow">do</span> {
+<a name="l00215"></a>00215     Buffer.<a class="code" href="classllvm_1_1SmallVectorImpl.html#a4786e64977a3af38f29adee46b70a863">reserve</a>(Buffer.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() + ChunkSize);
+<a name="l00216"></a>00216     ReadBytes = read(FD, Buffer.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a075e34e98605d0e7c289763a104869ac">end</a>(), ChunkSize);
+<a name="l00217"></a>00217     <span class="keywordflow">if</span> (ReadBytes == -1) {
+<a name="l00218"></a>00218       <span class="keywordflow">if</span> (errno == EINTR) <span class="keywordflow">continue</span>;
+<a name="l00219"></a>00219       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html">error_code</a>(errno, <a class="code" href="namespacellvm.html#a2b441dda75966c19e35e7a78e735e5d4">posix_category</a>());
+<a name="l00220"></a>00220     }
+<a name="l00221"></a>00221     Buffer.<a class="code" href="classllvm_1_1SmallVectorImpl.html#a45bab6d91cf74da99624723b65bd0e5b">set_size</a>(Buffer.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() + ReadBytes);
+<a name="l00222"></a>00222   } <span class="keywordflow">while</span> (ReadBytes != 0);
+<a name="l00223"></a>00223 
+<a name="l00224"></a>00224   result.<a class="code" href="classllvm_1_1OwningPtr.html#ad45fe2513c9468cbd4fa891a3685f380">reset</a>(<a class="code" href="classllvm_1_1MemoryBuffer.html#ae73588815c1ba2a28f95472e566f5d4a">MemoryBuffer::getMemBufferCopy</a>(Buffer, BufferName));
+<a name="l00225"></a>00225   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html#ab1dc74db82ce9421e6c5f5f4df574aa8">error_code::success</a>();
+<a name="l00226"></a>00226 }
+<a name="l00227"></a>00227 
+<a name="l00228"></a><a class="code" href="classllvm_1_1MemoryBuffer.html#ac56ed9cc173c06abecd73d74abe21ef7">00228</a> <a class="code" href="classllvm_1_1error__code.html">error_code</a> <a class="code" href="classllvm_1_1MemoryBuffer.html#ac56ed9cc173c06abecd73d74abe21ef7">MemoryBuffer::getFile</a>(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Filename,
+<a name="l00229"></a>00229                                  <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<MemoryBuffer></a> &result,
+<a name="l00230"></a>00230                                  <a class="code" href="classint64__t.html">int64_t</a> FileSize,
+<a name="l00231"></a>00231                                  <span class="keywordtype">bool</span> RequiresNullTerminator) {
+<a name="l00232"></a>00232   <span class="comment">// Ensure the path is null terminated.</span>
+<a name="l00233"></a>00233   <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> PathBuf(Filename.<a class="code" href="classllvm_1_1StringRef.html#a4a0abf8eb4fa5989df63172649cba99f">begin</a>(), Filename.<a class="code" href="classllvm_1_1StringRef.html#a9e277b660236bb0318b61ab9cdf60dc7">end</a>());
+<a name="l00234"></a>00234   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MemoryBuffer.html#ac56ed9cc173c06abecd73d74abe21ef7">MemoryBuffer::getFile</a>(PathBuf.c_str(), result, FileSize,
+<a name="l00235"></a>00235                                RequiresNullTerminator);
+<a name="l00236"></a>00236 }
+<a name="l00237"></a>00237 
+<a name="l00238"></a><a class="code" href="classllvm_1_1MemoryBuffer.html#ac4896eab4e510663f394e36d09848d92">00238</a> <a class="code" href="classllvm_1_1error__code.html">error_code</a> <a class="code" href="classllvm_1_1MemoryBuffer.html#ac56ed9cc173c06abecd73d74abe21ef7">MemoryBuffer::getFile</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *Filename,
+<a name="l00239"></a>00239                                  <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<MemoryBuffer></a> &result,
+<a name="l00240"></a>00240                                  <a class="code" href="classint64__t.html">int64_t</a> FileSize,
+<a name="l00241"></a>00241                                  <span class="keywordtype">bool</span> RequiresNullTerminator) {
+<a name="l00242"></a>00242   <span class="comment">// First check that the "file" is not a directory</span>
+<a name="l00243"></a>00243   <span class="keywordtype">bool</span> is_dir = <span class="keyword">false</span>;
+<a name="l00244"></a>00244   <a class="code" href="classllvm_1_1error__code.html">error_code</a> err = <a class="code" href="namespacellvm_1_1sys_1_1fs.html#a21b17863169ccf42cb3c25f3d609dc24" title="Does status represent a directory?">sys::fs::is_directory</a>(Filename, is_dir);
+<a name="l00245"></a>00245   <span class="keywordflow">if</span> (err)
+<a name="l00246"></a>00246     <span class="keywordflow">return</span> err;
+<a name="l00247"></a>00247   <span class="keywordflow">if</span> (is_dir)
+<a name="l00248"></a>00248     <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a205a949fd99dd4c03d2227e5bd21041c">make_error_code</a>(<a class="code" href="structllvm_1_1errc.html#adf6162b83abd715a78b475f5bdb7cfd4ac2266874f2afaf3ab312d62baf7af54e">errc::is_a_directory</a>);
+<a name="l00249"></a>00249 
+<a name="l00250"></a>00250   <span class="keywordtype">int</span> OpenFlags = O_RDONLY;
+<a name="l00251"></a>00251 <span class="preprocessor">#ifdef O_BINARY</span>
+<a name="l00252"></a>00252 <span class="preprocessor"></span>  OpenFlags |= O_BINARY;  <span class="comment">// Open input file in binary mode on win32.</span>
+<a name="l00253"></a>00253 <span class="preprocessor">#endif</span>
+<a name="l00254"></a>00254 <span class="preprocessor"></span>  <span class="keywordtype">int</span> FD = ::open(Filename, OpenFlags);
+<a name="l00255"></a>00255   <span class="keywordflow">if</span> (FD == -1)
+<a name="l00256"></a>00256     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html">error_code</a>(errno, <a class="code" href="namespacellvm.html#a2b441dda75966c19e35e7a78e735e5d4">posix_category</a>());
+<a name="l00257"></a>00257 
+<a name="l00258"></a>00258   <a class="code" href="classllvm_1_1error__code.html">error_code</a> ret = <a class="code" href="classllvm_1_1MemoryBuffer.html#a7437078c3cbddcd9c630dc1b8358cb7a">getOpenFile</a>(FD, Filename, result, FileSize, FileSize,
+<a name="l00259"></a>00259                                0, RequiresNullTerminator);
+<a name="l00260"></a>00260   close(FD);
+<a name="l00261"></a>00261   <span class="keywordflow">return</span> ret;
+<a name="l00262"></a>00262 }
+<a name="l00263"></a>00263 
+<a name="l00264"></a><a class="code" href="MemoryBuffer_8cpp.html#aeb1c9508f88bd4c6113ad48fef44c72c">00264</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="MemoryBuffer_8cpp.html#aeb1c9508f88bd4c6113ad48fef44c72c">shouldUseMmap</a>(<span class="keywordtype">int</span> FD,
+<a name="l00265"></a>00265                           <span class="keywordtype">size_t</span> FileSize,
+<a name="l00266"></a>00266                           <span class="keywordtype">size_t</span> MapSize,
+<a name="l00267"></a>00267                           off_t Offset,
+<a name="l00268"></a>00268                           <span class="keywordtype">bool</span> RequiresNullTerminator,
+<a name="l00269"></a>00269                           <span class="keywordtype">int</span> PageSize) {
+<a name="l00270"></a>00270   <span class="comment">// We don't use mmap for small files because this can severely fragment our</span>
+<a name="l00271"></a>00271   <span class="comment">// address space.</span>
+<a name="l00272"></a>00272   <span class="keywordflow">if</span> (MapSize < 4096*4)
+<a name="l00273"></a>00273     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00274"></a>00274 
+<a name="l00275"></a>00275   <span class="keywordflow">if</span> (!RequiresNullTerminator)
+<a name="l00276"></a>00276     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00277"></a>00277 
+<a name="l00278"></a>00278 
+<a name="l00279"></a>00279   <span class="comment">// If we don't know the file size, use fstat to find out.  fstat on an open</span>
+<a name="l00280"></a>00280   <span class="comment">// file descriptor is cheaper than stat on a random path.</span>
+<a name="l00281"></a>00281   <span class="comment">// FIXME: this chunk of code is duplicated, but it avoids a fstat when</span>
+<a name="l00282"></a>00282   <span class="comment">// RequiresNullTerminator = false and MapSize != -1.</span>
+<a name="l00283"></a>00283   <span class="keywordflow">if</span> (FileSize == <span class="keywordtype">size_t</span>(-1)) {
+<a name="l00284"></a>00284     <span class="keyword">struct </span>stat FileInfo;
+<a name="l00285"></a>00285     <span class="comment">// TODO: This should use fstat64 when available.</span>
+<a name="l00286"></a>00286     <span class="keywordflow">if</span> (fstat(FD, &FileInfo) == -1) {
+<a name="l00287"></a>00287       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html">error_code</a>(errno, <a class="code" href="namespacellvm.html#a2b441dda75966c19e35e7a78e735e5d4">posix_category</a>());
+<a name="l00288"></a>00288     }
+<a name="l00289"></a>00289     FileSize = FileInfo.st_size;
+<a name="l00290"></a>00290   }
+<a name="l00291"></a>00291 
+<a name="l00292"></a>00292   <span class="comment">// If we need a null terminator and the end of the map is inside the file,</span>
+<a name="l00293"></a>00293   <span class="comment">// we cannot use mmap.</span>
+<a name="l00294"></a>00294   <span class="keywordtype">size_t</span> End = Offset + MapSize;
+<a name="l00295"></a>00295   assert(End <= FileSize);
+<a name="l00296"></a>00296   <span class="keywordflow">if</span> (End != FileSize)
+<a name="l00297"></a>00297     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00298"></a>00298 
+<a name="l00299"></a>00299   <span class="comment">// Don't try to map files that are exactly a multiple of the system page size</span>
+<a name="l00300"></a>00300   <span class="comment">// if we need a null terminator.</span>
+<a name="l00301"></a>00301   <span class="keywordflow">if</span> ((FileSize & (PageSize -1)) == 0)
+<a name="l00302"></a>00302     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00303"></a>00303 
+<a name="l00304"></a>00304   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00305"></a>00305 }
+<a name="l00306"></a>00306 
+<a name="l00307"></a><a class="code" href="classllvm_1_1MemoryBuffer.html#a7437078c3cbddcd9c630dc1b8358cb7a">00307</a> <a class="code" href="classllvm_1_1error__code.html">error_code</a> <a class="code" href="classllvm_1_1MemoryBuffer.html#a7437078c3cbddcd9c630dc1b8358cb7a">MemoryBuffer::getOpenFile</a>(<span class="keywordtype">int</span> FD, <span class="keyword">const</span> <span class="keywordtype">char</span> *Filename,
+<a name="l00308"></a>00308                                      <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<MemoryBuffer></a> &result,
+<a name="l00309"></a>00309                                      uint64_t FileSize, uint64_t MapSize,
+<a name="l00310"></a>00310                                      <a class="code" href="classint64__t.html">int64_t</a> Offset,
+<a name="l00311"></a>00311                                      <span class="keywordtype">bool</span> RequiresNullTerminator) {
+<a name="l00312"></a>00312   <span class="keyword">static</span> <span class="keywordtype">int</span> PageSize = <a class="code" href="classllvm_1_1sys_1_1Process.html#a353ba15e22ed1084a430e440dc14b756" title="Get the virtual memory page size.">sys::Process::GetPageSize</a>();
+<a name="l00313"></a>00313 
+<a name="l00314"></a>00314   <span class="comment">// Default is to map the full file.</span>
+<a name="l00315"></a>00315   <span class="keywordflow">if</span> (MapSize == uint64_t(-1)) {
+<a name="l00316"></a>00316     <span class="comment">// If we don't know the file size, use fstat to find out.  fstat on an open</span>
+<a name="l00317"></a>00317     <span class="comment">// file descriptor is cheaper than stat on a random path.</span>
+<a name="l00318"></a>00318     <span class="keywordflow">if</span> (FileSize == uint64_t(-1)) {
+<a name="l00319"></a>00319       <span class="keyword">struct </span>stat FileInfo;
+<a name="l00320"></a>00320       <span class="comment">// TODO: This should use fstat64 when available.</span>
+<a name="l00321"></a>00321       <span class="keywordflow">if</span> (fstat(FD, &FileInfo) == -1) {
+<a name="l00322"></a>00322         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html">error_code</a>(errno, <a class="code" href="namespacellvm.html#a2b441dda75966c19e35e7a78e735e5d4">posix_category</a>());
+<a name="l00323"></a>00323       }
+<a name="l00324"></a>00324 
+<a name="l00325"></a>00325       <span class="comment">// If this is a named pipe, we can't trust the size. Create the memory</span>
+<a name="l00326"></a>00326       <span class="comment">// buffer by copying off the stream.</span>
+<a name="l00327"></a>00327       <span class="keywordflow">if</span> (S_ISFIFO(FileInfo.st_mode)) {
+<a name="l00328"></a>00328         <span class="keywordflow">return</span> <a class="code" href="MemoryBuffer_8cpp.html#acdfecc0d1fd4b60a67e76c95bfcee481">getMemoryBufferForStream</a>(FD, Filename, result);
+<a name="l00329"></a>00329       }
+<a name="l00330"></a>00330 
+<a name="l00331"></a>00331       FileSize = FileInfo.st_size;
+<a name="l00332"></a>00332     }
+<a name="l00333"></a>00333     MapSize = FileSize;
+<a name="l00334"></a>00334   }
+<a name="l00335"></a>00335 
+<a name="l00336"></a>00336   <span class="keywordflow">if</span> (<a class="code" href="MemoryBuffer_8cpp.html#aeb1c9508f88bd4c6113ad48fef44c72c">shouldUseMmap</a>(FD, FileSize, MapSize, Offset, RequiresNullTerminator,
+<a name="l00337"></a>00337                     PageSize)) {
+<a name="l00338"></a>00338     off_t RealMapOffset = Offset & ~(PageSize - 1);
+<a name="l00339"></a>00339     off_t Delta = Offset - RealMapOffset;
+<a name="l00340"></a>00340     <span class="keywordtype">size_t</span> RealMapSize = MapSize + Delta;
+<a name="l00341"></a>00341 
+<a name="l00342"></a>00342     <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keywordtype">char</span> *Pages = <a class="code" href="classllvm_1_1sys_1_1Path.html#a50c1e37ac5883c6f6aa0bd29480b0e59">sys::Path::MapInFilePages</a>(FD,
+<a name="l00343"></a>00343                                                       RealMapSize,
+<a name="l00344"></a>00344                                                       RealMapOffset)) {
+<a name="l00345"></a>00345       result.<a class="code" href="classllvm_1_1OwningPtr.html#ad45fe2513c9468cbd4fa891a3685f380">reset</a>(GetNamedBuffer<MemoryBufferMMapFile>(
+<a name="l00346"></a>00346           <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(Pages + Delta, MapSize), Filename, RequiresNullTerminator));
+<a name="l00347"></a>00347       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html#ab1dc74db82ce9421e6c5f5f4df574aa8">error_code::success</a>();
+<a name="l00348"></a>00348     }
+<a name="l00349"></a>00349   }
+<a name="l00350"></a>00350 
+<a name="l00351"></a>00351   <a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *Buf = <a class="code" href="classllvm_1_1MemoryBuffer.html#a8269e0c9ef65a7098cc20e799647dc29">MemoryBuffer::getNewUninitMemBuffer</a>(MapSize, Filename);
+<a name="l00352"></a>00352   <span class="keywordflow">if</span> (!Buf) {
+<a name="l00353"></a>00353     <span class="comment">// Failed to create a buffer. The only way it can fail is if</span>
+<a name="l00354"></a>00354     <span class="comment">// new(std::nothrow) returns 0.</span>
+<a name="l00355"></a>00355     <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a205a949fd99dd4c03d2227e5bd21041c">make_error_code</a>(<a class="code" href="structllvm_1_1errc.html#adf6162b83abd715a78b475f5bdb7cfd4a6048183a0720d8c487dcb3c47bb84cf9">errc::not_enough_memory</a>);
+<a name="l00356"></a>00356   }
+<a name="l00357"></a>00357 
+<a name="l00358"></a>00358   <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<MemoryBuffer></a> SB(Buf);
+<a name="l00359"></a>00359   <span class="keywordtype">char</span> *BufPtr = <span class="keyword">const_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(SB->getBufferStart());
+<a name="l00360"></a>00360 
+<a name="l00361"></a>00361   <span class="keywordtype">size_t</span> BytesLeft = MapSize;
+<a name="l00362"></a>00362 <span class="preprocessor">#ifndef HAVE_PREAD</span>
+<a name="l00363"></a>00363 <span class="preprocessor"></span>  <span class="keywordflow">if</span> (lseek(FD, Offset, SEEK_SET) == -1)
+<a name="l00364"></a>00364     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html">error_code</a>(errno, <a class="code" href="namespacellvm.html#a2b441dda75966c19e35e7a78e735e5d4">posix_category</a>());
+<a name="l00365"></a>00365 <span class="preprocessor">#endif</span>
+<a name="l00366"></a>00366 <span class="preprocessor"></span>
+<a name="l00367"></a>00367   <span class="keywordflow">while</span> (BytesLeft) {
+<a name="l00368"></a>00368 <span class="preprocessor">#ifdef HAVE_PREAD</span>
+<a name="l00369"></a>00369 <span class="preprocessor"></span>    ssize_t NumRead = ::pread(FD, BufPtr, BytesLeft, MapSize-BytesLeft+Offset);
+<a name="l00370"></a>00370 <span class="preprocessor">#else</span>
+<a name="l00371"></a>00371 <span class="preprocessor"></span>    ssize_t NumRead = ::read(FD, BufPtr, BytesLeft);
+<a name="l00372"></a>00372 <span class="preprocessor">#endif</span>
+<a name="l00373"></a>00373 <span class="preprocessor"></span>    <span class="keywordflow">if</span> (NumRead == -1) {
+<a name="l00374"></a>00374       <span class="keywordflow">if</span> (errno == EINTR)
+<a name="l00375"></a>00375         <span class="keywordflow">continue</span>;
+<a name="l00376"></a>00376       <span class="comment">// Error while reading.</span>
+<a name="l00377"></a>00377       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html">error_code</a>(errno, <a class="code" href="namespacellvm.html#a2b441dda75966c19e35e7a78e735e5d4">posix_category</a>());
+<a name="l00378"></a>00378     }
+<a name="l00379"></a>00379     <span class="keywordflow">if</span> (NumRead == 0) {
+<a name="l00380"></a>00380       assert(0 && <span class="stringliteral">"We got inaccurate FileSize value or fstat reported an "</span>
+<a name="l00381"></a>00381                    <span class="stringliteral">"invalid file size."</span>);
+<a name="l00382"></a>00382       *BufPtr = <span class="charliteral">'\0'</span>; <span class="comment">// null-terminate at the actual size.</span>
+<a name="l00383"></a>00383       <span class="keywordflow">break</span>;
+<a name="l00384"></a>00384     }
+<a name="l00385"></a>00385     BytesLeft -= NumRead;
+<a name="l00386"></a>00386     BufPtr += NumRead;
+<a name="l00387"></a>00387   }
+<a name="l00388"></a>00388 
+<a name="l00389"></a>00389   result.<a class="code" href="classllvm_1_1OwningPtr.html#a104a2697e939ee9391f1b6d1208d6eed">swap</a>(SB);
+<a name="l00390"></a>00390   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1error__code.html#ab1dc74db82ce9421e6c5f5f4df574aa8">error_code::success</a>();
+<a name="l00391"></a>00391 }
+<a name="l00392"></a>00392 
+<a name="l00393"></a>00393 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00394"></a>00394 <span class="comment">// MemoryBuffer::getSTDIN implementation.</span>
+<a name="l00395"></a>00395 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00396"></a>00396 
+<a name="l00397"></a><a class="code" href="classllvm_1_1MemoryBuffer.html#acdeb6901d4c9a287bb5a2eb6dab301bf">00397</a> <a class="code" href="classllvm_1_1error__code.html">error_code</a> <a class="code" href="classllvm_1_1MemoryBuffer.html#acdeb6901d4c9a287bb5a2eb6dab301bf">MemoryBuffer::getSTDIN</a>(<a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<MemoryBuffer></a> &result) {
+<a name="l00398"></a>00398   <span class="comment">// Read in all of the data from stdin, we cannot mmap stdin.</span>
+<a name="l00399"></a>00399   <span class="comment">//</span>
+<a name="l00400"></a>00400   <span class="comment">// FIXME: That isn't necessarily true, we should try to mmap stdin and</span>
+<a name="l00401"></a>00401   <span class="comment">// fallback if it fails.</span>
+<a name="l00402"></a>00402   <a class="code" href="classllvm_1_1sys_1_1Program.html#a142bef55169b90441995d413a6e7faa4">sys::Program::ChangeStdinToBinary</a>();
+<a name="l00403"></a>00403 
+<a name="l00404"></a>00404   <span class="keywordflow">return</span> <a class="code" href="MemoryBuffer_8cpp.html#acdfecc0d1fd4b60a67e76c95bfcee481">getMemoryBufferForStream</a>(0, <span class="stringliteral">"<stdin>"</span>, result);
+<a name="l00405"></a>00405 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:56 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/MemoryBuffer_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemoryBuffer_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MemoryBuffer_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MemoryBuffer_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,125 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="MemoryBuffer.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="ObjectBuffer.h",height=0.2,width=0.4,color="black",URL="$ObjectBuffer_8h.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="RuntimeDyld.h",height=0.2,width=0.4,color="black",URL="$RuntimeDyld_8h.html"];
+  Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="JITMemoryManager.h",height=0.2,width=0.4,color="red",URL="$JITMemoryManager_8h.html"];
+  Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="MCJIT.cpp",height=0.2,width=0.4,color="black",URL="$MCJIT_8cpp.html"];
+  Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="MCJIT.h",height=0.2,width=0.4,color="black",URL="$lib_2ExecutionEngine_2MCJIT_2MCJIT_8h.html"];
+  Node6 -> 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="RuntimeDyldImpl.h",height=0.2,width=0.4,color="red",URL="$RuntimeDyldImpl_8h.html"];
+  Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="ObjectImage.h",height=0.2,width=0.4,color="black",URL="$ObjectImage_8h.html"];
+  Node8 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="ObjectImageCommon.h",height=0.2,width=0.4,color="red",URL="$ObjectImageCommon_8h.html"];
+  Node9 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="RuntimeDyldELF.cpp",height=0.2,width=0.4,color="black",URL="$RuntimeDyldELF_8cpp.html"];
+  Node8 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="JITRegistrar.h",height=0.2,width=0.4,color="black",URL="$JITRegistrar_8h.html"];
+  Node11 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="GDBRegistrar.cpp",height=0.2,width=0.4,color="black",URL="$GDBRegistrar_8cpp.html"];
+  Node11 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="ObjectFile.h",height=0.2,width=0.4,color="black",URL="$ObjectFile_8h.html"];
+  Node13 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="COFF.h",height=0.2,width=0.4,color="red",URL="$Object_2COFF_8h.html"];
+  Node14 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="Binary.cpp",height=0.2,width=0.4,color="black",URL="$Binary_8cpp.html"];
+  Node13 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="ELF.h",height=0.2,width=0.4,color="black",URL="$Object_2ELF_8h.html"];
+  Node16 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="RelocVisitor.h",height=0.2,width=0.4,color="black",URL="$RelocVisitor_8h.html"];
+  Node16 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="ELFObjectFile.cpp",height=0.2,width=0.4,color="black",URL="$ELFObjectFile_8cpp.html"];
+  Node13 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="MachO.h",height=0.2,width=0.4,color="black",URL="$Object_2MachO_8h.html"];
+  Node19 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="MachOObjectFile.cpp",height=0.2,width=0.4,color="black",URL="$MachOObjectFile_8cpp.html"];
+  Node13 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="Object.cpp",height=0.2,width=0.4,color="black",URL="$Object_8cpp.html"];
+  Node13 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="ObjectFile.cpp",height=0.2,width=0.4,color="black",URL="$ObjectFile_8cpp.html"];
+  Node1 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="GCOV.h",height=0.2,width=0.4,color="black",URL="$GCOV_8h.html"];
+  Node23 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="GCOV.cpp",height=0.2,width=0.4,color="black",URL="$GCOV_8cpp.html"];
+  Node1 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="IRReader.h",height=0.2,width=0.4,color="black",URL="$IRReader_8h.html"];
+  Node1 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="Archive.cpp",height=0.2,width=0.4,color="black",URL="$Archive_2Archive_8cpp.html"];
+  Node1 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="ArchiveReader.cpp",height=0.2,width=0.4,color="black",URL="$ArchiveReader_8cpp.html"];
+  Node1 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="ArchiveWriter.cpp",height=0.2,width=0.4,color="black",URL="$ArchiveWriter_8cpp.html"];
+  Node1 -> Node29 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="LLLexer.cpp",height=0.2,width=0.4,color="black",URL="$LLLexer_8cpp.html"];
+  Node1 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="Parser.cpp",height=0.2,width=0.4,color="black",URL="$Parser_8cpp.html"];
+  Node1 -> Node31 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="BitcodeReader.cpp",height=0.2,width=0.4,color="black",URL="$BitcodeReader_8cpp.html"];
+  Node1 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="BitReader.cpp",height=0.2,width=0.4,color="black",URL="$BitReader_8cpp.html"];
+  Node1 -> Node33 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="AsmPrinterInlineAsm.cpp",height=0.2,width=0.4,color="black",URL="$AsmPrinterInlineAsm_8cpp.html"];
+  Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="Linker.cpp",height=0.2,width=0.4,color="black",URL="$Linker_8cpp.html"];
+  Node1 -> Node35 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="LinkItems.cpp",height=0.2,width=0.4,color="black",URL="$LinkItems_8cpp.html"];
+  Node1 -> Node36 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="EDDisassembler.cpp",height=0.2,width=0.4,color="black",URL="$EDDisassembler_8cpp.html"];
+  Node1 -> Node37 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="AsmLexer.cpp",height=0.2,width=0.4,color="black",URL="$AsmLexer_8cpp.html"];
+  Node1 -> Node38 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="AsmParser.cpp",height=0.2,width=0.4,color="black",URL="$AsmParser_8cpp.html"];
+  Node1 -> Node39 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="DarwinAsmParser.cpp",height=0.2,width=0.4,color="black",URL="$DarwinAsmParser_8cpp.html"];
+  Node1 -> Node40 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="Archive.cpp",height=0.2,width=0.4,color="black",URL="$Object_2Archive_8cpp.html"];
+  Node1 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node41 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="MachOObject.cpp",height=0.2,width=0.4,color="black",URL="$MachOObject_8cpp.html"];
+  Node1 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node42 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="CommandLine.cpp",height=0.2,width=0.4,color="black",URL="$CommandLine_8cpp.html"];
+  Node1 -> Node43 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="FileUtilities.cpp",height=0.2,width=0.4,color="black",URL="$FileUtilities_8cpp.html"];
+  Node1 -> Node44 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="MemoryBuffer.cpp",height=0.2,width=0.4,color="black",URL="$MemoryBuffer_8cpp.html"];
+  Node1 -> Node45 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="SourceMgr.cpp",height=0.2,width=0.4,color="black",URL="$SourceMgr_8cpp.html"];
+  Node1 -> Node46 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="YAMLParser.cpp",height=0.2,width=0.4,color="black",URL="$YAMLParser_8cpp.html"];
+  Node1 -> Node47 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="Main.cpp",height=0.2,width=0.4,color="black",URL="$Main_8cpp.html"];
+  Node1 -> Node48 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="TGLexer.cpp",height=0.2,width=0.4,color="black",URL="$TGLexer_8cpp.html"];
+  Node1 -> Node49 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="BlackList.cpp",height=0.2,width=0.4,color="black",URL="$BlackList_8cpp.html"];
+  Node1 -> Node50 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="Core.cpp",height=0.2,width=0.4,color="black",URL="$Core_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/MemoryBuiltins_8h__dep__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemoryBuiltins_8h__dep__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MemoryBuiltins_8h__dep__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MemoryBuiltins_8h__dep__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,14 @@
+<map id="G" name="G">
+<area shape="rect" href="$BasicAliasAnalysis_8cpp.html" title="BasicAliasAnalysis.cpp" alt="" coords="5,84,168,111"/>
+<area shape="rect" href="$GlobalsModRef_8cpp.html" title="GlobalsModRef.cpp" alt="" coords="192,84,331,111"/>
+<area shape="rect" href="$MemoryBuiltins_8cpp.html" title="MemoryBuiltins.cpp" alt="" coords="355,84,501,111"/>
+<area shape="rect" href="$MemoryDependenceAnalysis_8cpp.html" title="MemoryDependenceAnalysis.cpp" alt="" coords="525,84,757,111"/>
+<area shape="rect" href="$InstCombineCalls_8cpp.html" title="InstCombineCalls.cpp" alt="" coords="781,84,939,111"/>
+<area shape="rect" href="$InstCombineCompares_8cpp.html" title="InstCombineCompares.cpp" alt="" coords="963,84,1157,111"/>
+<area shape="rect" href="$InstructionCombining_8cpp.html" title="InstructionCombining.cpp" alt="" coords="1181,84,1365,111"/>
+<area shape="rect" href="$BoundsChecking_8cpp.html" title="BoundsChecking.cpp" alt="" coords="1389,84,1544,111"/>
+<area shape="rect" href="$GlobalOpt_8cpp.html" title="GlobalOpt.cpp" alt="" coords="1568,84,1680,111"/>
+<area shape="rect" href="$DeadStoreElimination_8cpp.html" title="DeadStoreElimination.cpp" alt="" coords="1704,84,1891,111"/>
+<area shape="rect" href="$GVN_8cpp.html" title="GVN.cpp" alt="" coords="1915,84,1992,111"/>
+<area shape="rect" href="$Local_8cpp.html" title="Local.cpp" alt="" coords="2016,84,2096,111"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MemoryBuiltins_8h__dep__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemoryBuiltins_8h__dep__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MemoryBuiltins_8h__dep__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/MemoryBuiltins_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemoryBuiltins_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MemoryBuiltins_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MemoryBuiltins_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,38 @@
+<map id="G" name="G">
+<area shape="rect" href="$IRBuilder_8h.html" title="llvm/IRBuilder.h" alt="" coords="1757,161,1875,188"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="2076,703,2260,729"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="801,471,961,497"/>
+<area shape="rect" href="$Operator_8h.html" title="llvm/Operator.h" alt="" coords="2955,239,3075,265"/>
+<area shape="rect" href="$SmallPtrSet_8h.html" title="llvm/ADT/SmallPtrSet.h" alt="" coords="1235,548,1403,575"/>
+<area shape="rect" href="$InstVisitor_8h.html" title="llvm/Support/InstVisitor.h" alt="" coords="2073,84,2252,111"/>
+<area shape="rect" href="$TargetFolder_8h.html" title="llvm/Support/TargetFolder.h" alt="" coords="2736,239,2931,265"/>
+<area shape="rect" href="$ValueHandle_8h.html" title="llvm/Support/ValueHandle.h" alt="" coords="1400,471,1597,497"/>
+<area shape="rect" href="$Instructions_8h.html" title="llvm/Instructions.h" alt="" coords="1955,239,2091,265"/>
+<area shape="rect" href="$Twine_8h.html" title="llvm/ADT/Twine.h" alt="" coords="1903,393,2028,420"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="96,548,245,575"/>
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="2607,393,2751,420"/>
+<area shape="rect" href="$BasicBlock_8h.html" title="llvm/BasicBlock.h" alt="" coords="1925,316,2056,343"/>
+<area shape="rect" href="$DataLayout_8h.html" title="llvm/DataLayout.h" alt="" coords="1139,393,1275,420"/>
+<area shape="rect" href="$LLVMContext_8h.html" title="llvm/LLVMContext.h" alt="" coords="1501,316,1648,343"/>
+<area shape="rect" href="$ConstantFolder_8h.html" title="llvm/Support/ConstantFolder.h" alt="" coords="2253,239,2467,265"/>
+<area shape="rect" href="$InstrTypes_8h.html" title="llvm/InstrTypes.h" alt="" coords="2133,316,2259,343"/>
+<area shape="rect" href="$DerivedTypes_8h.html" title="llvm/DerivedTypes.h" alt="" coords="2436,393,2583,420"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="1723,471,1928,497"/>
+<area shape="rect" href="$Instruction_8h.html" title="llvm/Instruction.h" alt="" coords="2180,393,2311,420"/>
+<area shape="rect" href="$Type_8h.html" title="llvm/Type.h" alt="" coords="2531,471,2621,497"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="1868,625,2041,652"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="207,625,393,652"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="997,548,1160,575"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="371,548,560,575"/>
+<area shape="rect" href="$PointerLikeTypeTraits_8h.html" title="llvm/Support/PointerLikeTypeTraits.h" alt="" coords="1356,625,1604,652"/>
+<area shape="rect" href="$DenseMapInfo_8h.html" title="llvm/ADT/DenseMapInfo.h" alt="" coords="789,548,973,575"/>
+<area shape="rect" href="$Constants_8h.html" title="llvm/Constants.h" alt="" coords="2487,316,2615,343"/>
+<area shape="rect" href="$Function_8h.html" title="llvm/Function.h" alt="" coords="2115,239,2229,265"/>
+<area shape="rect" href="$Intrinsics_8h.html" title="llvm/Intrinsics.h" alt="" coords="2592,239,2712,265"/>
+<area shape="rect" href="$IntrinsicInst_8h.html" title="llvm/IntrinsicInst.h" alt="" coords="2200,161,2336,188"/>
+<area shape="rect" href="$Module_8h.html" title="llvm/Module.h" alt="" coords="2537,161,2647,188"/>
+<area shape="rect" href="$CallSite_8h.html" title="llvm/Support/CallSite.h" alt="" coords="1901,161,2067,188"/>
+<area shape="rect" href="$PointerIntPair_8h.html" title="llvm/ADT/PointerIntPair.h" alt="" coords="1579,548,1755,575"/>
+<area shape="rect" href="$ConstantFolding_8h.html" title="llvm/Analysis/ConstantFolding.h" alt="" coords="2740,316,2961,343"/>
+<area shape="rect" href="$Value_8h.html" title="llvm/Value.h" alt="" coords="1829,548,1928,575"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MemoryDependenceAnalysis_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemoryDependenceAnalysis_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MemoryDependenceAnalysis_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MemoryDependenceAnalysis_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,632 @@
+<!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: MemoryDependenceAnalysis.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="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">MemoryDependenceAnalysis.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="MemoryDependenceAnalysis_8h_source.html">llvm/Analysis/MemoryDependenceAnalysis.h</a>"</code><br/>
+<code>#include "<a class="el" href="Instructions_8h_source.html">llvm/Instructions.h</a>"</code><br/>
+<code>#include "<a class="el" href="IntrinsicInst_8h_source.html">llvm/IntrinsicInst.h</a>"</code><br/>
+<code>#include "<a class="el" href="Function_8h_source.html">llvm/Function.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="AliasAnalysis_8h_source.html">llvm/Analysis/AliasAnalysis.h</a>"</code><br/>
+<code>#include "<a class="el" href="Dominators_8h_source.html">llvm/Analysis/Dominators.h</a>"</code><br/>
+<code>#include "<a class="el" href="InstructionSimplify_8h_source.html">llvm/Analysis/InstructionSimplify.h</a>"</code><br/>
+<code>#include "<a class="el" href="MemoryBuiltins_8h_source.html">llvm/Analysis/MemoryBuiltins.h</a>"</code><br/>
+<code>#include "<a class="el" href="PHITransAddr_8h_source.html">llvm/Analysis/PHITransAddr.h</a>"</code><br/>
+<code>#include "<a class="el" href="ValueTracking_8h_source.html">llvm/Analysis/ValueTracking.h</a>"</code><br/>
+<code>#include "<a class="el" href="Statistic_8h_source.html">llvm/ADT/Statistic.h</a>"</code><br/>
+<code>#include "<a class="el" href="STLExtras_8h_source.html">llvm/ADT/STLExtras.h</a>"</code><br/>
+<code>#include "<a class="el" href="PredIteratorCache_8h_source.html">llvm/Support/PredIteratorCache.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="DataLayout_8h_source.html">llvm/DataLayout.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for MemoryDependenceAnalysis.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="MemoryDependenceAnalysis_8cpp__incl.png" border="0" usemap="#MemoryDependenceAnalysis_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="MemoryDependenceAnalysis_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="MemoryDependenceAnalysis_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "memdep"</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="MemoryDependenceAnalysis_8cpp.html#a7029b247b93771322bd18f833963a291">STATISTIC</a> (NumCacheNonLocal,"Number of fully cached non-local responses")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#a4d85143010494f628cca8ad60b0ab9f3">STATISTIC</a> (NumCacheDirtyNonLocal,"Number of dirty cached non-local responses")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#a3c17807d2641fd33cfe65e2f9ec4035d">STATISTIC</a> (NumUncacheNonLocal,"Number of uncached non-local responses")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#a98c3d29229e46306052ca8abfbf422a5">STATISTIC</a> (NumCacheNonLocalPtr,"Number of fully cached non-local ptr responses")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#af11a5c85f04ba99bc42e57a37ecfc40c">STATISTIC</a> (NumCacheDirtyNonLocalPtr,"Number of cached, but dirty, non-local ptr responses")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#a7209f29799edaa1186729dfef85a8e48">STATISTIC</a> (NumUncacheNonLocalPtr,"Number of uncached non-local ptr responses")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#a32f23c052d28d236dd4896839f598414">STATISTIC</a> (NumCacheCompleteNonLocalPtr,"Number of block queries that were completely cached")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#aecf67c929495cf8397e9eb4c401e8d2e">INITIALIZE_PASS_BEGIN</a> (<a class="el" href="classllvm_1_1MemoryDependenceAnalysis.html">MemoryDependenceAnalysis</a>,"memdep","<a class="el" href="classllvm_1_1sys_1_1Memory.html">Memory</a> <a class="el" href="classllvm_1_1Dependence.html">Dependence</a> Analysis", false, <a class="el" href="LoopSimplify_8cpp.html#a13f020c6a40eb04f1b4f9ddfbb004ce0">true</a>) INITIALIZE_PASS_END(<a class="el" href="classllvm_1_1MemoryDependenceAnalysis.html">MemoryDependenceAnalysis</a></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename KeyTy > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#a90f6ea490b2dda15f00cf09a9c5cd98d">RemoveFromReverseMap</a> (<a class="el" href="classllvm_1_1DenseMap.html">DenseMap</a>< <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *, <a class="el" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet</a>< KeyTy, 4 > > &ReverseMap, <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *Inst, KeyTy Val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1AliasAnalysis.html#a83d29c51155787c607268c2659559460">AliasAnalysis::ModRefResult</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#afb744ee3844b3c1f807fe12ec53a6cfb">GetLocation</a> (const <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *Inst, <a class="el" href="structllvm_1_1AliasAnalysis_1_1Location.html">AliasAnalysis::Location</a> &Loc, <a class="el" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a> *AA)</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="MemoryDependenceAnalysis_8cpp.html#a4e69b97c1ce46b7503d184291e65c73c">isLoadLoadClobberIfExtendedToFullWidth</a> (const <a class="el" href="structllvm_1_1AliasAnalysis_1_1Location.html">AliasAnalysis::Location</a> &MemLoc, const <a class="el" href="classllvm_1_1Value.html">Value</a> *&MemLocBase, <a class="el" href="classint64__t.html">int64_t</a> &MemLocOffs, const <a class="el" href="classllvm_1_1LoadInst.html">LoadInst</a> *<a class="el" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#a99998ec12f1359427a3d20c43a27d1f1">AssertSorted</a> (<a class="el" href="classllvm_1_1MemoryDependenceAnalysis.html#af98ef3ed6d09824e50ec69cebc839609">MemoryDependenceAnalysis::NonLocalDepInfo</a> &Cache, int Count=-1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#a2a5b2ca7088c06272319b7718936c88b">SortNonLocalDepInfoCache</a> (<a class="el" href="classllvm_1_1MemoryDependenceAnalysis.html#af98ef3ed6d09824e50ec69cebc839609">MemoryDependenceAnalysis::NonLocalDepInfo</a> &Cache, <a class="el" href="classunsigned.html">unsigned</a> NumSortedEntries)</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 const int </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#afbfb945cd59740858dd8509ffa6b0506">BlockScanLimit</a> = 500</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#a3950b99d68513a8206c71fdc9f95627c">memdep</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1sys_1_1Memory.html">Memory</a> <a class="el" href="classllvm_1_1Dependence.html">Dependence</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#ac7401c647f9a17905e254a5cbb65c7ee">Analysis</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classllvm_1_1sys_1_1Memory.html">Memory</a> <a class="el" href="classllvm_1_1Dependence.html">Dependence</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#a68467917887af0ab956c384969815087">false</a></td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "memdep"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00017">17</a> of file <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html">MemoryDependenceAnalysis.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a99998ec12f1359427a3d20c43a27d1f1"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::AssertSorted" ref="a99998ec12f1359427a3d20c43a27d1f1" args="(MemoryDependenceAnalysis::NonLocalDepInfo &Cache, int Count=-1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void AssertSorted </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MemoryDependenceAnalysis.html#af98ef3ed6d09824e50ec69cebc839609">MemoryDependenceAnalysis::NonLocalDepInfo</a> & </td>
+          <td class="paramname"><em>Cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>Count</em> = <code>-1</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>AssertSorted - This method is used when -debug is specified to verify that cache arrays are properly kept sorted. </p>
+
+<p>Definition at line <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00589">589</a> of file <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html">MemoryDependenceAnalysis.cpp</a>.</p>
+
+<p>Referenced by <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00612">llvm::MemoryDependenceAnalysis::getNonLocalCallDependency()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afb744ee3844b3c1f807fe12ec53a6cfb"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::GetLocation" ref="afb744ee3844b3c1f807fe12ec53a6cfb" args="(const Instruction *Inst, AliasAnalysis::Location &Loc, AliasAnalysis *AA)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1AliasAnalysis.html#a83d29c51155787c607268c2659559460">AliasAnalysis::ModRefResult</a> GetLocation </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> * </td>
+          <td class="paramname"><em>Inst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structllvm_1_1AliasAnalysis_1_1Location.html">AliasAnalysis::Location</a> & </td>
+          <td class="paramname"><em>Loc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a> * </td>
+          <td class="paramname"><em>AA</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>GetLocation - If the given instruction references a specific memory location, fill in Loc with the details, otherwise set Loc.Ptr to null. Return a ModRefInfo value describing the general behavior of the instruction. </p>
+
+<p>Definition at line <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00119">119</a> of file <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html">MemoryDependenceAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="AliasAnalysis_8cpp_source.html#l00226">llvm::AliasAnalysis::getLocation()</a>, <a class="el" href="AliasAnalysis_8h_source.html#l00094">llvm::AliasAnalysis::getTargetLibraryInfo()</a>, <a class="el" href="MemoryBuiltins_8cpp_source.html#l00301">llvm::isFreeCall()</a>, <a class="el" href="LoopInfoImpl_8h_source.html#l00430">LI</a>, <a class="el" href="Instruction_8cpp_source.html#l00330">llvm::Instruction::mayReadFromMemory()</a>, <a class="el" href="Instruction_8cpp_source.html#l00350">llvm::Instruction::mayWriteToMemory()</a>, <a class="el" href="LLVMContext_8h_source.html#l00045">llvm::LLVMContext::MD_tbaa</a>, <a class="el" href="AliasAnalysis_8h_source.html#l00231">llvm::AliasAnalysis::Mod</a>, <a class="el" href="AliasAnalysis_8h_source.html#l00231">llvm::AliasAnalysis::ModRef</a>, <a class="el" href="Instructions_8h_source.html#l00040">llvm::Monotonic</a>, <a class="el" href="AliasAnalysis_8h_source.html#l00231">llvm::AliasAnalysis::No
 ModRef</a>, and <a class="el" href="AliasAnalysis_8h_source.html#l00231">llvm::AliasAnalysis::Ref</a>.</p>
+
+<p>Referenced by <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00529">llvm::MemoryDependenceAnalysis::getDependency()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aecf67c929495cf8397e9eb4c401e8d2e"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::INITIALIZE_PASS_BEGIN" ref="aecf67c929495cf8397e9eb4c401e8d2e" args="(MemoryDependenceAnalysis,"memdep","Memory Dependence Analysis", false, true) INITIALIZE_PASS_END(MemoryDependenceAnalysis" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">INITIALIZE_PASS_BEGIN </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MemoryDependenceAnalysis.html">MemoryDependenceAnalysis</a> </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"memdep" </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Memory <a class="el" href="classllvm_1_1Dependence.html">Dependence</a> Analysis" </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="LoopSimplify_8cpp.html#a13f020c6a40eb04f1b4f9ddfbb004ce0">true</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="a4e69b97c1ce46b7503d184291e65c73c"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::isLoadLoadClobberIfExtendedToFullWidth" ref="a4e69b97c1ce46b7503d184291e65c73c" args="(const AliasAnalysis::Location &MemLoc, const Value *&MemLocBase, int64_t &MemLocOffs, const LoadInst *LI, const DataLayout *TD)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isLoadLoadClobberIfExtendedToFullWidth </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structllvm_1_1AliasAnalysis_1_1Location.html">AliasAnalysis::Location</a> & </td>
+          <td class="paramname"><em>MemLoc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Value.html">Value</a> *& </td>
+          <td class="paramname"><em>MemLocBase</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classint64__t.html">int64_t</a> & </td>
+          <td class="paramname"><em>MemLocOffs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1LoadInst.html">LoadInst</a> * </td>
+          <td class="paramname"><em>LI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> * </td>
+          <td class="paramname"><em>TD</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>isLoadLoadClobberIfExtendedToFullWidth - Return true if LI is a load that would fully overlap MemLoc if done as a wider legal integer load.</p>
+<p>MemLocBase, MemLocOffset are lazily computed here the first time the base/offs of memloc is needed. </p>
+
+<p>Definition at line <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00255">255</a> of file <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html">MemoryDependenceAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00281">llvm::MemoryDependenceAnalysis::getLoadLoadClobberFullWidthSize()</a>, <a class="el" href="ValueTracking_8cpp_source.html#l01591">llvm::GetPointerBaseWithConstantOffset()</a>, <a class="el" href="AliasAnalysis_8h_source.html#l00108">llvm::AliasAnalysis::Location::Ptr</a>, and <a class="el" href="AliasAnalysis_8h_source.html#l00114">llvm::AliasAnalysis::Location::Size</a>.</p>
+
+<p>Referenced by <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00350">llvm::MemoryDependenceAnalysis::getPointerDependencyFrom()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a90f6ea490b2dda15f00cf09a9c5cd98d"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::RemoveFromReverseMap" ref="a90f6ea490b2dda15f00cf09a9c5cd98d" args="(DenseMap< Instruction *, SmallPtrSet< KeyTy, 4 > > &ReverseMap, Instruction *Inst, KeyTy Val)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename KeyTy > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">static void RemoveFromReverseMap </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1DenseMap.html">DenseMap</a>< <a class="el" href="classllvm_1_1Instruction.html">Instruction</a> *, <a class="el" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet</a>< KeyTy, 4 > > & </td>
+          <td class="paramname"><em>ReverseMap</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Instruction.html">Instruction</a> * </td>
+          <td class="paramname"><em>Inst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">KeyTy </td>
+          <td class="paramname"><em>Val</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>RemoveFromReverseMap - This is a helper function that removes Val from 'Inst's set in ReverseMap. If the set becomes empty, remove Inst's entry. </p>
+
+<p>Definition at line <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00102">102</a> of file <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html">MemoryDependenceAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="DenseMap_8h_source.html#l00067">llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT >, KeyT, ValueT, KeyInfoT >::empty()</a>, <a class="el" href="DenseMap_8h_source.html#l00057">llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT >, KeyT, ValueT, KeyInfoT >::end()</a>, and <a class="el" href="DenseMap_8h_source.html#l00170">llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT >, KeyT, ValueT, KeyInfoT >::erase()</a>.</p>
+
+<p>Referenced by <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00529">llvm::MemoryDependenceAnalysis::getDependency()</a>, <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00612">llvm::MemoryDependenceAnalysis::getNonLocalCallDependency()</a>, and <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l01284">llvm::MemoryDependenceAnalysis::removeInstruction()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2a5b2ca7088c06272319b7718936c88b"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::SortNonLocalDepInfoCache" ref="a2a5b2ca7088c06272319b7718936c88b" args="(MemoryDependenceAnalysis::NonLocalDepInfo &Cache, unsigned NumSortedEntries)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void SortNonLocalDepInfoCache </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MemoryDependenceAnalysis.html#af98ef3ed6d09824e50ec69cebc839609">MemoryDependenceAnalysis::NonLocalDepInfo</a> & </td>
+          <td class="paramname"><em>Cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>NumSortedEntries</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>SortNonLocalDepInfoCache - Sort the a NonLocalDepInfo cache, given a certain number of elements in the array that are already properly ordered. This is optimized for the case when only a few entries are added. </p>
+
+<p>Definition at line <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00847">847</a> of file <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html">MemoryDependenceAnalysis.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7029b247b93771322bd18f833963a291"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::STATISTIC" ref="a7029b247b93771322bd18f833963a291" args="(NumCacheNonLocal,"Number of fully cached non-local responses")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumCacheNonLocal </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of fully cached non-local responses" </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="a4d85143010494f628cca8ad60b0ab9f3"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::STATISTIC" ref="a4d85143010494f628cca8ad60b0ab9f3" args="(NumCacheDirtyNonLocal,"Number of dirty cached non-local responses")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumCacheDirtyNonLocal </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of dirty cached non-local responses" </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="a3c17807d2641fd33cfe65e2f9ec4035d"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::STATISTIC" ref="a3c17807d2641fd33cfe65e2f9ec4035d" args="(NumUncacheNonLocal,"Number of uncached non-local responses")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumUncacheNonLocal </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of uncached non-local responses" </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="a98c3d29229e46306052ca8abfbf422a5"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::STATISTIC" ref="a98c3d29229e46306052ca8abfbf422a5" args="(NumCacheNonLocalPtr,"Number of fully cached non-local ptr responses")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumCacheNonLocalPtr </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of fully cached non-local ptr responses" </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="af11a5c85f04ba99bc42e57a37ecfc40c"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::STATISTIC" ref="af11a5c85f04ba99bc42e57a37ecfc40c" args="(NumCacheDirtyNonLocalPtr,"Number of cached, but dirty, non-local ptr responses")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumCacheDirtyNonLocalPtr </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of </td>
+          <td class="paramname"><em>cached</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">but </td>
+          <td class="paramname"><em>dirty</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">non-local ptr responses" </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="a7209f29799edaa1186729dfef85a8e48"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::STATISTIC" ref="a7209f29799edaa1186729dfef85a8e48" args="(NumUncacheNonLocalPtr,"Number of uncached non-local ptr responses")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumUncacheNonLocalPtr </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of uncached non-local ptr responses" </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="a32f23c052d28d236dd4896839f598414"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::STATISTIC" ref="a32f23c052d28d236dd4896839f598414" args="(NumCacheCompleteNonLocalPtr,"Number of block queries that were completely cached")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumCacheCompleteNonLocalPtr </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of block queries that were completely cached" </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="ac7401c647f9a17905e254a5cbb65c7ee"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::Analysis" ref="ac7401c647f9a17905e254a5cbb65c7ee" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1sys_1_1Memory.html">Memory</a> <a class="el" href="classllvm_1_1Dependence.html">Dependence</a> Analysis</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00060">60</a> of file <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html">MemoryDependenceAnalysis.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afbfb945cd59740858dd8509ffa6b0506"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::BlockScanLimit" ref="afbfb945cd59740858dd8509ffa6b0506" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const int <a class="el" href="MemoryDependenceAnalysis_8cpp.html#afbfb945cd59740858dd8509ffa6b0506">BlockScanLimit</a> = 500<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00052">52</a> of file <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html">MemoryDependenceAnalysis.cpp</a>.</p>
+
+<p>Referenced by <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00350">llvm::MemoryDependenceAnalysis::getPointerDependencyFrom()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a68467917887af0ab956c384969815087"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::false" ref="a68467917887af0ab956c384969815087" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1sys_1_1Memory.html">Memory</a> <a class="el" href="classllvm_1_1Dependence.html">Dependence</a> <a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00060">60</a> of file <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html">MemoryDependenceAnalysis.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3950b99d68513a8206c71fdc9f95627c"></a><!-- doxytag: member="MemoryDependenceAnalysis.cpp::memdep" ref="a3950b99d68513a8206c71fdc9f95627c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="MemoryDependenceAnalysis_8cpp.html#a3950b99d68513a8206c71fdc9f95627c">memdep</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00060">60</a> of file <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html">MemoryDependenceAnalysis.cpp</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:36 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/MemoryDependenceAnalysis_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemoryDependenceAnalysis_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MemoryDependenceAnalysis_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MemoryDependenceAnalysis_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,49 @@
+<map id="G" name="G">
+<area shape="rect" href="$MemoryDependenceAnalysis_8h.html" title="llvm/Analysis/MemoryDependenceAnalysis.h" alt="" coords="3087,84,3391,111"/>
+<area shape="rect" href="$AliasAnalysis_8h.html" title="llvm/Analysis/AliasAnalysis.h" alt="" coords="2900,161,3100,188"/>
+<area shape="rect" href="$Instructions_8h.html" title="llvm/Instructions.h" alt="" coords="1500,316,1636,343"/>
+<area shape="rect" href="$LLVMContext_8h.html" title="llvm/LLVMContext.h" alt="" coords="2237,548,2384,575"/>
+<area shape="rect" href="$IntrinsicInst_8h.html" title="llvm/IntrinsicInst.h" alt="" coords="777,239,913,265"/>
+<area shape="rect" href="$Function_8h.html" title="llvm/Function.h" alt="" coords="773,316,888,343"/>
+<area shape="rect" href="$Dominators_8h.html" title="llvm/Analysis/Dominators.h" alt="" coords="2460,161,2655,188"/>
+<area shape="rect" href="$InstructionSimplify_8h.html" title="llvm/Analysis/InstructionSimplify.h" alt="" coords="3523,84,3757,111"/>
+<area shape="rect" href="$MemoryBuiltins_8h.html" title="llvm/Analysis/MemoryBuiltins.h" alt="" coords="1733,84,1949,111"/>
+<area shape="rect" href="$DataLayout_8h.html" title="llvm/DataLayout.h" alt="" coords="2180,316,2316,343"/>
+<area shape="rect" href="$PHITransAddr_8h.html" title="llvm/Analysis/PHITransAddr.h" alt="" coords="195,625,397,652"/>
+<area shape="rect" href="$ValueTracking_8h.html" title="llvm/Analysis/ValueTracking.h" alt="" coords="661,548,867,575"/>
+<area shape="rect" href="$Statistic_8h.html" title="llvm/ADT/Statistic.h" alt="" coords="3781,84,3925,111"/>
+<area shape="rect" href="$STLExtras_8h.html" title="llvm/ADT/STLExtras.h" alt="" coords="3485,703,3640,729"/>
+<area shape="rect" href="$PredIteratorCache_8h.html" title="llvm/Support/PredIteratorCache.h" alt="" coords="443,161,677,188"/>
+<area shape="rect" href="$Debug_8h.html" title="llvm/Support/Debug.h" alt="" coords="3949,84,4109,111"/>
+<area shape="rect" href="$BasicBlock_8h.html" title="llvm/BasicBlock.h" alt="" coords="2152,393,2283,420"/>
+<area shape="rect" href="$Pass_8h.html" title="llvm/Pass.h" alt="" coords="2916,393,3007,420"/>
+<area shape="rect" href="$ValueHandle_8h.html" title="llvm/Support/ValueHandle.h" alt="" coords="2679,161,2876,188"/>
+<area shape="rect" href="$PointerIntPair_8h.html" title="llvm/ADT/PointerIntPair.h" alt="" coords="2833,316,3009,343"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="2732,393,2892,420"/>
+<area shape="rect" href="$SmallPtrSet_8h.html" title="llvm/ADT/SmallPtrSet.h" alt="" coords="3185,316,3353,343"/>
+<area shape="rect" href="$OwningPtr_8h.html" title="llvm/ADT/OwningPtr.h" alt="" coords="3307,703,3461,729"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="2200,625,2384,652"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="2624,780,2797,807"/>
+<area shape="rect" href="$CallSite_8h.html" title="llvm/Support/CallSite.h" alt="" coords="1924,239,2089,265"/>
+<area shape="rect" href="$Attributes_8h.html" title="llvm/Attributes.h" alt="" coords="792,471,917,497"/>
+<area shape="rect" href="$CallingConv_8h.html" title="llvm/CallingConv.h" alt="" coords="1195,393,1331,420"/>
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="933,625,1077,652"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="1856,703,2024,729"/>
+<area shape="rect" href="$InstrTypes_8h.html" title="llvm/InstrTypes.h" alt="" coords="1355,393,1480,420"/>
+<area shape="rect" href="$DerivedTypes_8h.html" title="llvm/DerivedTypes.h" alt="" coords="1905,548,2052,575"/>
+<area shape="rect" href="$IntegersSubset_8h.html" title="llvm/Support/IntegersSubset.h" alt="" coords="1811,471,2027,497"/>
+<area shape="rect" href="$IntegersSubsetMapping_8h.html" title="llvm/Support/IntegersSubsetMapping.h" alt="" coords="1656,393,1925,420"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="509,393,715,420"/>
+<area shape="rect" href="$Constants_8h.html" title="llvm/Constants.h" alt="" coords="992,548,1120,575"/>
+<area shape="rect" href="$Intrinsics_8h.html" title="llvm/Intrinsics.h" alt="" coords="579,316,699,343"/>
+<area shape="rect" href="$GlobalValue_8h.html" title="llvm/GlobalValue.h" alt="" coords="296,393,435,420"/>
+<area shape="rect" href="$Argument_8h.html" title="llvm/Argument.h" alt="" coords="789,393,917,420"/>
+<area shape="rect" href="$DepthFirstIterator_8h.html" title="llvm/ADT/DepthFirstIterator.h" alt="" coords="2745,239,2948,265"/>
+<area shape="rect" href="$GraphTraits_8h.html" title="llvm/ADT/GraphTraits.h" alt="" coords="2492,316,2657,343"/>
+<area shape="rect" href="$CFG_8h.html" title="llvm/Support/CFG.h" alt="" coords="1308,239,1452,265"/>
+<area shape="rect" href="$raw__ostream_8h.html" title="llvm/Support/raw_ostream.h" alt="" coords="2611,548,2811,575"/>
+<area shape="rect" href="$IRBuilder_8h.html" title="llvm/IRBuilder.h" alt="" coords="1783,239,1900,265"/>
+<area shape="rect" href="$Operator_8h.html" title="llvm/Operator.h" alt="" coords="1093,471,1213,497"/>
+<area shape="rect" href="$InstVisitor_8h.html" title="llvm/Support/InstVisitor.h" alt="" coords="877,161,1056,188"/>
+<area shape="rect" href="$TargetFolder_8h.html" title="llvm/Support/TargetFolder.h" alt="" coords="912,316,1107,343"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MemoryDependenceAnalysis_8cpp__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MemoryDependenceAnalysis_8cpp__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MemoryDependenceAnalysis_8cpp__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream





More information about the llvm-commits mailing list