[llvm-commits] [www-releases] r170845 [8/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/AsmParser_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/AsmParser_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/AsmParser_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/AsmParser_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,3875 @@
+<!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: AsmParser.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_edbd05defa7d897e6588eb3f84517e19.html">MC</a>      </li>
+      <li class="navelem"><a class="el" href="dir_3a92e4025c7dabec62787848214495f7.html">MCParser</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">AsmParser.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="AsmParser_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- AsmParser.cpp - Parser for Assembly Files --------------------------===//</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 class implements the parser for assembly files.</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="APFloat_8h.html">llvm/ADT/APFloat.h</a>"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="SmallString_8h.html">llvm/ADT/SmallString.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="StringMap_8h.html">llvm/ADT/StringMap.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="Twine_8h.html">llvm/ADT/Twine.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="MCAsmInfo_8h.html">llvm/MC/MCAsmInfo.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="MCContext_8h.html">llvm/MC/MCContext.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="MCDwarf_8h.html">llvm/MC/MCDwarf.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="MCExpr_8h.html">llvm/MC/MCExpr.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="MCInstPrinter_8h.html">llvm/MC/MCInstPrinter.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="MCInstrInfo_8h.html">llvm/MC/MCInstrInfo.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="AsmCond_8h.html">llvm/MC/MCParser/AsmCond.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="AsmLexer_8h.html">llvm/MC/MCParser/AsmLexer.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="MCAsmParser_8h.html">llvm/MC/MCParser/MCAsmParser.h</a>"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="MCParsedAsmOperand_8h.html">llvm/MC/MCParser/MCParsedAsmOperand.h</a>"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="MCRegisterInfo_8h.html">llvm/MC/MCRegisterInfo.h</a>"</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="MCSectionMachO_8h.html">llvm/MC/MCSectionMachO.h</a>"</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="MCStreamer_8h.html">llvm/MC/MCStreamer.h</a>"</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="MCSymbol_8h.html">llvm/MC/MCSymbol.h</a>"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="MCTargetAsmParser_8h.html">llvm/MC/MCTargetAsmParser.h</a>"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="CommandLine_8h.html">llvm/Support/CommandLine.h</a>"</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="ErrorHandling_8h.html">llvm/Support/ErrorHandling.h</a>"</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="MathExtras_8h.html">llvm/Support/MathExtras.h</a>"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="MemoryBuffer_8h.html">llvm/Support/MemoryBuffer.h</a>"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="SourceMgr_8h.html">llvm/Support/SourceMgr.h</a>"</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include <cctype></span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include <set></span>
+<a name="l00041"></a>00041 <span class="preprocessor">#include <string></span>
+<a name="l00042"></a>00042 <span class="preprocessor">#include <vector></span>
+<a name="l00043"></a>00043 <span class="keyword">using namespace </span>llvm;
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<bool></a>
+<a name="l00046"></a>00046 <a class="code" href="AsmParser_8cpp.html#a79ddd99ea70faec91393c660fdfb7061">FatalAssemblerWarnings</a>(<span class="stringliteral">"fatal-assembler-warnings"</span>,
+<a name="l00047"></a>00047                        <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Consider warnings as error"</span>));
+<a name="l00048"></a>00048 
+<a name="l00049"></a><a class="code" href="classllvm_1_1MCAsmParserSemaCallback.html#a086b1ac7564c9dea0a5d62d837965d9d">00049</a> <a class="code" href="classllvm_1_1MCAsmParserSemaCallback.html#a086b1ac7564c9dea0a5d62d837965d9d">MCAsmParserSemaCallback::~MCAsmParserSemaCallback</a>() {} 
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051 <span class="keyword">namespace </span>{
+<a name="l00052"></a>00052 <span class="comment"></span>
+<a name="l00053"></a>00053 <span class="comment">/// \brief Helper class for tracking macro definitions.</span>
+<a name="l00054"></a>00054 <span class="comment"></span><span class="keyword">typedef</span> std::vector<AsmToken> MacroArgument;
+<a name="l00055"></a>00055 <span class="keyword">typedef</span> std::vector<MacroArgument> MacroArguments;
+<a name="l00056"></a>00056 <span class="keyword">typedef</span> std::pair<StringRef, MacroArgument> MacroParameter;
+<a name="l00057"></a>00057 <span class="keyword">typedef</span> std::vector<MacroParameter> MacroParameters;
+<a name="l00058"></a>00058 
+<a name="l00059"></a>00059 <span class="keyword">struct </span>Macro {
+<a name="l00060"></a>00060   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l00061"></a>00061   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Body;
+<a name="l00062"></a>00062   MacroParameters Parameters;
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064 <span class="keyword">public</span>:
+<a name="l00065"></a>00065   Macro(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> N, <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> B, <span class="keyword">const</span> MacroParameters &P) :
+<a name="l00066"></a>00066     <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>(N), Body(B), Parameters(P) {}
+<a name="l00067"></a>00067 };
+<a name="l00068"></a>00068 <span class="comment"></span>
+<a name="l00069"></a>00069 <span class="comment">/// \brief Helper class for storing information about an active macro</span>
+<a name="l00070"></a>00070 <span class="comment">/// instantiation.</span>
+<a name="l00071"></a>00071 <span class="comment"></span><span class="keyword">struct </span>MacroInstantiation {<span class="comment"></span>
+<a name="l00072"></a>00072 <span class="comment">  /// The macro being instantiated.</span>
+<a name="l00073"></a>00073 <span class="comment"></span>  <span class="keyword">const</span> Macro *TheMacro;
+<a name="l00074"></a>00074 <span class="comment"></span>
+<a name="l00075"></a>00075 <span class="comment">  /// The macro instantiation with substitutions.</span>
+<a name="l00076"></a>00076 <span class="comment"></span>  <a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *Instantiation;
+<a name="l00077"></a>00077 <span class="comment"></span>
+<a name="l00078"></a>00078 <span class="comment">  /// The location of the instantiation.</span>
+<a name="l00079"></a>00079 <span class="comment"></span>  <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> InstantiationLoc;
+<a name="l00080"></a>00080 <span class="comment"></span>
+<a name="l00081"></a>00081 <span class="comment">  /// The location where parsing should resume upon instantiation completion.</span>
+<a name="l00082"></a>00082 <span class="comment"></span>  <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> ExitLoc;
+<a name="l00083"></a>00083 
+<a name="l00084"></a>00084 <span class="keyword">public</span>:
+<a name="l00085"></a>00085   MacroInstantiation(<span class="keyword">const</span> Macro *M, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> IL, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> EL,
+<a name="l00086"></a>00086                      <a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l00087"></a>00087 };
+<a name="l00088"></a>00088 
+<a name="l00089"></a>00089 <span class="comment">//struct AsmRewrite;</span>
+<a name="l00090"></a>00090 <span class="keyword">struct </span>ParseStatementInfo {<span class="comment"></span>
+<a name="l00091"></a>00091 <span class="comment">  /// ParsedOperands - The parsed operands from the last parsed statement.</span>
+<a name="l00092"></a>00092 <span class="comment"></span>  <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<MCParsedAsmOperand*, 8></a> ParsedOperands;
+<a name="l00093"></a>00093 <span class="comment"></span>
+<a name="l00094"></a>00094 <span class="comment">  /// Opcode - The opcode from the last parsed instruction.</span>
+<a name="l00095"></a>00095 <span class="comment"></span>  <span class="keywordtype">unsigned</span> Opcode;
+<a name="l00096"></a>00096 
+<a name="l00097"></a>00097   <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<AsmRewrite></a> *AsmRewrites;
+<a name="l00098"></a>00098 
+<a name="l00099"></a>00099   ParseStatementInfo() : Opcode(~0U), AsmRewrites(0) {}
+<a name="l00100"></a>00100   ParseStatementInfo(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<AsmRewrite></a> *rewrites)
+<a name="l00101"></a>00101     : Opcode(~0), AsmRewrites(rewrites) {}
+<a name="l00102"></a>00102 
+<a name="l00103"></a>00103   ~ParseStatementInfo() {
+<a name="l00104"></a>00104     <span class="comment">// Free any parsed operands.</span>
+<a name="l00105"></a>00105     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = ParsedOperands.size(); i != e; ++i)
+<a name="l00106"></a>00106       <span class="keyword">delete</span> ParsedOperands[i];
+<a name="l00107"></a>00107     ParsedOperands.clear();
+<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 The concrete assembly parser instance.</span>
+<a name="l00112"></a>00112 <span class="comment"></span><span class="keyword">class </span>AsmParser : <span class="keyword">public</span> <a class="code" href="classllvm_1_1MCAsmParser.html">MCAsmParser</a> {
+<a name="l00113"></a>00113   <span class="keyword">friend</span> <span class="keyword">class </span>GenericAsmParser;
+<a name="l00114"></a>00114 
+<a name="l00115"></a>00115   AsmParser(<span class="keyword">const</span> AsmParser &) <a class="code" href="Compiler_8h.html#aacca75352b8e153274310c374564eb01">LLVM_DELETED_FUNCTION</a>;
+<a name="l00116"></a>00116   <span class="keywordtype">void</span> operator=(const AsmParser &) LLVM_DELETED_FUNCTION;
+<a name="l00117"></a>00117 private:
+<a name="l00118"></a>00118   <a class="code" href="classllvm_1_1AsmLexer.html" title="AsmLexer - Lexer class for assembly files.">AsmLexer</a> Lexer;
+<a name="l00119"></a>00119   <a class="code" href="classllvm_1_1MCContext.html">MCContext</a> &Ctx;
+<a name="l00120"></a>00120   <a class="code" href="classllvm_1_1MCStreamer.html">MCStreamer</a> &Out;
+<a name="l00121"></a>00121   const <a class="code" href="classllvm_1_1MCAsmInfo.html">MCAsmInfo</a> &MAI;
+<a name="l00122"></a>00122   <a class="code" href="classllvm_1_1SourceMgr.html">SourceMgr</a> &<a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>;
+<a name="l00123"></a>00123   <a class="code" href="classllvm_1_1SourceMgr.html">SourceMgr</a>::DiagHandlerTy SavedDiagHandler;
+<a name="l00124"></a>00124   <span class="keywordtype">void</span> *SavedDiagContext;
+<a name="l00125"></a>00125   <a class="code" href="classllvm_1_1MCAsmParserExtension.html" title="Generic interface for extending the MCAsmParser, which is implemented by target and object file assem...">MCAsmParserExtension</a> *GenericParser;
+<a name="l00126"></a>00126   <a class="code" href="classllvm_1_1MCAsmParserExtension.html" title="Generic interface for extending the MCAsmParser, which is implemented by target and object file assem...">MCAsmParserExtension</a> *PlatformParser;
+<a name="l00127"></a>00127 <span class="comment"></span>
+<a name="l00128"></a>00128 <span class="comment">  /// This is the current buffer index we're lexing from as managed by the</span>
+<a name="l00129"></a>00129 <span class="comment">  /// SourceMgr object.</span>
+<a name="l00130"></a>00130 <span class="comment"></span>  <span class="keywordtype">int</span> CurBuffer;
+<a name="l00131"></a>00131 
+<a name="l00132"></a>00132   <a class="code" href="classllvm_1_1AsmCond.html">AsmCond</a> TheCondState;
+<a name="l00133"></a>00133   std::<a class="code" href="classstd_1_1vector.html">vector</a><<a class="code" href="classllvm_1_1AsmCond.html">AsmCond</a>> TheCondStack;
+<a name="l00134"></a>00134 <span class="comment"></span>
+<a name="l00135"></a>00135 <span class="comment">  /// DirectiveMap - This is a table handlers for directives.  Each handler is</span>
+<a name="l00136"></a>00136 <span class="comment">  /// invoked after the directive identifier is read and is responsible for</span>
+<a name="l00137"></a>00137 <span class="comment">  /// parsing and validating the rest of the directive.  The handler is passed</span>
+<a name="l00138"></a>00138 <span class="comment">  /// in the directive name and the location of the directive keyword.</span>
+<a name="l00139"></a>00139 <span class="comment"></span>  <a class="code" href="classllvm_1_1StringMap.html">StringMap</a><std::pair<<a class="code" href="classllvm_1_1MCAsmParserExtension.html" title="Generic interface for extending the MCAsmParser, which is implemented by target and object file assem...">MCAsmParserExtension</a>*, DirectiveHandler> > DirectiveMap;
+<a name="l00140"></a>00140 <span class="comment"></span>
+<a name="l00141"></a>00141 <span class="comment">  /// MacroMap - Map of currently defined macros.</span>
+<a name="l00142"></a>00142 <span class="comment"></span>  <a class="code" href="classllvm_1_1StringMap.html">StringMap</a><Macro*> MacroMap;
+<a name="l00143"></a>00143 <span class="comment"></span>
+<a name="l00144"></a>00144 <span class="comment">  /// ActiveMacros - Stack of active macro instantiations.</span>
+<a name="l00145"></a>00145 <span class="comment"></span>  std::<a class="code" href="classstd_1_1vector.html">vector</a><MacroInstantiation*> ActiveMacros;
+<a name="l00146"></a>00146 <span class="comment"></span>
+<a name="l00147"></a>00147 <span class="comment">  /// Boolean tracking whether macro substitution is enabled.</span>
+<a name="l00148"></a>00148 <span class="comment"></span>  <span class="keywordtype">unsigned</span> MacrosEnabled : 1;
+<a name="l00149"></a>00149 <span class="comment"></span>
+<a name="l00150"></a>00150 <span class="comment">  /// Flag tracking whether any errors have been encountered.</span>
+<a name="l00151"></a>00151 <span class="comment"></span>  <span class="keywordtype">unsigned</span> HadError : 1;
+<a name="l00152"></a>00152 <span class="comment"></span>
+<a name="l00153"></a>00153 <span class="comment">  /// The values from the last parsed cpp hash file line comment if any.</span>
+<a name="l00154"></a>00154 <span class="comment"></span>  <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> CppHashFilename;
+<a name="l00155"></a>00155   <a class="code" href="classint64__t.html">int64_t</a> CppHashLineNumber;
+<a name="l00156"></a>00156   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> CppHashLoc;
+<a name="l00157"></a>00157   <span class="keywordtype">int</span> CppHashBuf;
+<a name="l00158"></a>00158 <span class="comment"></span>
+<a name="l00159"></a>00159 <span class="comment">  /// AssemblerDialect. ~OU means unset value and use value provided by MAI.</span>
+<a name="l00160"></a>00160 <span class="comment"></span>  <span class="keywordtype">unsigned</span> AssemblerDialect;
+<a name="l00161"></a>00161 <span class="comment"></span>
+<a name="l00162"></a>00162 <span class="comment">  /// IsDarwin - is Darwin compatibility enabled?</span>
+<a name="l00163"></a>00163 <span class="comment"></span>  <span class="keywordtype">bool</span> IsDarwin;
+<a name="l00164"></a>00164 <span class="comment"></span>
+<a name="l00165"></a>00165 <span class="comment">  /// ParsingInlineAsm - Are we parsing ms-style inline assembly?</span>
+<a name="l00166"></a>00166 <span class="comment"></span>  <span class="keywordtype">bool</span> ParsingInlineAsm;
+<a name="l00167"></a>00167 
+<a name="l00168"></a>00168 public:
+<a name="l00169"></a>00169   AsmParser(<a class="code" href="classllvm_1_1SourceMgr.html">SourceMgr</a> &SM, <a class="code" href="classllvm_1_1MCContext.html">MCContext</a> &Ctx, <a class="code" href="classllvm_1_1MCStreamer.html">MCStreamer</a> &Out,
+<a name="l00170"></a>00170             const <a class="code" href="classllvm_1_1MCAsmInfo.html">MCAsmInfo</a> &MAI);
+<a name="l00171"></a>00171   virtual ~AsmParser();
+<a name="l00172"></a>00172 
+<a name="l00173"></a>00173   virtual <span class="keywordtype">bool</span> Run(<span class="keywordtype">bool</span> NoInitialTextSection, <span class="keywordtype">bool</span> NoFinalize = <a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>);
+<a name="l00174"></a>00174 
+<a name="l00175"></a>00175   virtual <span class="keywordtype">void</span> AddDirectiveHandler(MCAsmParserExtension *Object,
+<a name="l00176"></a>00176                                    <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Directive,
+<a name="l00177"></a>00177                                    DirectiveHandler Handler) {
+<a name="l00178"></a>00178     DirectiveMap[Directive] = std::make_pair(Object, Handler);
+<a name="l00179"></a>00179   }
+<a name="l00180"></a>00180 
+<a name="l00181"></a>00181 <span class="keyword">public</span>:<span class="comment"></span>
+<a name="l00182"></a>00182 <span class="comment">  /// @name MCAsmParser Interface</span>
+<a name="l00183"></a>00183 <span class="comment">  /// {</span>
+<a name="l00184"></a>00184 <span class="comment"></span>
+<a name="l00185"></a>00185   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1SourceMgr.html">SourceMgr</a> &getSourceManager() { <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>; }
+<a name="l00186"></a>00186   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1MCAsmLexer.html">MCAsmLexer</a> &getLexer() { <span class="keywordflow">return</span> Lexer; }
+<a name="l00187"></a>00187   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1MCContext.html">MCContext</a> &getContext() { <span class="keywordflow">return</span> Ctx; }
+<a name="l00188"></a>00188   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1MCStreamer.html">MCStreamer</a> &getStreamer() { <span class="keywordflow">return</span> Out; }
+<a name="l00189"></a>00189   <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> getAssemblerDialect() { 
+<a name="l00190"></a>00190     <span class="keywordflow">if</span> (AssemblerDialect == ~0U)
+<a name="l00191"></a>00191       <span class="keywordflow">return</span> MAI.getAssemblerDialect(); 
+<a name="l00192"></a>00192     <span class="keywordflow">else</span>
+<a name="l00193"></a>00193       <span class="keywordflow">return</span> AssemblerDialect;
+<a name="l00194"></a>00194   }
+<a name="l00195"></a>00195   <span class="keyword">virtual</span> <span class="keywordtype">void</span> setAssemblerDialect(<span class="keywordtype">unsigned</span> i) {
+<a name="l00196"></a>00196     AssemblerDialect = i;
+<a name="l00197"></a>00197   }
+<a name="l00198"></a>00198 
+<a name="l00199"></a>00199   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Warning(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> L, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Twine.html">Twine</a> &Msg,
+<a name="l00200"></a>00200                        <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<SMRange></a> <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a> = <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<SMRange></a>());
+<a name="l00201"></a>00201   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> L, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Twine.html">Twine</a> &Msg,
+<a name="l00202"></a>00202                      <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<SMRange></a> <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a> = <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<SMRange></a>());
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classllvm_1_1AsmToken.html" title="AsmToken - Target independent representation for an assembler token.">AsmToken</a> &Lex();
+<a name="l00205"></a>00205 
+<a name="l00206"></a>00206   <span class="keywordtype">void</span> setParsingInlineAsm(<span class="keywordtype">bool</span> V) { ParsingInlineAsm = V; }
+<a name="l00207"></a>00207   <span class="keywordtype">bool</span> isParsingInlineAsm() { <span class="keywordflow">return</span> ParsingInlineAsm; }
+<a name="l00208"></a>00208 
+<a name="l00209"></a>00209   <span class="keywordtype">bool</span> ParseMSInlineAsm(<span class="keywordtype">void</span> *AsmLoc, std::string &AsmString,
+<a name="l00210"></a>00210                         <span class="keywordtype">unsigned</span> &NumOutputs, <span class="keywordtype">unsigned</span> &NumInputs,
+<a name="l00211"></a>00211                         <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a><std::pair<void *,bool> > &OpDecls,
+<a name="l00212"></a>00212                         <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<std::string></a> &Constraints,
+<a name="l00213"></a>00213                         <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<std::string></a> &Clobbers,
+<a name="l00214"></a>00214                         <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstrInfo.html">MCInstrInfo</a> *MII,
+<a name="l00215"></a>00215                         <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstPrinter.html">MCInstPrinter</a> *IP,
+<a name="l00216"></a>00216                         <a class="code" href="classllvm_1_1MCAsmParserSemaCallback.html" title="MCAsmParserSemaCallback - Generic Sema callback for assembly parser.">MCAsmParserSemaCallback</a> &SI);
+<a name="l00217"></a>00217 
+<a name="l00218"></a>00218   <span class="keywordtype">bool</span> ParseExpression(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res);
+<a name="l00219"></a>00219   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ParseExpression(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc);
+<a name="l00220"></a>00220   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ParseParenExpression(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc);
+<a name="l00221"></a>00221   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ParseAbsoluteExpression(<a class="code" href="classint64__t.html">int64_t</a> &Res);
+<a name="l00222"></a>00222 <span class="comment"></span>
+<a name="l00223"></a>00223 <span class="comment">  /// }</span>
+<a name="l00224"></a>00224 <span class="comment"></span>
+<a name="l00225"></a>00225 <span class="keyword">private</span>:
+<a name="l00226"></a>00226   <span class="keywordtype">void</span> CheckForValidSection();
+<a name="l00227"></a>00227 
+<a name="l00228"></a>00228   <span class="keywordtype">bool</span> ParseStatement(ParseStatementInfo &Info);
+<a name="l00229"></a>00229   <span class="keywordtype">void</span> EatToEndOfLine();
+<a name="l00230"></a>00230   <span class="keywordtype">bool</span> ParseCppHashLineFilenameComment(<span class="keyword">const</span> <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &L);
+<a name="l00231"></a>00231 
+<a name="l00232"></a>00232   <span class="keywordtype">bool</span> HandleMacroEntry(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> NameLoc, <span class="keyword">const</span> Macro *M);
+<a name="l00233"></a>00233   <span class="keywordtype">bool</span> expandMacro(<a class="code" href="classllvm_1_1raw__svector__ostream.html">raw_svector_ostream</a> &OS, <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Body,
+<a name="l00234"></a>00234                    <span class="keyword">const</span> MacroParameters &Parameters,
+<a name="l00235"></a>00235                    <span class="keyword">const</span> MacroArguments &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>,
+<a name="l00236"></a>00236                    <span class="keyword">const</span> <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &L);
+<a name="l00237"></a>00237   <span class="keywordtype">void</span> HandleMacroExit();
+<a name="l00238"></a>00238 
+<a name="l00239"></a>00239   <span class="keywordtype">void</span> PrintMacroInstantiations();
+<a name="l00240"></a>00240   <span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#a6fbb0f04208840cc02fdcfec56e338d9">PrintMessage</a>(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> Loc, <a class="code" href="classllvm_1_1SourceMgr.html#a346262ff27e71aff626fe6548ef8a777">SourceMgr::DiagKind</a> <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a>, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Twine.html">Twine</a> &Msg,
+<a name="l00241"></a>00241                     <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<SMRange></a> <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a> = <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<SMRange></a>())<span class="keyword"> const </span>{
+<a name="l00242"></a>00242     <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#af334525f10e89604aafb008f87815264">PrintMessage</a>(Loc, Kind, Msg, <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a>);
+<a name="l00243"></a>00243   }
+<a name="l00244"></a>00244   <span class="keyword">static</span> <span class="keywordtype">void</span> DiagHandler(<span class="keyword">const</span> <a class="code" href="classllvm_1_1SMDiagnostic.html">SMDiagnostic</a> &Diag, <span class="keywordtype">void</span> *Context);
+<a name="l00245"></a>00245 <span class="comment"></span>
+<a name="l00246"></a>00246 <span class="comment">  /// EnterIncludeFile - Enter the specified file. This returns true on failure.</span>
+<a name="l00247"></a>00247 <span class="comment"></span>  <span class="keywordtype">bool</span> EnterIncludeFile(<span class="keyword">const</span> std::string &Filename);<span class="comment"></span>
+<a name="l00248"></a>00248 <span class="comment">  /// ProcessIncbinFile - Process the specified file for the .incbin directive.</span>
+<a name="l00249"></a>00249 <span class="comment">  /// This returns true on failure.</span>
+<a name="l00250"></a>00250 <span class="comment"></span>  <span class="keywordtype">bool</span> ProcessIncbinFile(<span class="keyword">const</span> std::string &Filename);
+<a name="l00251"></a>00251 <span class="comment"></span>
+<a name="l00252"></a>00252 <span class="comment">  /// \brief Reset the current lexer position to that given by \p Loc. The</span>
+<a name="l00253"></a>00253 <span class="comment">  /// current token is not set; clients should ensure Lex() is called</span>
+<a name="l00254"></a>00254 <span class="comment">  /// subsequently.</span>
+<a name="l00255"></a>00255 <span class="comment"></span>  <span class="keywordtype">void</span> JumpToLoc(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> Loc);
+<a name="l00256"></a>00256 
+<a name="l00257"></a>00257   <span class="keyword">virtual</span> <span class="keywordtype">void</span> EatToEndOfStatement();
+<a name="l00258"></a>00258 
+<a name="l00259"></a>00259   <span class="keywordtype">bool</span> ParseMacroArgument(MacroArgument &MA,
+<a name="l00260"></a>00260                           <a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039">AsmToken::TokenKind</a> &ArgumentDelimiter);
+<a name="l00261"></a>00261   <span class="keywordtype">bool</span> ParseMacroArguments(<span class="keyword">const</span> Macro *M, MacroArguments &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>);
+<a name="l00262"></a>00262 <span class="comment"></span>
+<a name="l00263"></a>00263 <span class="comment">  /// \brief Parse up to the end of statement and a return the contents from the</span>
+<a name="l00264"></a>00264 <span class="comment">  /// current token until the end of the statement; the current token on exit</span>
+<a name="l00265"></a>00265 <span class="comment">  /// will be either the EndOfStatement or EOF.</span>
+<a name="l00266"></a>00266 <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> ParseStringToEndOfStatement();
+<a name="l00267"></a>00267 <span class="comment"></span>
+<a name="l00268"></a>00268 <span class="comment">  /// \brief Parse until the end of a statement or a comma is encountered,</span>
+<a name="l00269"></a>00269 <span class="comment">  /// return the contents from the current token up to the end or comma.</span>
+<a name="l00270"></a>00270 <span class="comment"></span>  <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> ParseStringToComma();
+<a name="l00271"></a>00271 
+<a name="l00272"></a>00272   <span class="keywordtype">bool</span> ParseAssignment(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>, <span class="keywordtype">bool</span> allow_redef,
+<a name="l00273"></a>00273                        <span class="keywordtype">bool</span> NoDeadStrip = <span class="keyword">false</span>);
+<a name="l00274"></a>00274 
+<a name="l00275"></a>00275   <span class="keywordtype">bool</span> ParsePrimaryExpr(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc);
+<a name="l00276"></a>00276   <span class="keywordtype">bool</span> ParseBinOpRHS(<span class="keywordtype">unsigned</span> Precedence, <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc);
+<a name="l00277"></a>00277   <span class="keywordtype">bool</span> ParseParenExpr(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc);
+<a name="l00278"></a>00278   <span class="keywordtype">bool</span> ParseBracketExpr(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc);
+<a name="l00279"></a>00279 <span class="comment"></span>
+<a name="l00280"></a>00280 <span class="comment">  /// ParseIdentifier - Parse an identifier or string (as a quoted identifier)</span>
+<a name="l00281"></a>00281 <span class="comment">  /// and set \p Res to the identifier contents.</span>
+<a name="l00282"></a>00282 <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ParseIdentifier(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> &Res);
+<a name="l00283"></a>00283 
+<a name="l00284"></a>00284   <span class="comment">// Directive Parsing.</span>
+<a name="l00285"></a>00285 
+<a name="l00286"></a>00286  <span class="comment">// ".ascii", ".asciiz", ".string"</span>
+<a name="l00287"></a>00287   <span class="keywordtype">bool</span> ParseDirectiveAscii(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal, <span class="keywordtype">bool</span> ZeroTerminated);
+<a name="l00288"></a>00288   <span class="keywordtype">bool</span> ParseDirectiveValue(<span class="keywordtype">unsigned</span> Size); <span class="comment">// ".byte", ".long", ...</span>
+<a name="l00289"></a>00289   <span class="keywordtype">bool</span> ParseDirectiveRealValue(<span class="keyword">const</span> <a class="code" href="structllvm_1_1fltSemantics.html">fltSemantics</a> &); <span class="comment">// ".single", ...</span>
+<a name="l00290"></a>00290   <span class="keywordtype">bool</span> ParseDirectiveFill(); <span class="comment">// ".fill"</span>
+<a name="l00291"></a>00291   <span class="keywordtype">bool</span> ParseDirectiveSpace(); <span class="comment">// ".space"</span>
+<a name="l00292"></a>00292   <span class="keywordtype">bool</span> ParseDirectiveZero(); <span class="comment">// ".zero"</span>
+<a name="l00293"></a>00293   <span class="keywordtype">bool</span> ParseDirectiveSet(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal, <span class="keywordtype">bool</span> allow_redef); <span class="comment">// ".set", ".equ", ".equiv"</span>
+<a name="l00294"></a>00294   <span class="keywordtype">bool</span> ParseDirectiveOrg(); <span class="comment">// ".org"</span>
+<a name="l00295"></a>00295   <span class="comment">// ".align{,32}", ".p2align{,w,l}"</span>
+<a name="l00296"></a>00296   <span class="keywordtype">bool</span> ParseDirectiveAlign(<span class="keywordtype">bool</span> IsPow2, <span class="keywordtype">unsigned</span> ValueSize);
+<a name="l00297"></a>00297 <span class="comment"></span>
+<a name="l00298"></a>00298 <span class="comment">  /// ParseDirectiveSymbolAttribute - Parse a directive like ".globl" which</span>
+<a name="l00299"></a>00299 <span class="comment">  /// accepts a single symbol (which should be a label or an external).</span>
+<a name="l00300"></a>00300 <span class="comment"></span>  <span class="keywordtype">bool</span> ParseDirectiveSymbolAttribute(<a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243">MCSymbolAttr</a> Attr);
+<a name="l00301"></a>00301 
+<a name="l00302"></a>00302   <span class="keywordtype">bool</span> ParseDirectiveComm(<span class="keywordtype">bool</span> IsLocal); <span class="comment">// ".comm" and ".lcomm"</span>
+<a name="l00303"></a>00303 
+<a name="l00304"></a>00304   <span class="keywordtype">bool</span> ParseDirectiveAbort(); <span class="comment">// ".abort"</span>
+<a name="l00305"></a>00305   <span class="keywordtype">bool</span> ParseDirectiveInclude(); <span class="comment">// ".include"</span>
+<a name="l00306"></a>00306   <span class="keywordtype">bool</span> ParseDirectiveIncbin(); <span class="comment">// ".incbin"</span>
+<a name="l00307"></a>00307 
+<a name="l00308"></a>00308   <span class="keywordtype">bool</span> ParseDirectiveIf(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc); <span class="comment">// ".if"</span>
+<a name="l00309"></a>00309   <span class="comment">// ".ifb" or ".ifnb", depending on ExpectBlank.</span>
+<a name="l00310"></a>00310   <span class="keywordtype">bool</span> ParseDirectiveIfb(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc, <span class="keywordtype">bool</span> ExpectBlank);
+<a name="l00311"></a>00311   <span class="comment">// ".ifc" or ".ifnc", depending on ExpectEqual.</span>
+<a name="l00312"></a>00312   <span class="keywordtype">bool</span> ParseDirectiveIfc(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc, <span class="keywordtype">bool</span> ExpectEqual);
+<a name="l00313"></a>00313   <span class="comment">// ".ifdef" or ".ifndef", depending on expect_defined</span>
+<a name="l00314"></a>00314   <span class="keywordtype">bool</span> ParseDirectiveIfdef(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc, <span class="keywordtype">bool</span> expect_defined);
+<a name="l00315"></a>00315   <span class="keywordtype">bool</span> ParseDirectiveElseIf(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc); <span class="comment">// ".elseif"</span>
+<a name="l00316"></a>00316   <span class="keywordtype">bool</span> ParseDirectiveElse(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc); <span class="comment">// ".else"</span>
+<a name="l00317"></a>00317   <span class="keywordtype">bool</span> ParseDirectiveEndIf(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc); <span class="comment">// .endif</span>
+<a name="l00318"></a>00318 <span class="comment"></span>
+<a name="l00319"></a>00319 <span class="comment">  /// ParseEscapedString - Parse the current token as a string which may include</span>
+<a name="l00320"></a>00320 <span class="comment">  /// escaped characters and return the string contents.</span>
+<a name="l00321"></a>00321 <span class="comment"></span>  <span class="keywordtype">bool</span> ParseEscapedString(std::string &<a class="code" href="namespacellvm_1_1object_1_1macho.html#a56678f646a4a478d777eb8821f710db0a557a58f6e018464dcf0635728ef14dd1">Data</a>);
+<a name="l00322"></a>00322 
+<a name="l00323"></a>00323   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *ApplyModifierToExpr(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *E,
+<a name="l00324"></a>00324                                     <a class="code" href="classllvm_1_1MCSymbolRefExpr.html#ace20c3d7279515e995910d3dcef655a3">MCSymbolRefExpr::VariantKind</a> Variant);
+<a name="l00325"></a>00325 
+<a name="l00326"></a>00326   <span class="comment">// Macro-like directives</span>
+<a name="l00327"></a>00327   Macro *ParseMacroLikeBody(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00328"></a>00328   <span class="keywordtype">void</span> InstantiateMacroLikeBody(Macro *M, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc,
+<a name="l00329"></a>00329                                 <a class="code" href="classllvm_1_1raw__svector__ostream.html">raw_svector_ostream</a> &OS);
+<a name="l00330"></a>00330   <span class="keywordtype">bool</span> ParseDirectiveRept(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc); <span class="comment">// ".rept"</span>
+<a name="l00331"></a>00331   <span class="keywordtype">bool</span> ParseDirectiveIrp(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);  <span class="comment">// ".irp"</span>
+<a name="l00332"></a>00332   <span class="keywordtype">bool</span> ParseDirectiveIrpc(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc); <span class="comment">// ".irpc"</span>
+<a name="l00333"></a>00333   <span class="keywordtype">bool</span> ParseDirectiveEndr(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc); <span class="comment">// ".endr"</span>
+<a name="l00334"></a>00334 
+<a name="l00335"></a>00335   <span class="comment">// "_emit"</span>
+<a name="l00336"></a>00336   <span class="keywordtype">bool</span> ParseDirectiveEmit(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc, ParseStatementInfo &Info);
+<a name="l00337"></a>00337 };
+<a name="l00338"></a>00338 <span class="comment"></span>
+<a name="l00339"></a>00339 <span class="comment">/// \brief Generic implementations of directive handling, etc. which is shared</span>
+<a name="l00340"></a>00340 <span class="comment">/// (or the default, at least) for all assembler parser.</span>
+<a name="l00341"></a>00341 <span class="comment"></span><span class="keyword">class </span>GenericAsmParser : <span class="keyword">public</span> <a class="code" href="classllvm_1_1MCAsmParserExtension.html" title="Generic interface for extending the MCAsmParser, which is implemented by target and object file assem...">MCAsmParserExtension</a> {
+<a name="l00342"></a>00342   <span class="keyword">template</span><<span class="keywordtype">bool</span> (GenericAsmParser::*Handler)(StringRef, SMLoc)>
+<a name="l00343"></a>00343   <span class="keywordtype">void</span> AddDirectiveHandler(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Directive) {
+<a name="l00344"></a>00344     getParser().AddDirectiveHandler(<span class="keyword">this</span>, Directive,
+<a name="l00345"></a>00345                                     HandleDirective<GenericAsmParser, Handler>);
+<a name="l00346"></a>00346   }
+<a name="l00347"></a>00347 <span class="keyword">public</span>:
+<a name="l00348"></a>00348   GenericAsmParser() {}
+<a name="l00349"></a>00349 
+<a name="l00350"></a>00350   AsmParser &getParser() {
+<a name="l00351"></a>00351     <span class="keywordflow">return</span> (AsmParser&) this-><a class="code" href="classllvm_1_1MCAsmParserExtension.html#af0aaae3efa0c6f2d10341c2c39273510">MCAsmParserExtension::getParser</a>();
+<a name="l00352"></a>00352   }
+<a name="l00353"></a>00353 
+<a name="l00354"></a>00354   <span class="keyword">virtual</span> <span class="keywordtype">void</span> Initialize(<a class="code" href="classllvm_1_1MCAsmParser.html">MCAsmParser</a> &Parser) {
+<a name="l00355"></a>00355     <span class="comment">// Call the base implementation.</span>
+<a name="l00356"></a>00356     this-><a class="code" href="classllvm_1_1MCAsmParserExtension.html#a77a335167c72ea8bc771501825f81696" title="Initialize the extension for parsing using the given Parser. The extension should use the AsmParser i...">MCAsmParserExtension::Initialize</a>(Parser);
+<a name="l00357"></a>00357 
+<a name="l00358"></a>00358     <span class="comment">// Debugging directives.</span>
+<a name="l00359"></a>00359     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveFile>(<span class="stringliteral">".file"</span>);
+<a name="l00360"></a>00360     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveLine>(<span class="stringliteral">".line"</span>);
+<a name="l00361"></a>00361     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveLoc>(<span class="stringliteral">".loc"</span>);
+<a name="l00362"></a>00362     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveStabs>(<span class="stringliteral">".stabs"</span>);
+<a name="l00363"></a>00363 
+<a name="l00364"></a>00364     <span class="comment">// CFI directives.</span>
+<a name="l00365"></a>00365     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveCFISections>(
+<a name="l00366"></a>00366                                                                <span class="stringliteral">".cfi_sections"</span>);
+<a name="l00367"></a>00367     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveCFIStartProc>(
+<a name="l00368"></a>00368                                                               <span class="stringliteral">".cfi_startproc"</span>);
+<a name="l00369"></a>00369     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveCFIEndProc>(
+<a name="l00370"></a>00370                                                                 <span class="stringliteral">".cfi_endproc"</span>);
+<a name="l00371"></a>00371     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveCFIDefCfa>(
+<a name="l00372"></a>00372                                                          <span class="stringliteral">".cfi_def_cfa"</span>);
+<a name="l00373"></a>00373     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveCFIDefCfaOffset>(
+<a name="l00374"></a>00374                                                          <span class="stringliteral">".cfi_def_cfa_offset"</span>);
+<a name="l00375"></a>00375     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveCFIAdjustCfaOffset>(
+<a name="l00376"></a>00376                                                       <span class="stringliteral">".cfi_adjust_cfa_offset"</span>);
+<a name="l00377"></a>00377     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveCFIDefCfaRegister>(
+<a name="l00378"></a>00378                                                        <span class="stringliteral">".cfi_def_cfa_register"</span>);
+<a name="l00379"></a>00379     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveCFIOffset>(
+<a name="l00380"></a>00380                                                                  <span class="stringliteral">".cfi_offset"</span>);
+<a name="l00381"></a>00381     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveCFIRelOffset>(
+<a name="l00382"></a>00382                                                              <span class="stringliteral">".cfi_rel_offset"</span>);
+<a name="l00383"></a>00383     AddDirectiveHandler<
+<a name="l00384"></a>00384      &GenericAsmParser::ParseDirectiveCFIPersonalityOrLsda>(<span class="stringliteral">".cfi_personality"</span>);
+<a name="l00385"></a>00385     AddDirectiveHandler<
+<a name="l00386"></a>00386             &GenericAsmParser::ParseDirectiveCFIPersonalityOrLsda>(<span class="stringliteral">".cfi_lsda"</span>);
+<a name="l00387"></a>00387     AddDirectiveHandler<
+<a name="l00388"></a>00388       &GenericAsmParser::ParseDirectiveCFIRememberState>(<span class="stringliteral">".cfi_remember_state"</span>);
+<a name="l00389"></a>00389     AddDirectiveHandler<
+<a name="l00390"></a>00390       &GenericAsmParser::ParseDirectiveCFIRestoreState>(<span class="stringliteral">".cfi_restore_state"</span>);
+<a name="l00391"></a>00391     AddDirectiveHandler<
+<a name="l00392"></a>00392       &GenericAsmParser::ParseDirectiveCFISameValue>(<span class="stringliteral">".cfi_same_value"</span>);
+<a name="l00393"></a>00393     AddDirectiveHandler<
+<a name="l00394"></a>00394       &GenericAsmParser::ParseDirectiveCFIRestore>(<span class="stringliteral">".cfi_restore"</span>);
+<a name="l00395"></a>00395     AddDirectiveHandler<
+<a name="l00396"></a>00396       &GenericAsmParser::ParseDirectiveCFIEscape>(<span class="stringliteral">".cfi_escape"</span>);
+<a name="l00397"></a>00397     AddDirectiveHandler<
+<a name="l00398"></a>00398       &GenericAsmParser::ParseDirectiveCFISignalFrame>(<span class="stringliteral">".cfi_signal_frame"</span>);
+<a name="l00399"></a>00399 
+<a name="l00400"></a>00400     <span class="comment">// Macro directives.</span>
+<a name="l00401"></a>00401     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveMacrosOnOff>(
+<a name="l00402"></a>00402       <span class="stringliteral">".macros_on"</span>);
+<a name="l00403"></a>00403     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveMacrosOnOff>(
+<a name="l00404"></a>00404       <span class="stringliteral">".macros_off"</span>);
+<a name="l00405"></a>00405     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveMacro>(<span class="stringliteral">".macro"</span>);
+<a name="l00406"></a>00406     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveEndMacro>(<span class="stringliteral">".endm"</span>);
+<a name="l00407"></a>00407     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveEndMacro>(<span class="stringliteral">".endmacro"</span>);
+<a name="l00408"></a>00408     AddDirectiveHandler<&GenericAsmParser::ParseDirectivePurgeMacro>(<span class="stringliteral">".purgem"</span>);
+<a name="l00409"></a>00409 
+<a name="l00410"></a>00410     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveLEB128>(<span class="stringliteral">".sleb128"</span>);
+<a name="l00411"></a>00411     AddDirectiveHandler<&GenericAsmParser::ParseDirectiveLEB128>(<span class="stringliteral">".uleb128"</span>);
+<a name="l00412"></a>00412   }
+<a name="l00413"></a>00413 
+<a name="l00414"></a>00414   <span class="keywordtype">bool</span> ParseRegisterOrRegisterNumber(<a class="code" href="classint64__t.html">int64_t</a> &<a class="code" href="Mem2Reg_8cpp.html#a6fde3eb6ca09ddf2fd76432176d817bb">Register</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00415"></a>00415 
+<a name="l00416"></a>00416   <span class="keywordtype">bool</span> ParseDirectiveFile(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00417"></a>00417   <span class="keywordtype">bool</span> ParseDirectiveLine(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00418"></a>00418   <span class="keywordtype">bool</span> ParseDirectiveLoc(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00419"></a>00419   <span class="keywordtype">bool</span> ParseDirectiveStabs(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00420"></a>00420   <span class="keywordtype">bool</span> ParseDirectiveCFISections(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00421"></a>00421   <span class="keywordtype">bool</span> ParseDirectiveCFIStartProc(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00422"></a>00422   <span class="keywordtype">bool</span> ParseDirectiveCFIEndProc(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00423"></a>00423   <span class="keywordtype">bool</span> ParseDirectiveCFIDefCfa(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00424"></a>00424   <span class="keywordtype">bool</span> ParseDirectiveCFIDefCfaOffset(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00425"></a>00425   <span class="keywordtype">bool</span> ParseDirectiveCFIAdjustCfaOffset(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00426"></a>00426   <span class="keywordtype">bool</span> ParseDirectiveCFIDefCfaRegister(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00427"></a>00427   <span class="keywordtype">bool</span> ParseDirectiveCFIOffset(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00428"></a>00428   <span class="keywordtype">bool</span> ParseDirectiveCFIRelOffset(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00429"></a>00429   <span class="keywordtype">bool</span> ParseDirectiveCFIPersonalityOrLsda(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00430"></a>00430   <span class="keywordtype">bool</span> ParseDirectiveCFIRememberState(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00431"></a>00431   <span class="keywordtype">bool</span> ParseDirectiveCFIRestoreState(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00432"></a>00432   <span class="keywordtype">bool</span> ParseDirectiveCFISameValue(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00433"></a>00433   <span class="keywordtype">bool</span> ParseDirectiveCFIRestore(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00434"></a>00434   <span class="keywordtype">bool</span> ParseDirectiveCFIEscape(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00435"></a>00435   <span class="keywordtype">bool</span> ParseDirectiveCFISignalFrame(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00436"></a>00436 
+<a name="l00437"></a>00437   <span class="keywordtype">bool</span> ParseDirectiveMacrosOnOff(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00438"></a>00438   <span class="keywordtype">bool</span> ParseDirectiveMacro(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00439"></a>00439   <span class="keywordtype">bool</span> ParseDirectiveEndMacro(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00440"></a>00440   <span class="keywordtype">bool</span> ParseDirectivePurgeMacro(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc);
+<a name="l00441"></a>00441 
+<a name="l00442"></a>00442   <span class="keywordtype">bool</span> ParseDirectiveLEB128(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a>);
+<a name="l00443"></a>00443 };
+<a name="l00444"></a>00444 
+<a name="l00445"></a>00445 }
+<a name="l00446"></a>00446 
+<a name="l00447"></a>00447 <span class="keyword">namespace </span>llvm {
+<a name="l00448"></a>00448 
+<a name="l00449"></a>00449 <span class="keyword">extern</span> <a class="code" href="classllvm_1_1MCAsmParserExtension.html" title="Generic interface for extending the MCAsmParser, which is implemented by target and object file assem...">MCAsmParserExtension</a> *<a class="code" href="namespacellvm.html#aebd300de5635d0e2e03e36c9afcc17c0">createDarwinAsmParser</a>();
+<a name="l00450"></a>00450 <span class="keyword">extern</span> <a class="code" href="classllvm_1_1MCAsmParserExtension.html" title="Generic interface for extending the MCAsmParser, which is implemented by target and object file assem...">MCAsmParserExtension</a> *<a class="code" href="namespacellvm.html#ae25990df71b5f48bada9221314f97cbf">createELFAsmParser</a>();
+<a name="l00451"></a>00451 <span class="keyword">extern</span> <a class="code" href="classllvm_1_1MCAsmParserExtension.html" title="Generic interface for extending the MCAsmParser, which is implemented by target and object file assem...">MCAsmParserExtension</a> *<a class="code" href="namespacellvm.html#a106a46fb5e438e5a7e267d9267ecc46c">createCOFFAsmParser</a>();
+<a name="l00452"></a>00452 
+<a name="l00453"></a>00453 }
+<a name="l00454"></a>00454 
+<a name="l00455"></a><a class="code" href="AsmParser_8cpp.html#af77d65ab56b38a820b1efc0bcafbd4fba4fb9b7e46bf210aa9b5b59ac1c5fe8ff">00455</a> <span class="keyword">enum</span> { <a class="code" href="AsmParser_8cpp.html#af77d65ab56b38a820b1efc0bcafbd4fba4fb9b7e46bf210aa9b5b59ac1c5fe8ff">DEFAULT_ADDRSPACE</a> = 0 };
+<a name="l00456"></a>00456 
+<a name="l00457"></a>00457 AsmParser::AsmParser(<a class="code" href="classllvm_1_1SourceMgr.html">SourceMgr</a> &_SM, <a class="code" href="classllvm_1_1MCContext.html">MCContext</a> &_Ctx,
+<a name="l00458"></a>00458                      <a class="code" href="classllvm_1_1MCStreamer.html">MCStreamer</a> &_Out, <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCAsmInfo.html">MCAsmInfo</a> &_MAI)
+<a name="l00459"></a>00459   : Lexer(_MAI), Ctx(_Ctx), Out(_Out), MAI(_MAI), <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>(_SM),
+<a name="l00460"></a>00460     GenericParser(new GenericAsmParser), PlatformParser(0),
+<a name="l00461"></a>00461     CurBuffer(0), MacrosEnabled(<a class="code" href="BasicAliasAnalysis_8cpp.html#a80603f23207dd836075c078e6264204a">true</a>), CppHashLineNumber(0),
+<a name="l00462"></a>00462     AssemblerDialect(~0U), IsDarwin(<a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>), ParsingInlineAsm(<a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>) {
+<a name="l00463"></a>00463   <span class="comment">// Save the old handler.</span>
+<a name="l00464"></a>00464   SavedDiagHandler = <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#a6aafe424efa018b545d8ba70578422cc">getDiagHandler</a>();
+<a name="l00465"></a>00465   SavedDiagContext = <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#a1cb9f82b3ab6f1cc80107283b81e6417">getDiagContext</a>();
+<a name="l00466"></a>00466   <span class="comment">// Set our own handler which calls the saved handler.</span>
+<a name="l00467"></a>00467   <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#ab51c12f6fb0a4034cf6437208b072759">setDiagHandler</a>(DiagHandler, <span class="keyword">this</span>);
+<a name="l00468"></a>00468   Lexer.setBuffer(<a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#afea655fbbcf8d46deafb61f56eed99bd">getMemoryBuffer</a>(CurBuffer));
+<a name="l00469"></a>00469 
+<a name="l00470"></a>00470   <span class="comment">// Initialize the generic parser.</span>
+<a name="l00471"></a>00471   GenericParser->Initialize(*<span class="keyword">this</span>);
+<a name="l00472"></a>00472 
+<a name="l00473"></a>00473   <span class="comment">// Initialize the platform / file format parser.</span>
+<a name="l00474"></a>00474   <span class="comment">//</span>
+<a name="l00475"></a>00475   <span class="comment">// FIXME: This is a hack, we need to (majorly) cleanup how these objects are</span>
+<a name="l00476"></a>00476   <span class="comment">// created.</span>
+<a name="l00477"></a>00477   <span class="keywordflow">if</span> (_MAI.<a class="code" href="classllvm_1_1MCAsmInfo.html#ab9e805ee5e373184f349ff8bb65de0a7">hasMicrosoftFastStdCallMangling</a>()) {
+<a name="l00478"></a>00478     PlatformParser = <a class="code" href="namespacellvm.html#a106a46fb5e438e5a7e267d9267ecc46c">createCOFFAsmParser</a>();
+<a name="l00479"></a>00479     PlatformParser->Initialize(*<span class="keyword">this</span>);
+<a name="l00480"></a>00480   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (_MAI.<a class="code" href="classllvm_1_1MCAsmInfo.html#ad1a598ad796efa5ee218c785b4361490">hasSubsectionsViaSymbols</a>()) {
+<a name="l00481"></a>00481     PlatformParser = <a class="code" href="namespacellvm.html#aebd300de5635d0e2e03e36c9afcc17c0">createDarwinAsmParser</a>();
+<a name="l00482"></a>00482     PlatformParser->Initialize(*<span class="keyword">this</span>);
+<a name="l00483"></a>00483     IsDarwin = <span class="keyword">true</span>;
+<a name="l00484"></a>00484   } <span class="keywordflow">else</span> {
+<a name="l00485"></a>00485     PlatformParser = <a class="code" href="namespacellvm.html#ae25990df71b5f48bada9221314f97cbf">createELFAsmParser</a>();
+<a name="l00486"></a>00486     PlatformParser->Initialize(*<span class="keyword">this</span>);
+<a name="l00487"></a>00487   }
+<a name="l00488"></a>00488 }
+<a name="l00489"></a>00489 
+<a name="l00490"></a>00490 AsmParser::~AsmParser() {
+<a name="l00491"></a>00491   assert(ActiveMacros.empty() && <span class="stringliteral">"Unexpected active macro instantiation!"</span>);
+<a name="l00492"></a>00492 
+<a name="l00493"></a>00493   <span class="comment">// Destroy any macros.</span>
+<a name="l00494"></a>00494   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1StringMapIterator.html">StringMap<Macro*>::iterator</a> it = MacroMap.begin(),
+<a name="l00495"></a>00495          ie = MacroMap.end(); it != ie; ++it)
+<a name="l00496"></a>00496     <span class="keyword">delete</span> it->getValue();
+<a name="l00497"></a>00497 
+<a name="l00498"></a>00498   <span class="keyword">delete</span> PlatformParser;
+<a name="l00499"></a>00499   <span class="keyword">delete</span> GenericParser;
+<a name="l00500"></a>00500 }
+<a name="l00501"></a>00501 
+<a name="l00502"></a>00502 <span class="keywordtype">void</span> AsmParser::PrintMacroInstantiations() {
+<a name="l00503"></a>00503   <span class="comment">// Print the active macro instantiation stack.</span>
+<a name="l00504"></a>00504   <span class="keywordflow">for</span> (std::vector<MacroInstantiation*>::const_reverse_iterator
+<a name="l00505"></a>00505          it = ActiveMacros.rbegin(), ie = ActiveMacros.rend(); it != ie; ++it)
+<a name="l00506"></a>00506     <a class="code" href="namespacellvm.html#a6fbb0f04208840cc02fdcfec56e338d9">PrintMessage</a>((*it)->InstantiationLoc, SourceMgr::DK_Note,
+<a name="l00507"></a>00507                  <span class="stringliteral">"while in macro instantiation"</span>);
+<a name="l00508"></a>00508 }
+<a name="l00509"></a>00509 
+<a name="l00510"></a>00510 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MCAsmParser.html#aa95088b8b3135c76badcca1f8c9a1fe6">AsmParser::Warning</a>(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> L, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Twine.html">Twine</a> &Msg, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<SMRange></a> <a class="code" href="MachineLoopRanges_8cpp.html#a13a811df4825530d4cdfe42f808979fa">Ranges</a>) {
+<a name="l00511"></a>00511   <span class="keywordflow">if</span> (<a class="code" href="AsmParser_8cpp.html#a79ddd99ea70faec91393c660fdfb7061">FatalAssemblerWarnings</a>)
+<a name="l00512"></a>00512     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(L, Msg, Ranges);
+<a name="l00513"></a>00513   <a class="code" href="namespacellvm.html#a6fbb0f04208840cc02fdcfec56e338d9">PrintMessage</a>(L, SourceMgr::DK_Warning, Msg, Ranges);
+<a name="l00514"></a>00514   PrintMacroInstantiations();
+<a name="l00515"></a>00515   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00516"></a>00516 }
+<a name="l00517"></a>00517 
+<a name="l00518"></a>00518 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MCAsmParser.html#a528e7c9fe7585ff93ac8169ab1ce234a">AsmParser::Error</a>(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> L, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Twine.html">Twine</a> &Msg, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<SMRange></a> Ranges) {
+<a name="l00519"></a>00519   HadError = <span class="keyword">true</span>;
+<a name="l00520"></a>00520   <a class="code" href="namespacellvm.html#a6fbb0f04208840cc02fdcfec56e338d9">PrintMessage</a>(L, SourceMgr::DK_Error, Msg, Ranges);
+<a name="l00521"></a>00521   PrintMacroInstantiations();
+<a name="l00522"></a>00522   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00523"></a>00523 }
+<a name="l00524"></a>00524 
+<a name="l00525"></a>00525 <span class="keywordtype">bool</span> AsmParser::EnterIncludeFile(<span class="keyword">const</span> std::string &Filename) {
+<a name="l00526"></a>00526   std::string IncludedFile;
+<a name="l00527"></a>00527   <span class="keywordtype">int</span> NewBuf = <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#ade78f93269ac7fa03b8ed1806262443d">AddIncludeFile</a>(Filename, Lexer.getLoc(), IncludedFile);
+<a name="l00528"></a>00528   <span class="keywordflow">if</span> (NewBuf == -1)
+<a name="l00529"></a>00529     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00530"></a>00530 
+<a name="l00531"></a>00531   CurBuffer = NewBuf;
+<a name="l00532"></a>00532 
+<a name="l00533"></a>00533   Lexer.setBuffer(<a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#afea655fbbcf8d46deafb61f56eed99bd">getMemoryBuffer</a>(CurBuffer));
+<a name="l00534"></a>00534 
+<a name="l00535"></a>00535   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00536"></a>00536 }
+<a name="l00537"></a>00537 <span class="comment"></span>
+<a name="l00538"></a>00538 <span class="comment">/// Process the specified .incbin file by seaching for it in the include paths</span>
+<a name="l00539"></a>00539 <span class="comment">/// then just emitting the byte contents of the file to the streamer. This</span>
+<a name="l00540"></a>00540 <span class="comment">/// returns true on failure.</span>
+<a name="l00541"></a>00541 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ProcessIncbinFile(<span class="keyword">const</span> std::string &Filename) {
+<a name="l00542"></a>00542   std::string IncludedFile;
+<a name="l00543"></a>00543   <span class="keywordtype">int</span> NewBuf = <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#ade78f93269ac7fa03b8ed1806262443d">AddIncludeFile</a>(Filename, Lexer.getLoc(), IncludedFile);
+<a name="l00544"></a>00544   <span class="keywordflow">if</span> (NewBuf == -1)
+<a name="l00545"></a>00545     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00546"></a>00546 
+<a name="l00547"></a>00547   <span class="comment">// Pick up the bytes from the file and emit them.</span>
+<a name="l00548"></a>00548   getStreamer().EmitBytes(<a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#afea655fbbcf8d46deafb61f56eed99bd">getMemoryBuffer</a>(NewBuf)-><a class="code" href="classllvm_1_1MemoryBuffer.html#ac0b0ded052d34b73415b6d66e07c2055">getBuffer</a>(),
+<a name="l00549"></a>00549                           <a class="code" href="AsmParser_8cpp.html#af77d65ab56b38a820b1efc0bcafbd4fba4fb9b7e46bf210aa9b5b59ac1c5fe8ff">DEFAULT_ADDRSPACE</a>);
+<a name="l00550"></a>00550   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00551"></a>00551 }
+<a name="l00552"></a>00552 
+<a name="l00553"></a>00553 <span class="keywordtype">void</span> AsmParser::JumpToLoc(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> Loc) {
+<a name="l00554"></a>00554   CurBuffer = <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#a186847cf89bcc0c311885b7096f37ea4">FindBufferContainingLoc</a>(Loc);
+<a name="l00555"></a>00555   Lexer.setBuffer(<a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#afea655fbbcf8d46deafb61f56eed99bd">getMemoryBuffer</a>(CurBuffer), Loc.<a class="code" href="classllvm_1_1SMLoc.html#a57b9155169a1c2d0f2363cd4fdd97ac7">getPointer</a>());
+<a name="l00556"></a>00556 }
+<a name="l00557"></a>00557 
+<a name="l00558"></a>00558 <span class="keyword">const</span> <a class="code" href="classllvm_1_1AsmToken.html" title="AsmToken - Target independent representation for an assembler token.">AsmToken</a> &<a class="code" href="classllvm_1_1MCAsmParser.html#ad01a5cb7231de6415216a618090be57e">AsmParser::Lex</a>() {
+<a name="l00559"></a>00559   <span class="keyword">const</span> <a class="code" href="classllvm_1_1AsmToken.html" title="AsmToken - Target independent representation for an assembler token.">AsmToken</a> *tok = &Lexer.Lex();
+<a name="l00560"></a>00560 
+<a name="l00561"></a>00561   <span class="keywordflow">if</span> (tok-><a class="code" href="classllvm_1_1AsmToken.html#a46268a0a398b3f3a89c7e3ab0dd641f9">is</a>(<a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>)) {
+<a name="l00562"></a>00562     <span class="comment">// If this is the end of an included file, pop the parent file off the</span>
+<a name="l00563"></a>00563     <span class="comment">// include stack.</span>
+<a name="l00564"></a>00564     <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> ParentIncludeLoc = <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#a9808c13b6da1ee5a7ca7304a9b5e6b93">getParentIncludeLoc</a>(CurBuffer);
+<a name="l00565"></a>00565     <span class="keywordflow">if</span> (ParentIncludeLoc != <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a>()) {
+<a name="l00566"></a>00566       JumpToLoc(ParentIncludeLoc);
+<a name="l00567"></a>00567       tok = &Lexer.Lex();
+<a name="l00568"></a>00568     }
+<a name="l00569"></a>00569   }
+<a name="l00570"></a>00570 
+<a name="l00571"></a>00571   <span class="keywordflow">if</span> (tok-><a class="code" href="classllvm_1_1AsmToken.html#a46268a0a398b3f3a89c7e3ab0dd641f9">is</a>(<a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">AsmToken::Error</a>))
+<a name="l00572"></a>00572     <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Lexer.getErrLoc(), Lexer.getErr());
+<a name="l00573"></a>00573 
+<a name="l00574"></a>00574   <span class="keywordflow">return</span> *tok;
+<a name="l00575"></a>00575 }
+<a name="l00576"></a>00576 
+<a name="l00577"></a>00577 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MCAsmParser.html#ab1b2fb0acb2550076d5dcab1039b2bb8" title="Run - Run the parser on the input source buffer.">AsmParser::Run</a>(<span class="keywordtype">bool</span> NoInitialTextSection, <span class="keywordtype">bool</span> NoFinalize) {
+<a name="l00578"></a>00578   <span class="comment">// Create the initial section, if requested.</span>
+<a name="l00579"></a>00579   <span class="keywordflow">if</span> (!NoInitialTextSection)
+<a name="l00580"></a>00580     Out.InitSections();
+<a name="l00581"></a>00581 
+<a name="l00582"></a>00582   <span class="comment">// Prime the lexer.</span>
+<a name="l00583"></a>00583   Lex();
+<a name="l00584"></a>00584 
+<a name="l00585"></a>00585   HadError = <span class="keyword">false</span>;
+<a name="l00586"></a>00586   <a class="code" href="classllvm_1_1AsmCond.html">AsmCond</a> StartingCondState = TheCondState;
+<a name="l00587"></a>00587 
+<a name="l00588"></a>00588   <span class="comment">// If we are generating dwarf for assembly source files save the initial text</span>
+<a name="l00589"></a>00589   <span class="comment">// section and generate a .file directive.</span>
+<a name="l00590"></a>00590   <span class="keywordflow">if</span> (getContext().getGenDwarfForAssembly()) {
+<a name="l00591"></a>00591     getContext().setGenDwarfSection(getStreamer().getCurrentSection());
+<a name="l00592"></a>00592     <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *SectionStartSym = getContext().CreateTempSymbol();
+<a name="l00593"></a>00593     getStreamer().EmitLabel(SectionStartSym);
+<a name="l00594"></a>00594     getContext().setGenDwarfSectionStartSym(SectionStartSym);
+<a name="l00595"></a>00595     getStreamer().EmitDwarfFileDirective(getContext().nextGenDwarfFileNumber(),
+<a name="l00596"></a>00596       <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(), <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#afea655fbbcf8d46deafb61f56eed99bd">getMemoryBuffer</a>(CurBuffer)-><a class="code" href="classllvm_1_1MemoryBuffer.html#a041f701a956cd0a2c745e436508e4fdf">getBufferIdentifier</a>());
+<a name="l00597"></a>00597   }
+<a name="l00598"></a>00598 
+<a name="l00599"></a>00599   <span class="comment">// While we have input, parse each statement.</span>
+<a name="l00600"></a>00600   <span class="keywordflow">while</span> (Lexer.isNot(<a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>)) {
+<a name="l00601"></a>00601     ParseStatementInfo Info;
+<a name="l00602"></a>00602     <span class="keywordflow">if</span> (!ParseStatement(Info)) <span class="keywordflow">continue</span>;
+<a name="l00603"></a>00603 
+<a name="l00604"></a>00604     <span class="comment">// We had an error, validate that one was emitted and recover by skipping to</span>
+<a name="l00605"></a>00605     <span class="comment">// the next line.</span>
+<a name="l00606"></a>00606     assert(HadError && <span class="stringliteral">"Parse statement returned an error, but none emitted!"</span>);
+<a name="l00607"></a>00607     EatToEndOfStatement();
+<a name="l00608"></a>00608   }
+<a name="l00609"></a>00609 
+<a name="l00610"></a>00610   <span class="keywordflow">if</span> (TheCondState.TheCond != StartingCondState.<a class="code" href="classllvm_1_1AsmCond.html#ab5ad0559afdf12eaa55b0e4f3165d08b">TheCond</a> ||
+<a name="l00611"></a>00611       TheCondState.Ignore != StartingCondState.<a class="code" href="classllvm_1_1AsmCond.html#ab86a4572bd9b87223e026101d390cb46">Ignore</a>)
+<a name="l00612"></a>00612     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unmatched .ifs or .elses"</span>);
+<a name="l00613"></a>00613 
+<a name="l00614"></a>00614   <span class="comment">// Check to see there are no empty DwarfFile slots.</span>
+<a name="l00615"></a>00615   <span class="keyword">const</span> std::vector<MCDwarfFile *> &MCDwarfFiles =
+<a name="l00616"></a>00616     getContext().getMCDwarfFiles();
+<a name="l00617"></a>00617   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1; i < MCDwarfFiles.size(); i++) {
+<a name="l00618"></a>00618     <span class="keywordflow">if</span> (!MCDwarfFiles[i])
+<a name="l00619"></a>00619       TokError(<span class="stringliteral">"unassigned file number: "</span> + <a class="code" href="classllvm_1_1Twine.html">Twine</a>(i) + <span class="stringliteral">" for .file directives"</span>);
+<a name="l00620"></a>00620   }
+<a name="l00621"></a>00621 
+<a name="l00622"></a>00622   <span class="comment">// Check to see that all assembler local symbols were actually defined.</span>
+<a name="l00623"></a>00623   <span class="comment">// Targets that don't do subsections via symbols may not want this, though,</span>
+<a name="l00624"></a>00624   <span class="comment">// so conservatively exclude them. Only do this if we're finalizing, though,</span>
+<a name="l00625"></a>00625   <span class="comment">// as otherwise we won't necessarilly have seen everything yet.</span>
+<a name="l00626"></a>00626   <span class="keywordflow">if</span> (!NoFinalize && MAI.hasSubsectionsViaSymbols()) {
+<a name="l00627"></a>00627     <span class="keyword">const</span> <a class="code" href="classllvm_1_1StringMap.html">MCContext::SymbolTable</a> &Symbols = getContext().getSymbols();
+<a name="l00628"></a>00628     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1StringMapConstIterator.html">MCContext::SymbolTable::const_iterator</a> i = Symbols.<a class="code" href="classllvm_1_1StringMap.html#a2d71dc9a645a91493dd60a723be28720">begin</a>(),
+<a name="l00629"></a>00629          e = Symbols.<a class="code" href="classllvm_1_1StringMap.html#a16e5eaf2df56249e87019be23ee07695">end</a>();
+<a name="l00630"></a>00630          i != e; ++i) {
+<a name="l00631"></a>00631       <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = i->getValue();
+<a name="l00632"></a>00632       <span class="comment">// Variable symbols may not be marked as defined, so check those</span>
+<a name="l00633"></a>00633       <span class="comment">// explicitly. If we know it's a variable, we have a definition for</span>
+<a name="l00634"></a>00634       <span class="comment">// the purposes of this check.</span>
+<a name="l00635"></a>00635       <span class="keywordflow">if</span> (Sym-><a class="code" href="classllvm_1_1MCSymbol.html#ad75d1f7b68cd325d8f592a90bc7d1732" title="isTemporary - Check if this is an assembler temporary symbol.">isTemporary</a>() && !Sym-><a class="code" href="classllvm_1_1MCSymbol.html#ac542b727bb1c9dd954198bf3906912ce" title="isVariable - Check if this is a variable symbol.">isVariable</a>() && !Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a4249ad589d761f07be96a0c314de5ad2">isDefined</a>())
+<a name="l00636"></a>00636         <span class="comment">// FIXME: We would really like to refer back to where the symbol was</span>
+<a name="l00637"></a>00637         <span class="comment">// first referenced for a source location. We need to add something</span>
+<a name="l00638"></a>00638         <span class="comment">// to track that. Currently, we just point to the end of the file.</span>
+<a name="l00639"></a>00639         <a class="code" href="namespacellvm.html#a6fbb0f04208840cc02fdcfec56e338d9">PrintMessage</a>(getLexer().getLoc(), SourceMgr::DK_Error,
+<a name="l00640"></a>00640                      <span class="stringliteral">"assembler local symbol '"</span> + Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a1c2e92b00e94b279e7a880a305548765" title="getName - Get the symbol name.">getName</a>() +
+<a name="l00641"></a>00641                      <span class="stringliteral">"' not defined"</span>);
+<a name="l00642"></a>00642     }
+<a name="l00643"></a>00643   }
+<a name="l00644"></a>00644 
+<a name="l00645"></a>00645 
+<a name="l00646"></a>00646   <span class="comment">// Finalize the output stream if there are no errors and if the client wants</span>
+<a name="l00647"></a>00647   <span class="comment">// us to.</span>
+<a name="l00648"></a>00648   <span class="keywordflow">if</span> (!HadError && !NoFinalize)
+<a name="l00649"></a>00649     Out.Finish();
+<a name="l00650"></a>00650 
+<a name="l00651"></a>00651   <span class="keywordflow">return</span> HadError;
+<a name="l00652"></a>00652 }
+<a name="l00653"></a>00653 
+<a name="l00654"></a>00654 <span class="keywordtype">void</span> AsmParser::CheckForValidSection() {
+<a name="l00655"></a>00655   <span class="keywordflow">if</span> (!ParsingInlineAsm && !getStreamer().getCurrentSection()) {
+<a name="l00656"></a>00656     TokError(<span class="stringliteral">"expected section directive before assembly directive"</span>);
+<a name="l00657"></a>00657     Out.SwitchSection(Ctx.getMachOSection(
+<a name="l00658"></a>00658                         <span class="stringliteral">"__TEXT"</span>, <span class="stringliteral">"__text"</span>,
+<a name="l00659"></a>00659                         MCSectionMachO::S_ATTR_PURE_INSTRUCTIONS,
+<a name="l00660"></a>00660                         0, SectionKind::getText()));
+<a name="l00661"></a>00661   }
+<a name="l00662"></a>00662 }
+<a name="l00663"></a>00663 <span class="comment"></span>
+<a name="l00664"></a>00664 <span class="comment">/// EatToEndOfStatement - Throw away the rest of the line for testing purposes.</span>
+<a name="l00665"></a>00665 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MCAsmParser.html#aeec65965efe9017c6e41db63558bd718">AsmParser::EatToEndOfStatement</a>() {
+<a name="l00666"></a>00666   <span class="keywordflow">while</span> (Lexer.isNot(AsmToken::EndOfStatement) &&
+<a name="l00667"></a>00667          Lexer.isNot(<a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>))
+<a name="l00668"></a>00668     Lex();
+<a name="l00669"></a>00669 
+<a name="l00670"></a>00670   <span class="comment">// Eat EOL.</span>
+<a name="l00671"></a>00671   <span class="keywordflow">if</span> (Lexer.is(AsmToken::EndOfStatement))
+<a name="l00672"></a>00672     Lex();
+<a name="l00673"></a>00673 }
+<a name="l00674"></a>00674 
+<a name="l00675"></a>00675 <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="classllvm_1_1MCAsmParser.html#aaca9c028abba6614104628071f543d63" title="Parse up to the end of statement and return the contents from the current token until the end of the ...">AsmParser::ParseStringToEndOfStatement</a>() {
+<a name="l00676"></a>00676   <span class="keyword">const</span> <span class="keywordtype">char</span> *Start = getTok().getLoc().getPointer();
+<a name="l00677"></a>00677 
+<a name="l00678"></a>00678   <span class="keywordflow">while</span> (Lexer.isNot(AsmToken::EndOfStatement) &&
+<a name="l00679"></a>00679          Lexer.isNot(<a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>))
+<a name="l00680"></a>00680     Lex();
+<a name="l00681"></a>00681 
+<a name="l00682"></a>00682   <span class="keyword">const</span> <span class="keywordtype">char</span> *End = getTok().getLoc().getPointer();
+<a name="l00683"></a>00683   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(Start, End - Start);
+<a name="l00684"></a>00684 }
+<a name="l00685"></a>00685 
+<a name="l00686"></a>00686 <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> AsmParser::ParseStringToComma() {
+<a name="l00687"></a>00687   <span class="keyword">const</span> <span class="keywordtype">char</span> *Start = getTok().getLoc().getPointer();
+<a name="l00688"></a>00688 
+<a name="l00689"></a>00689   <span class="keywordflow">while</span> (Lexer.isNot(AsmToken::EndOfStatement) &&
+<a name="l00690"></a>00690          Lexer.isNot(AsmToken::Comma) &&
+<a name="l00691"></a>00691          Lexer.isNot(<a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>))
+<a name="l00692"></a>00692     Lex();
+<a name="l00693"></a>00693 
+<a name="l00694"></a>00694   <span class="keyword">const</span> <span class="keywordtype">char</span> *End = getTok().getLoc().getPointer();
+<a name="l00695"></a>00695   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(Start, End - Start);
+<a name="l00696"></a>00696 }
+<a name="l00697"></a>00697 <span class="comment"></span>
+<a name="l00698"></a>00698 <span class="comment">/// ParseParenExpr - Parse a paren expression and return it.</span>
+<a name="l00699"></a>00699 <span class="comment">/// NOTE: This assumes the leading '(' has already been consumed.</span>
+<a name="l00700"></a>00700 <span class="comment">///</span>
+<a name="l00701"></a>00701 <span class="comment">/// parenexpr ::= expr)</span>
+<a name="l00702"></a>00702 <span class="comment">///</span>
+<a name="l00703"></a>00703 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseParenExpr(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc) {
+<a name="l00704"></a>00704   <span class="keywordflow">if</span> (ParseExpression(Res)) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00705"></a>00705   <span class="keywordflow">if</span> (Lexer.isNot(AsmToken::RParen))
+<a name="l00706"></a>00706     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected ')' in parentheses expression"</span>);
+<a name="l00707"></a>00707   EndLoc = Lexer.getLoc();
+<a name="l00708"></a>00708   Lex();
+<a name="l00709"></a>00709   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00710"></a>00710 }
+<a name="l00711"></a>00711 <span class="comment"></span>
+<a name="l00712"></a>00712 <span class="comment">/// ParseBracketExpr - Parse a bracket expression and return it.</span>
+<a name="l00713"></a>00713 <span class="comment">/// NOTE: This assumes the leading '[' has already been consumed.</span>
+<a name="l00714"></a>00714 <span class="comment">///</span>
+<a name="l00715"></a>00715 <span class="comment">/// bracketexpr ::= expr]</span>
+<a name="l00716"></a>00716 <span class="comment">///</span>
+<a name="l00717"></a>00717 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseBracketExpr(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc) {
+<a name="l00718"></a>00718   <span class="keywordflow">if</span> (ParseExpression(Res)) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00719"></a>00719   <span class="keywordflow">if</span> (Lexer.isNot(AsmToken::RBrac))
+<a name="l00720"></a>00720     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected ']' in brackets expression"</span>);
+<a name="l00721"></a>00721   EndLoc = Lexer.getLoc();
+<a name="l00722"></a>00722   Lex();
+<a name="l00723"></a>00723   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00724"></a>00724 }
+<a name="l00725"></a>00725 <span class="comment"></span>
+<a name="l00726"></a>00726 <span class="comment">/// ParsePrimaryExpr - Parse a primary expression and return it.</span>
+<a name="l00727"></a>00727 <span class="comment">///  primaryexpr ::= (parenexpr</span>
+<a name="l00728"></a>00728 <span class="comment">///  primaryexpr ::= symbol</span>
+<a name="l00729"></a>00729 <span class="comment">///  primaryexpr ::= number</span>
+<a name="l00730"></a>00730 <span class="comment">///  primaryexpr ::= '.'</span>
+<a name="l00731"></a>00731 <span class="comment">///  primaryexpr ::= ~,+,- primaryexpr</span>
+<a name="l00732"></a>00732 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParsePrimaryExpr(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc) {
+<a name="l00733"></a>00733   <span class="keywordflow">switch</span> (Lexer.getKind()) {
+<a name="l00734"></a>00734   <span class="keywordflow">default</span>:
+<a name="l00735"></a>00735     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unknown token in expression"</span>);
+<a name="l00736"></a>00736   <span class="comment">// If we have an error assume that we've already handled it.</span>
+<a name="l00737"></a>00737   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">AsmToken::Error</a>:
+<a name="l00738"></a>00738     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00739"></a>00739   <span class="keywordflow">case</span> AsmToken::Exclaim:
+<a name="l00740"></a>00740     Lex(); <span class="comment">// Eat the operator.</span>
+<a name="l00741"></a>00741     <span class="keywordflow">if</span> (ParsePrimaryExpr(Res, EndLoc))
+<a name="l00742"></a>00742       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00743"></a>00743     Res = MCUnaryExpr::CreateLNot(Res, getContext());
+<a name="l00744"></a>00744     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00745"></a>00745   <span class="keywordflow">case</span> AsmToken::Dollar:
+<a name="l00746"></a>00746   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a394bf05139245f8e3ee22865dc9c1caf">AsmToken::String</a>:
+<a name="l00747"></a>00747   <span class="keywordflow">case</span> AsmToken::Identifier: {
+<a name="l00748"></a>00748     EndLoc = Lexer.getLoc();
+<a name="l00749"></a>00749 
+<a name="l00750"></a>00750     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Identifier;
+<a name="l00751"></a>00751     <span class="keywordflow">if</span> (ParseIdentifier(Identifier))
+<a name="l00752"></a>00752       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00753"></a>00753 
+<a name="l00754"></a>00754     <span class="comment">// This is a symbol reference.</span>
+<a name="l00755"></a>00755     std::pair<StringRef, StringRef> <a class="code" href="SubtargetFeature_8cpp.html#aea2f934ca74dd1ab539c92107416777e">Split</a> = Identifier.<a class="code" href="classllvm_1_1StringRef.html#a4bcce769239a53df854d89c4e08d0b41">split</a>(<span class="charliteral">'@'</span>);
+<a name="l00756"></a>00756     <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = getContext().GetOrCreateSymbol(Split.first);
+<a name="l00757"></a>00757 
+<a name="l00758"></a>00758     <span class="comment">// Lookup the symbol variant if used.</span>
+<a name="l00759"></a>00759     <a class="code" href="classllvm_1_1MCSymbolRefExpr.html#ace20c3d7279515e995910d3dcef655a3">MCSymbolRefExpr::VariantKind</a> Variant = MCSymbolRefExpr::VK_None;
+<a name="l00760"></a>00760     <span class="keywordflow">if</span> (Split.first.size() != Identifier.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>()) {
+<a name="l00761"></a>00761       Variant = MCSymbolRefExpr::getVariantKindForName(Split.second);
+<a name="l00762"></a>00762       <span class="keywordflow">if</span> (Variant == MCSymbolRefExpr::VK_Invalid) {
+<a name="l00763"></a>00763         Variant = MCSymbolRefExpr::VK_None;
+<a name="l00764"></a>00764         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"invalid variant '"</span> + Split.second + <span class="stringliteral">"'"</span>);
+<a name="l00765"></a>00765       }
+<a name="l00766"></a>00766     }
+<a name="l00767"></a>00767 
+<a name="l00768"></a>00768     <span class="comment">// If this is an absolute variable reference, substitute it now to preserve</span>
+<a name="l00769"></a>00769     <span class="comment">// semantics in the face of reassignment.</span>
+<a name="l00770"></a>00770     <span class="keywordflow">if</span> (Sym-><a class="code" href="classllvm_1_1MCSymbol.html#ac542b727bb1c9dd954198bf3906912ce" title="isVariable - Check if this is a variable symbol.">isVariable</a>() && isa<MCConstantExpr>(Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a3edce2254ea42487721b42c00bbafe18" title="getVariableValue() - Get the value for variable symbols.">getVariableValue</a>())) {
+<a name="l00771"></a>00771       <span class="keywordflow">if</span> (Variant)
+<a name="l00772"></a>00772         <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(EndLoc, <span class="stringliteral">"unexpected modifier on variable reference"</span>);
+<a name="l00773"></a>00773 
+<a name="l00774"></a>00774       Res = Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a3edce2254ea42487721b42c00bbafe18" title="getVariableValue() - Get the value for variable symbols.">getVariableValue</a>();
+<a name="l00775"></a>00775       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00776"></a>00776     }
+<a name="l00777"></a>00777 
+<a name="l00778"></a>00778     <span class="comment">// Otherwise create a symbol ref.</span>
+<a name="l00779"></a>00779     Res = MCSymbolRefExpr::Create(Sym, Variant, getContext());
+<a name="l00780"></a>00780     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00781"></a>00781   }
+<a name="l00782"></a>00782   <span class="keywordflow">case</span> AsmToken::Integer: {
+<a name="l00783"></a>00783     <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> Loc = getTok().getLoc();
+<a name="l00784"></a>00784     <a class="code" href="classint64__t.html">int64_t</a> <a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a3a7597ca475c0fcf10856ef36351d1ac">IntVal</a> = getTok().getIntVal();
+<a name="l00785"></a>00785     Res = MCConstantExpr::Create(IntVal, getContext());
+<a name="l00786"></a>00786     EndLoc = Lexer.getLoc();
+<a name="l00787"></a>00787     Lex(); <span class="comment">// Eat token.</span>
+<a name="l00788"></a>00788     <span class="comment">// Look for 'b' or 'f' following an Integer as a directional label</span>
+<a name="l00789"></a>00789     <span class="keywordflow">if</span> (Lexer.getKind() == AsmToken::Identifier) {
+<a name="l00790"></a>00790       <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal = getTok().getString();
+<a name="l00791"></a>00791       <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">"f"</span> || IDVal == <span class="stringliteral">"b"</span>){
+<a name="l00792"></a>00792         <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = Ctx.GetDirectionalLocalSymbol(IntVal,
+<a name="l00793"></a>00793                                                       IDVal == <span class="stringliteral">"f"</span> ? 1 : 0);
+<a name="l00794"></a>00794         Res = MCSymbolRefExpr::Create(Sym, MCSymbolRefExpr::VK_None,
+<a name="l00795"></a>00795                                       getContext());
+<a name="l00796"></a>00796         <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">"b"</span> && Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a2260c62e12734815ad60dc038bf514f5" title="isUndefined - Check if this symbol undefined (i.e., implicitly defined).">isUndefined</a>())
+<a name="l00797"></a>00797           <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Loc, <span class="stringliteral">"invalid reference to undefined symbol"</span>);
+<a name="l00798"></a>00798         EndLoc = Lexer.getLoc();
+<a name="l00799"></a>00799         Lex(); <span class="comment">// Eat identifier.</span>
+<a name="l00800"></a>00800       }
+<a name="l00801"></a>00801     }
+<a name="l00802"></a>00802     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00803"></a>00803   }
+<a name="l00804"></a>00804   <span class="keywordflow">case</span> AsmToken::Real: {
+<a name="l00805"></a>00805     <a class="code" href="classllvm_1_1APFloat.html">APFloat</a> RealVal(APFloat::IEEEdouble, getTok().getString());
+<a name="l00806"></a>00806     uint64_t IntVal = RealVal.bitcastToAPInt().getZExtValue();
+<a name="l00807"></a>00807     Res = MCConstantExpr::Create(IntVal, getContext());
+<a name="l00808"></a>00808     Lex(); <span class="comment">// Eat token.</span>
+<a name="l00809"></a>00809     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00810"></a>00810   }
+<a name="l00811"></a>00811   <span class="keywordflow">case</span> AsmToken::Dot: {
+<a name="l00812"></a>00812     <span class="comment">// This is a '.' reference, which references the current PC.  Emit a</span>
+<a name="l00813"></a>00813     <span class="comment">// temporary label to the streamer and refer to it.</span>
+<a name="l00814"></a>00814     <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = Ctx.CreateTempSymbol();
+<a name="l00815"></a>00815     Out.EmitLabel(Sym);
+<a name="l00816"></a>00816     Res = MCSymbolRefExpr::Create(Sym, MCSymbolRefExpr::VK_None, getContext());
+<a name="l00817"></a>00817     EndLoc = Lexer.getLoc();
+<a name="l00818"></a>00818     Lex(); <span class="comment">// Eat identifier.</span>
+<a name="l00819"></a>00819     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00820"></a>00820   }
+<a name="l00821"></a>00821   <span class="keywordflow">case</span> AsmToken::LParen:
+<a name="l00822"></a>00822     Lex(); <span class="comment">// Eat the '('.</span>
+<a name="l00823"></a>00823     <span class="keywordflow">return</span> ParseParenExpr(Res, EndLoc);
+<a name="l00824"></a>00824   <span class="keywordflow">case</span> AsmToken::LBrac:
+<a name="l00825"></a>00825     <span class="keywordflow">if</span> (!PlatformParser->HasBracketExpressions())
+<a name="l00826"></a>00826       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"brackets expression not supported on this target"</span>);
+<a name="l00827"></a>00827     Lex(); <span class="comment">// Eat the '['.</span>
+<a name="l00828"></a>00828     <span class="keywordflow">return</span> ParseBracketExpr(Res, EndLoc);
+<a name="l00829"></a>00829   <span class="keywordflow">case</span> AsmToken::Minus:
+<a name="l00830"></a>00830     Lex(); <span class="comment">// Eat the operator.</span>
+<a name="l00831"></a>00831     <span class="keywordflow">if</span> (ParsePrimaryExpr(Res, EndLoc))
+<a name="l00832"></a>00832       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00833"></a>00833     Res = MCUnaryExpr::CreateMinus(Res, getContext());
+<a name="l00834"></a>00834     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00835"></a>00835   <span class="keywordflow">case</span> AsmToken::Plus:
+<a name="l00836"></a>00836     Lex(); <span class="comment">// Eat the operator.</span>
+<a name="l00837"></a>00837     <span class="keywordflow">if</span> (ParsePrimaryExpr(Res, EndLoc))
+<a name="l00838"></a>00838       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00839"></a>00839     Res = MCUnaryExpr::CreatePlus(Res, getContext());
+<a name="l00840"></a>00840     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00841"></a>00841   <span class="keywordflow">case</span> AsmToken::Tilde:
+<a name="l00842"></a>00842     Lex(); <span class="comment">// Eat the operator.</span>
+<a name="l00843"></a>00843     <span class="keywordflow">if</span> (ParsePrimaryExpr(Res, EndLoc))
+<a name="l00844"></a>00844       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00845"></a>00845     Res = MCUnaryExpr::CreateNot(Res, getContext());
+<a name="l00846"></a>00846     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00847"></a>00847   }
+<a name="l00848"></a>00848 }
+<a name="l00849"></a>00849 
+<a name="l00850"></a>00850 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MCAsmParser.html#a156cb312d2a1da8b211c5ef94b86b2da">AsmParser::ParseExpression</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res) {
+<a name="l00851"></a>00851   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> EndLoc;
+<a name="l00852"></a>00852   <span class="keywordflow">return</span> ParseExpression(Res, EndLoc);
+<a name="l00853"></a>00853 }
+<a name="l00854"></a>00854 
+<a name="l00855"></a>00855 <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *
+<a name="l00856"></a>00856 AsmParser::ApplyModifierToExpr(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *E,
+<a name="l00857"></a>00857                                <a class="code" href="classllvm_1_1MCSymbolRefExpr.html#ace20c3d7279515e995910d3dcef655a3">MCSymbolRefExpr::VariantKind</a> Variant) {
+<a name="l00858"></a>00858   <span class="comment">// Recurse over the given expression, rebuilding it to apply the given variant</span>
+<a name="l00859"></a>00859   <span class="comment">// if there is exactly one symbol.</span>
+<a name="l00860"></a>00860   <span class="keywordflow">switch</span> (E-><a class="code" href="classllvm_1_1MCExpr.html#ace5b4c9d98f1781030dc31db7f983529">getKind</a>()) {
+<a name="l00861"></a>00861   <span class="keywordflow">case</span> MCExpr::Target:
+<a name="l00862"></a>00862   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110aac2f0a84dd2aa5ee4c3f1385e9565f5e">MCExpr::Constant</a>:
+<a name="l00863"></a>00863     <span class="keywordflow">return</span> 0;
+<a name="l00864"></a>00864 
+<a name="l00865"></a>00865   <span class="keywordflow">case</span> MCExpr::SymbolRef: {
+<a name="l00866"></a>00866     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCSymbolRefExpr.html">MCSymbolRefExpr</a> *SRE = cast<MCSymbolRefExpr>(E);
+<a name="l00867"></a>00867 
+<a name="l00868"></a>00868     <span class="keywordflow">if</span> (SRE-><a class="code" href="classllvm_1_1MCSymbolRefExpr.html#a9a2a5ba2cd468f5cf2a1648b6640e455">getKind</a>() != MCSymbolRefExpr::VK_None) {
+<a name="l00869"></a>00869       TokError(<span class="stringliteral">"invalid variant on expression '"</span> +
+<a name="l00870"></a>00870                getTok().getIdentifier() + <span class="stringliteral">"' (already modified)"</span>);
+<a name="l00871"></a>00871       <span class="keywordflow">return</span> E;
+<a name="l00872"></a>00872     }
+<a name="l00873"></a>00873 
+<a name="l00874"></a>00874     <span class="keywordflow">return</span> MCSymbolRefExpr::Create(&SRE-><a class="code" href="classllvm_1_1MCSymbolRefExpr.html#afba43ef04f7e89dc23859d7938820bd8">getSymbol</a>(), Variant, getContext());
+<a name="l00875"></a>00875   }
+<a name="l00876"></a>00876 
+<a name="l00877"></a>00877   <span class="keywordflow">case</span> MCExpr::Unary: {
+<a name="l00878"></a>00878     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCUnaryExpr.html" title="MCUnaryExpr - Unary assembler expressions.">MCUnaryExpr</a> *UE = cast<MCUnaryExpr>(E);
+<a name="l00879"></a>00879     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Sub = ApplyModifierToExpr(UE-><a class="code" href="classllvm_1_1MCUnaryExpr.html#ad680df8e50388233febd0fe363303c48" title="getSubExpr - Get the child of this unary expression.">getSubExpr</a>(), Variant);
+<a name="l00880"></a>00880     <span class="keywordflow">if</span> (!Sub)
+<a name="l00881"></a>00881       <span class="keywordflow">return</span> 0;
+<a name="l00882"></a>00882     <span class="keywordflow">return</span> MCUnaryExpr::Create(UE-><a class="code" href="classllvm_1_1MCUnaryExpr.html#ae20380759ac93e48c19eda1b738b7aae" title="getOpcode - Get the kind of this unary expression.">getOpcode</a>(), Sub, getContext());
+<a name="l00883"></a>00883   }
+<a name="l00884"></a>00884 
+<a name="l00885"></a>00885   <span class="keywordflow">case</span> MCExpr::Binary: {
+<a name="l00886"></a>00886     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCBinaryExpr.html" title="MCBinaryExpr - Binary assembler expressions.">MCBinaryExpr</a> *BE = cast<MCBinaryExpr>(E);
+<a name="l00887"></a>00887     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *LHS = ApplyModifierToExpr(BE-><a class="code" href="classllvm_1_1MCBinaryExpr.html#a6fa0e299419a7bd4563ad8a18ea7bc2b" title="getLHS - Get the left-hand side expression of the binary operator.">getLHS</a>(), Variant);
+<a name="l00888"></a>00888     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *RHS = ApplyModifierToExpr(BE-><a class="code" href="classllvm_1_1MCBinaryExpr.html#a076d8d9106ff8a8ae53365e7c0b41837" title="getRHS - Get the right-hand side expression of the binary operator.">getRHS</a>(), Variant);
+<a name="l00889"></a>00889 
+<a name="l00890"></a>00890     <span class="keywordflow">if</span> (!LHS && !RHS)
+<a name="l00891"></a>00891       <span class="keywordflow">return</span> 0;
+<a name="l00892"></a>00892 
+<a name="l00893"></a>00893     <span class="keywordflow">if</span> (!LHS) LHS = BE-><a class="code" href="classllvm_1_1MCBinaryExpr.html#a6fa0e299419a7bd4563ad8a18ea7bc2b" title="getLHS - Get the left-hand side expression of the binary operator.">getLHS</a>();
+<a name="l00894"></a>00894     <span class="keywordflow">if</span> (!RHS) RHS = BE-><a class="code" href="classllvm_1_1MCBinaryExpr.html#a076d8d9106ff8a8ae53365e7c0b41837" title="getRHS - Get the right-hand side expression of the binary operator.">getRHS</a>();
+<a name="l00895"></a>00895 
+<a name="l00896"></a>00896     <span class="keywordflow">return</span> MCBinaryExpr::Create(BE-><a class="code" href="classllvm_1_1MCBinaryExpr.html#afbf936f4bc6ee81d347babd7497ce812" title="getOpcode - Get the kind of this binary expression.">getOpcode</a>(), LHS, RHS, getContext());
+<a name="l00897"></a>00897   }
+<a name="l00898"></a>00898   }
+<a name="l00899"></a>00899 
+<a name="l00900"></a>00900   <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Invalid expression kind!"</span>);
+<a name="l00901"></a>00901 }
+<a name="l00902"></a>00902 <span class="comment"></span>
+<a name="l00903"></a>00903 <span class="comment">/// ParseExpression - Parse an expression and return it.</span>
+<a name="l00904"></a>00904 <span class="comment">///</span>
+<a name="l00905"></a>00905 <span class="comment">///  expr ::= expr &&,|| expr               -> lowest.</span>
+<a name="l00906"></a>00906 <span class="comment">///  expr ::= expr |,^,&,! expr</span>
+<a name="l00907"></a>00907 <span class="comment">///  expr ::= expr ==,!=,<>,<,<=,>,>= expr</span>
+<a name="l00908"></a>00908 <span class="comment">///  expr ::= expr <<,>> expr</span>
+<a name="l00909"></a>00909 <span class="comment">///  expr ::= expr +,- expr</span>
+<a name="l00910"></a>00910 <span class="comment">///  expr ::= expr *,/,% expr               -> highest.</span>
+<a name="l00911"></a>00911 <span class="comment">///  expr ::= primaryexpr</span>
+<a name="l00912"></a>00912 <span class="comment">///</span>
+<a name="l00913"></a>00913 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MCAsmParser.html#a156cb312d2a1da8b211c5ef94b86b2da">AsmParser::ParseExpression</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc) {
+<a name="l00914"></a>00914   <span class="comment">// Parse the expression.</span>
+<a name="l00915"></a>00915   Res = 0;
+<a name="l00916"></a>00916   <span class="keywordflow">if</span> (ParsePrimaryExpr(Res, EndLoc) || ParseBinOpRHS(1, Res, EndLoc))
+<a name="l00917"></a>00917     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00918"></a>00918 
+<a name="l00919"></a>00919   <span class="comment">// As a special case, we support 'a op b @ modifier' by rewriting the</span>
+<a name="l00920"></a>00920   <span class="comment">// expression to include the modifier. This is inefficient, but in general we</span>
+<a name="l00921"></a>00921   <span class="comment">// expect users to use 'a at modifier op b'.</span>
+<a name="l00922"></a>00922   <span class="keywordflow">if</span> (Lexer.getKind() == AsmToken::At) {
+<a name="l00923"></a>00923     Lex();
+<a name="l00924"></a>00924 
+<a name="l00925"></a>00925     <span class="keywordflow">if</span> (Lexer.isNot(AsmToken::Identifier))
+<a name="l00926"></a>00926       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected symbol modifier following '@'"</span>);
+<a name="l00927"></a>00927 
+<a name="l00928"></a>00928     <a class="code" href="classllvm_1_1MCSymbolRefExpr.html#ace20c3d7279515e995910d3dcef655a3">MCSymbolRefExpr::VariantKind</a> Variant =
+<a name="l00929"></a>00929       MCSymbolRefExpr::getVariantKindForName(getTok().getIdentifier());
+<a name="l00930"></a>00930     <span class="keywordflow">if</span> (Variant == MCSymbolRefExpr::VK_Invalid)
+<a name="l00931"></a>00931       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"invalid variant '"</span> + getTok().getIdentifier() + <span class="stringliteral">"'"</span>);
+<a name="l00932"></a>00932 
+<a name="l00933"></a>00933     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *ModifiedRes = ApplyModifierToExpr(Res, Variant);
+<a name="l00934"></a>00934     <span class="keywordflow">if</span> (!ModifiedRes) {
+<a name="l00935"></a>00935       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"invalid modifier '"</span> + getTok().getIdentifier() +
+<a name="l00936"></a>00936                       <span class="stringliteral">"' (no symbols present)"</span>);
+<a name="l00937"></a>00937     }
+<a name="l00938"></a>00938 
+<a name="l00939"></a>00939     Res = ModifiedRes;
+<a name="l00940"></a>00940     Lex();
+<a name="l00941"></a>00941   }
+<a name="l00942"></a>00942 
+<a name="l00943"></a>00943   <span class="comment">// Try to constant fold it up front, if possible.</span>
+<a name="l00944"></a>00944   <a class="code" href="classint64__t.html">int64_t</a> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>;
+<a name="l00945"></a>00945   <span class="keywordflow">if</span> (Res->EvaluateAsAbsolute(Value))
+<a name="l00946"></a>00946     Res = MCConstantExpr::Create(Value, getContext());
+<a name="l00947"></a>00947 
+<a name="l00948"></a>00948   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00949"></a>00949 }
+<a name="l00950"></a>00950 
+<a name="l00951"></a>00951 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MCAsmParser.html#a21b0e2b3a4a08cb4a96c22e66862b471">AsmParser::ParseParenExpression</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc) {
+<a name="l00952"></a>00952   Res = 0;
+<a name="l00953"></a>00953   <span class="keywordflow">return</span> ParseParenExpr(Res, EndLoc) ||
+<a name="l00954"></a>00954          ParseBinOpRHS(1, Res, EndLoc);
+<a name="l00955"></a>00955 }
+<a name="l00956"></a>00956 
+<a name="l00957"></a>00957 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MCAsmParser.html#aa97789ae3a8ea4de5485750c9b713bab">AsmParser::ParseAbsoluteExpression</a>(<a class="code" href="classint64__t.html">int64_t</a> &Res) {
+<a name="l00958"></a>00958   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Expr;
+<a name="l00959"></a>00959 
+<a name="l00960"></a>00960   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> StartLoc = Lexer.getLoc();
+<a name="l00961"></a>00961   <span class="keywordflow">if</span> (ParseExpression(Expr))
+<a name="l00962"></a>00962     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00963"></a>00963 
+<a name="l00964"></a>00964   <span class="keywordflow">if</span> (!Expr->EvaluateAsAbsolute(Res))
+<a name="l00965"></a>00965     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(StartLoc, <span class="stringliteral">"expected absolute expression"</span>);
+<a name="l00966"></a>00966 
+<a name="l00967"></a>00967   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00968"></a>00968 }
+<a name="l00969"></a>00969 
+<a name="l00970"></a><a class="code" href="AsmParser_8cpp.html#a5208f0d260a049da2aa2bb8f59d0c2d1">00970</a> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="AsmParser_8cpp.html#a5208f0d260a049da2aa2bb8f59d0c2d1">getBinOpPrecedence</a>(<a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039">AsmToken::TokenKind</a> K,
+<a name="l00971"></a>00971                                    <a class="code" href="classllvm_1_1MCBinaryExpr.html#afcbc8d46b6339dbbbe1af20c9c876629">MCBinaryExpr::Opcode</a> &Kind) {
+<a name="l00972"></a>00972   <span class="keywordflow">switch</span> (K) {
+<a name="l00973"></a>00973   <span class="keywordflow">default</span>:
+<a name="l00974"></a>00974     <span class="keywordflow">return</span> 0;    <span class="comment">// not a binop.</span>
+<a name="l00975"></a>00975 
+<a name="l00976"></a>00976     <span class="comment">// Lowest Precedence: &&, ||</span>
+<a name="l00977"></a>00977   <span class="keywordflow">case</span> AsmToken::AmpAmp:
+<a name="l00978"></a>00978     Kind = MCBinaryExpr::LAnd;
+<a name="l00979"></a>00979     <span class="keywordflow">return</span> 1;
+<a name="l00980"></a>00980   <span class="keywordflow">case</span> AsmToken::PipePipe:
+<a name="l00981"></a>00981     Kind = MCBinaryExpr::LOr;
+<a name="l00982"></a>00982     <span class="keywordflow">return</span> 1;
+<a name="l00983"></a>00983 
+<a name="l00984"></a>00984 
+<a name="l00985"></a>00985     <span class="comment">// Low Precedence: |, &, ^</span>
+<a name="l00986"></a>00986     <span class="comment">//</span>
+<a name="l00987"></a>00987     <span class="comment">// FIXME: gas seems to support '!' as an infix operator?</span>
+<a name="l00988"></a>00988   <span class="keywordflow">case</span> AsmToken::Pipe:
+<a name="l00989"></a>00989     Kind = <a class="code" href="namespacellvm_1_1APIntOps.html#a22f056804d2b9882f74adc905872bc39" title="Bitwise OR function for APInt.">MCBinaryExpr::Or</a>;
+<a name="l00990"></a>00990     <span class="keywordflow">return</span> 2;
+<a name="l00991"></a>00991   <span class="keywordflow">case</span> AsmToken::Caret:
+<a name="l00992"></a>00992     Kind = <a class="code" href="namespacellvm_1_1APIntOps.html#afc7c4d88d09cba0c5e920f8a3a3ace55" title="Bitwise XOR function for APInt.">MCBinaryExpr::Xor</a>;
+<a name="l00993"></a>00993     <span class="keywordflow">return</span> 2;
+<a name="l00994"></a>00994   <span class="keywordflow">case</span> AsmToken::Amp:
+<a name="l00995"></a>00995     Kind = <a class="code" href="namespacellvm_1_1APIntOps.html#a684cfe02c582e8d75cd6d457e63e6c25" title="Bitwise AND function for APInt.">MCBinaryExpr::And</a>;
+<a name="l00996"></a>00996     <span class="keywordflow">return</span> 2;
+<a name="l00997"></a>00997 
+<a name="l00998"></a>00998     <span class="comment">// Low Intermediate Precedence: ==, !=, <>, <, <=, >, >=</span>
+<a name="l00999"></a>00999   <span class="keywordflow">case</span> AsmToken::EqualEqual:
+<a name="l01000"></a>01000     Kind = <a class="code" href="regexec_8c.html#ac07acfbb082b04f5bea72998c8976b3c">MCBinaryExpr::EQ</a>;
+<a name="l01001"></a>01001     <span class="keywordflow">return</span> 3;
+<a name="l01002"></a>01002   <span class="keywordflow">case</span> AsmToken::ExclaimEqual:
+<a name="l01003"></a>01003   <span class="keywordflow">case</span> AsmToken::LessGreater:
+<a name="l01004"></a>01004     Kind = <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6ae08639a6e0f682daf9d9b4809ee0cf7c">MCBinaryExpr::NE</a>;
+<a name="l01005"></a>01005     <span class="keywordflow">return</span> 3;
+<a name="l01006"></a>01006   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4ae56b4de70fb3488b3ae4ec998c0b6303">AsmToken::Less</a>:
+<a name="l01007"></a>01007     Kind = <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6a5f1f4297ecf2dafb48ff1cb0597faea8">MCBinaryExpr::LT</a>;
+<a name="l01008"></a>01008     <span class="keywordflow">return</span> 3;
+<a name="l01009"></a>01009   <span class="keywordflow">case</span> AsmToken::LessEqual:
+<a name="l01010"></a>01010     Kind = MCBinaryExpr::LTE;
+<a name="l01011"></a>01011     <span class="keywordflow">return</span> 3;
+<a name="l01012"></a>01012   <span class="keywordflow">case</span> AsmToken::Greater:
+<a name="l01013"></a>01013     Kind = <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6ace020af050937ea3b758ed0f2c07af50">MCBinaryExpr::GT</a>;
+<a name="l01014"></a>01014     <span class="keywordflow">return</span> 3;
+<a name="l01015"></a>01015   <span class="keywordflow">case</span> AsmToken::GreaterEqual:
+<a name="l01016"></a>01016     Kind = MCBinaryExpr::GTE;
+<a name="l01017"></a>01017     <span class="keywordflow">return</span> 3;
+<a name="l01018"></a>01018 
+<a name="l01019"></a>01019     <span class="comment">// Intermediate Precedence: <<, >></span>
+<a name="l01020"></a>01020   <span class="keywordflow">case</span> AsmToken::LessLess:
+<a name="l01021"></a>01021     Kind = MCBinaryExpr::Shl;
+<a name="l01022"></a>01022     <span class="keywordflow">return</span> 4;
+<a name="l01023"></a>01023   <span class="keywordflow">case</span> AsmToken::GreaterGreater:
+<a name="l01024"></a>01024     Kind = MCBinaryExpr::Shr;
+<a name="l01025"></a>01025     <span class="keywordflow">return</span> 4;
+<a name="l01026"></a>01026 
+<a name="l01027"></a>01027     <span class="comment">// High Intermediate Precedence: +, -</span>
+<a name="l01028"></a>01028   <span class="keywordflow">case</span> AsmToken::Plus:
+<a name="l01029"></a>01029     Kind = MCBinaryExpr::Add;
+<a name="l01030"></a>01030     <span class="keywordflow">return</span> 5;
+<a name="l01031"></a>01031   <span class="keywordflow">case</span> AsmToken::Minus:
+<a name="l01032"></a>01032     Kind = MCBinaryExpr::Sub;
+<a name="l01033"></a>01033     <span class="keywordflow">return</span> 5;
+<a name="l01034"></a>01034 
+<a name="l01035"></a>01035     <span class="comment">// Highest Precedence: *, /, %</span>
+<a name="l01036"></a>01036   <span class="keywordflow">case</span> AsmToken::Star:
+<a name="l01037"></a>01037     Kind = MCBinaryExpr::Mul;
+<a name="l01038"></a>01038     <span class="keywordflow">return</span> 6;
+<a name="l01039"></a>01039   <span class="keywordflow">case</span> AsmToken::Slash:
+<a name="l01040"></a>01040     Kind = MCBinaryExpr::Div;
+<a name="l01041"></a>01041     <span class="keywordflow">return</span> 6;
+<a name="l01042"></a>01042   <span class="keywordflow">case</span> AsmToken::Percent:
+<a name="l01043"></a>01043     Kind = MCBinaryExpr::Mod;
+<a name="l01044"></a>01044     <span class="keywordflow">return</span> 6;
+<a name="l01045"></a>01045   }
+<a name="l01046"></a>01046 }
+<a name="l01047"></a>01047 
+<a name="l01048"></a>01048 <span class="comment"></span>
+<a name="l01049"></a>01049 <span class="comment">/// ParseBinOpRHS - Parse all binary operators with precedence >= 'Precedence'.</span>
+<a name="l01050"></a>01050 <span class="comment">/// Res contains the LHS of the expression on input.</span>
+<a name="l01051"></a>01051 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseBinOpRHS(<span class="keywordtype">unsigned</span> Precedence, <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *&Res,
+<a name="l01052"></a>01052                               <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc) {
+<a name="l01053"></a>01053   <span class="keywordflow">while</span> (1) {
+<a name="l01054"></a>01054     <a class="code" href="classllvm_1_1MCBinaryExpr.html#afcbc8d46b6339dbbbe1af20c9c876629">MCBinaryExpr::Opcode</a> Kind = MCBinaryExpr::Add;
+<a name="l01055"></a>01055     <span class="keywordtype">unsigned</span> TokPrec = <a class="code" href="AsmParser_8cpp.html#a5208f0d260a049da2aa2bb8f59d0c2d1">getBinOpPrecedence</a>(Lexer.getKind(), <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a>);
+<a name="l01056"></a>01056 
+<a name="l01057"></a>01057     <span class="comment">// If the next token is lower precedence than we are allowed to eat, return</span>
+<a name="l01058"></a>01058     <span class="comment">// successfully with what we ate already.</span>
+<a name="l01059"></a>01059     <span class="keywordflow">if</span> (TokPrec < Precedence)
+<a name="l01060"></a>01060       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01061"></a>01061 
+<a name="l01062"></a>01062     Lex();
+<a name="l01063"></a>01063 
+<a name="l01064"></a>01064     <span class="comment">// Eat the next primary expression.</span>
+<a name="l01065"></a>01065     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *RHS;
+<a name="l01066"></a>01066     <span class="keywordflow">if</span> (ParsePrimaryExpr(RHS, EndLoc)) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01067"></a>01067 
+<a name="l01068"></a>01068     <span class="comment">// If BinOp binds less tightly with RHS than the operator after RHS, let</span>
+<a name="l01069"></a>01069     <span class="comment">// the pending operator take RHS as its LHS.</span>
+<a name="l01070"></a>01070     <a class="code" href="classllvm_1_1MCBinaryExpr.html#afcbc8d46b6339dbbbe1af20c9c876629">MCBinaryExpr::Opcode</a> <a class="code" href="DynamicLibrary_8cpp.html#a8efa6281b644eb26fe749fc5c2af4d66">Dummy</a>;
+<a name="l01071"></a>01071     <span class="keywordtype">unsigned</span> NextTokPrec = <a class="code" href="AsmParser_8cpp.html#a5208f0d260a049da2aa2bb8f59d0c2d1">getBinOpPrecedence</a>(Lexer.getKind(), <a class="code" href="DynamicLibrary_8cpp.html#a8efa6281b644eb26fe749fc5c2af4d66">Dummy</a>);
+<a name="l01072"></a>01072     <span class="keywordflow">if</span> (TokPrec < NextTokPrec) {
+<a name="l01073"></a>01073       <span class="keywordflow">if</span> (ParseBinOpRHS(Precedence+1, RHS, EndLoc)) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01074"></a>01074     }
+<a name="l01075"></a>01075 
+<a name="l01076"></a>01076     <span class="comment">// Merge LHS and RHS according to operator.</span>
+<a name="l01077"></a>01077     Res = MCBinaryExpr::Create(Kind, Res, RHS, getContext());
+<a name="l01078"></a>01078   }
+<a name="l01079"></a>01079 }
+<a name="l01080"></a>01080 <span class="comment"></span>
+<a name="l01081"></a>01081 <span class="comment">/// ParseStatement:</span>
+<a name="l01082"></a>01082 <span class="comment">///   ::= EndOfStatement</span>
+<a name="l01083"></a>01083 <span class="comment">///   ::= Label* Directive ...Operands... EndOfStatement</span>
+<a name="l01084"></a>01084 <span class="comment">///   ::= Label* Identifier OperandList* EndOfStatement</span>
+<a name="l01085"></a>01085 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseStatement(ParseStatementInfo &Info) {
+<a name="l01086"></a>01086   <span class="keywordflow">if</span> (Lexer.is(AsmToken::EndOfStatement)) {
+<a name="l01087"></a>01087     Out.AddBlankLine();
+<a name="l01088"></a>01088     Lex();
+<a name="l01089"></a>01089     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01090"></a>01090   }
+<a name="l01091"></a>01091 
+<a name="l01092"></a>01092   <span class="comment">// Statements always start with an identifier or are a full line comment.</span>
+<a name="l01093"></a>01093   <a class="code" href="classllvm_1_1AsmToken.html" title="AsmToken - Target independent representation for an assembler token.">AsmToken</a> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a> = getTok();
+<a name="l01094"></a>01094   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> IDLoc = ID.<a class="code" href="classllvm_1_1AsmToken.html#add7f9405ba7ad0891528a4cf5f47f45e">getLoc</a>();
+<a name="l01095"></a>01095   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal;
+<a name="l01096"></a>01096   <a class="code" href="classint64__t.html">int64_t</a> LocalLabelVal = -1;
+<a name="l01097"></a>01097   <span class="comment">// A full line comment is a '#' as the first token.</span>
+<a name="l01098"></a>01098   <span class="keywordflow">if</span> (Lexer.is(AsmToken::Hash))
+<a name="l01099"></a>01099     <span class="keywordflow">return</span> ParseCppHashLineFilenameComment(IDLoc);
+<a name="l01100"></a>01100 
+<a name="l01101"></a>01101   <span class="comment">// Allow an integer followed by a ':' as a directional local label.</span>
+<a name="l01102"></a>01102   <span class="keywordflow">if</span> (Lexer.is(AsmToken::Integer)) {
+<a name="l01103"></a>01103     LocalLabelVal = getTok().getIntVal();
+<a name="l01104"></a>01104     <span class="keywordflow">if</span> (LocalLabelVal < 0) {
+<a name="l01105"></a>01105       <span class="keywordflow">if</span> (!TheCondState.Ignore)
+<a name="l01106"></a>01106         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token at start of statement"</span>);
+<a name="l01107"></a>01107       IDVal = <span class="stringliteral">""</span>;
+<a name="l01108"></a>01108     }
+<a name="l01109"></a>01109     <span class="keywordflow">else</span> {
+<a name="l01110"></a>01110       IDVal = getTok().getString();
+<a name="l01111"></a>01111       Lex(); <span class="comment">// Consume the integer token to be used as an identifier token.</span>
+<a name="l01112"></a>01112       <span class="keywordflow">if</span> (Lexer.getKind() != AsmToken::Colon) {
+<a name="l01113"></a>01113         <span class="keywordflow">if</span> (!TheCondState.Ignore)
+<a name="l01114"></a>01114           <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token at start of statement"</span>);
+<a name="l01115"></a>01115       }
+<a name="l01116"></a>01116     }
+<a name="l01117"></a>01117 
+<a name="l01118"></a>01118   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Lexer.is(AsmToken::Dot)) {
+<a name="l01119"></a>01119     <span class="comment">// Treat '.' as a valid identifier in this context.</span>
+<a name="l01120"></a>01120     Lex();
+<a name="l01121"></a>01121     IDVal = <span class="stringliteral">"."</span>;
+<a name="l01122"></a>01122 
+<a name="l01123"></a>01123   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ParseIdentifier(IDVal)) {
+<a name="l01124"></a>01124     <span class="keywordflow">if</span> (!TheCondState.Ignore)
+<a name="l01125"></a>01125       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token at start of statement"</span>);
+<a name="l01126"></a>01126     IDVal = <span class="stringliteral">""</span>;
+<a name="l01127"></a>01127   }
+<a name="l01128"></a>01128 
+<a name="l01129"></a>01129 
+<a name="l01130"></a>01130   <span class="comment">// Handle conditional assembly here before checking for skipping.  We</span>
+<a name="l01131"></a>01131   <span class="comment">// have to do this so that .endif isn't skipped in a ".if 0" block for</span>
+<a name="l01132"></a>01132   <span class="comment">// example.</span>
+<a name="l01133"></a>01133   <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".if"</span>)
+<a name="l01134"></a>01134     <span class="keywordflow">return</span> ParseDirectiveIf(IDLoc);
+<a name="l01135"></a>01135   <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".ifb"</span>)
+<a name="l01136"></a>01136     <span class="keywordflow">return</span> ParseDirectiveIfb(IDLoc, <span class="keyword">true</span>);
+<a name="l01137"></a>01137   <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".ifnb"</span>)
+<a name="l01138"></a>01138     <span class="keywordflow">return</span> ParseDirectiveIfb(IDLoc, <span class="keyword">false</span>);
+<a name="l01139"></a>01139   <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".ifc"</span>)
+<a name="l01140"></a>01140     <span class="keywordflow">return</span> ParseDirectiveIfc(IDLoc, <span class="keyword">true</span>);
+<a name="l01141"></a>01141   <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".ifnc"</span>)
+<a name="l01142"></a>01142     <span class="keywordflow">return</span> ParseDirectiveIfc(IDLoc, <span class="keyword">false</span>);
+<a name="l01143"></a>01143   <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".ifdef"</span>)
+<a name="l01144"></a>01144     <span class="keywordflow">return</span> ParseDirectiveIfdef(IDLoc, <span class="keyword">true</span>);
+<a name="l01145"></a>01145   <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".ifndef"</span> || IDVal == <span class="stringliteral">".ifnotdef"</span>)
+<a name="l01146"></a>01146     <span class="keywordflow">return</span> ParseDirectiveIfdef(IDLoc, <span class="keyword">false</span>);
+<a name="l01147"></a>01147   <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".elseif"</span>)
+<a name="l01148"></a>01148     <span class="keywordflow">return</span> ParseDirectiveElseIf(IDLoc);
+<a name="l01149"></a>01149   <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".else"</span>)
+<a name="l01150"></a>01150     <span class="keywordflow">return</span> ParseDirectiveElse(IDLoc);
+<a name="l01151"></a>01151   <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".endif"</span>)
+<a name="l01152"></a>01152     <span class="keywordflow">return</span> ParseDirectiveEndIf(IDLoc);
+<a name="l01153"></a>01153 
+<a name="l01154"></a>01154   <span class="comment">// If we are in a ".if 0" block, ignore this statement.</span>
+<a name="l01155"></a>01155   <span class="keywordflow">if</span> (TheCondState.Ignore) {
+<a name="l01156"></a>01156     EatToEndOfStatement();
+<a name="l01157"></a>01157     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01158"></a>01158   }
+<a name="l01159"></a>01159 
+<a name="l01160"></a>01160   <span class="comment">// FIXME: Recurse on local labels?</span>
+<a name="l01161"></a>01161 
+<a name="l01162"></a>01162   <span class="comment">// See what kind of statement we have.</span>
+<a name="l01163"></a>01163   <span class="keywordflow">switch</span> (Lexer.getKind()) {
+<a name="l01164"></a>01164   <span class="keywordflow">case</span> AsmToken::Colon: {
+<a name="l01165"></a>01165     CheckForValidSection();
+<a name="l01166"></a>01166 
+<a name="l01167"></a>01167     <span class="comment">// identifier ':'   -> Label.</span>
+<a name="l01168"></a>01168     Lex();
+<a name="l01169"></a>01169 
+<a name="l01170"></a>01170     <span class="comment">// Diagnose attempt to use '.' as a label.</span>
+<a name="l01171"></a>01171     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">"."</span>)
+<a name="l01172"></a>01172       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(IDLoc, <span class="stringliteral">"invalid use of pseudo-symbol '.' as a label"</span>);
+<a name="l01173"></a>01173 
+<a name="l01174"></a>01174     <span class="comment">// Diagnose attempt to use a variable as a label.</span>
+<a name="l01175"></a>01175     <span class="comment">//</span>
+<a name="l01176"></a>01176     <span class="comment">// FIXME: Diagnostics. Note the location of the definition as a label.</span>
+<a name="l01177"></a>01177     <span class="comment">// FIXME: This doesn't diagnose assignment to a symbol which has been</span>
+<a name="l01178"></a>01178     <span class="comment">// implicitly marked as external.</span>
+<a name="l01179"></a>01179     <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym;
+<a name="l01180"></a>01180     <span class="keywordflow">if</span> (LocalLabelVal == -1)
+<a name="l01181"></a>01181       Sym = getContext().GetOrCreateSymbol(IDVal);
+<a name="l01182"></a>01182     <span class="keywordflow">else</span>
+<a name="l01183"></a>01183       Sym = Ctx.CreateDirectionalLocalSymbol(LocalLabelVal);
+<a name="l01184"></a>01184     <span class="keywordflow">if</span> (!Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a2260c62e12734815ad60dc038bf514f5" title="isUndefined - Check if this symbol undefined (i.e., implicitly defined).">isUndefined</a>() || Sym-><a class="code" href="classllvm_1_1MCSymbol.html#ac542b727bb1c9dd954198bf3906912ce" title="isVariable - Check if this is a variable symbol.">isVariable</a>())
+<a name="l01185"></a>01185       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(IDLoc, <span class="stringliteral">"invalid symbol redefinition"</span>);
+<a name="l01186"></a>01186 
+<a name="l01187"></a>01187     <span class="comment">// Emit the label.</span>
+<a name="l01188"></a>01188     Out.EmitLabel(Sym);
+<a name="l01189"></a>01189 
+<a name="l01190"></a>01190     <span class="comment">// If we are generating dwarf for assembly source files then gather the</span>
+<a name="l01191"></a>01191     <span class="comment">// info to make a dwarf label entry for this label if needed.</span>
+<a name="l01192"></a>01192     <span class="keywordflow">if</span> (getContext().getGenDwarfForAssembly())
+<a name="l01193"></a>01193       MCGenDwarfLabelEntry::Make(Sym, &getStreamer(), getSourceManager(),
+<a name="l01194"></a>01194                                  IDLoc);
+<a name="l01195"></a>01195 
+<a name="l01196"></a>01196     <span class="comment">// Consume any end of statement token, if present, to avoid spurious</span>
+<a name="l01197"></a>01197     <span class="comment">// AddBlankLine calls().</span>
+<a name="l01198"></a>01198     <span class="keywordflow">if</span> (Lexer.is(AsmToken::EndOfStatement)) {
+<a name="l01199"></a>01199       Lex();
+<a name="l01200"></a>01200       <span class="keywordflow">if</span> (Lexer.is(<a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>))
+<a name="l01201"></a>01201         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01202"></a>01202     }
+<a name="l01203"></a>01203 
+<a name="l01204"></a>01204     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01205"></a>01205   }
+<a name="l01206"></a>01206 
+<a name="l01207"></a>01207   <span class="keywordflow">case</span> AsmToken::Equal:
+<a name="l01208"></a>01208     <span class="comment">// identifier '=' ... -> assignment statement</span>
+<a name="l01209"></a>01209     Lex();
+<a name="l01210"></a>01210 
+<a name="l01211"></a>01211     <span class="keywordflow">return</span> ParseAssignment(IDVal, <span class="keyword">true</span>);
+<a name="l01212"></a>01212 
+<a name="l01213"></a>01213   <span class="keywordflow">default</span>: <span class="comment">// Normal instruction or directive.</span>
+<a name="l01214"></a>01214     <span class="keywordflow">break</span>;
+<a name="l01215"></a>01215   }
+<a name="l01216"></a>01216 
+<a name="l01217"></a>01217   <span class="comment">// If macros are enabled, check to see if this is a macro instantiation.</span>
+<a name="l01218"></a>01218   <span class="keywordflow">if</span> (MacrosEnabled)
+<a name="l01219"></a>01219     <span class="keywordflow">if</span> (<span class="keyword">const</span> Macro *M = MacroMap.lookup(IDVal))
+<a name="l01220"></a>01220       <span class="keywordflow">return</span> HandleMacroEntry(IDVal, IDLoc, M);
+<a name="l01221"></a>01221 
+<a name="l01222"></a>01222   <span class="comment">// Otherwise, we have a normal instruction or directive.</span>
+<a name="l01223"></a>01223   <span class="keywordflow">if</span> (IDVal[0] == <span class="charliteral">'.'</span> && IDVal != <span class="stringliteral">"."</span>) {
+<a name="l01224"></a>01224 
+<a name="l01225"></a>01225     <span class="comment">// Target hook for parsing target specific directives.</span>
+<a name="l01226"></a>01226     <span class="keywordflow">if</span> (!getTargetParser().ParseDirective(ID))
+<a name="l01227"></a>01227       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01228"></a>01228 
+<a name="l01229"></a>01229     <span class="comment">// Assembler features</span>
+<a name="l01230"></a>01230     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".set"</span> || IDVal == <span class="stringliteral">".equ"</span>)
+<a name="l01231"></a>01231       <span class="keywordflow">return</span> ParseDirectiveSet(IDVal, <span class="keyword">true</span>);
+<a name="l01232"></a>01232     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".equiv"</span>)
+<a name="l01233"></a>01233       <span class="keywordflow">return</span> ParseDirectiveSet(IDVal, <span class="keyword">false</span>);
+<a name="l01234"></a>01234 
+<a name="l01235"></a>01235     <span class="comment">// Data directives</span>
+<a name="l01236"></a>01236 
+<a name="l01237"></a>01237     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".ascii"</span>)
+<a name="l01238"></a>01238       <span class="keywordflow">return</span> ParseDirectiveAscii(IDVal, <span class="keyword">false</span>);
+<a name="l01239"></a>01239     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".asciz"</span> || IDVal == <span class="stringliteral">".string"</span>)
+<a name="l01240"></a>01240       <span class="keywordflow">return</span> ParseDirectiveAscii(IDVal, <span class="keyword">true</span>);
+<a name="l01241"></a>01241 
+<a name="l01242"></a>01242     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".byte"</span>)
+<a name="l01243"></a>01243       <span class="keywordflow">return</span> ParseDirectiveValue(1);
+<a name="l01244"></a>01244     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".short"</span>)
+<a name="l01245"></a>01245       <span class="keywordflow">return</span> ParseDirectiveValue(2);
+<a name="l01246"></a>01246     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".value"</span>)
+<a name="l01247"></a>01247       <span class="keywordflow">return</span> ParseDirectiveValue(2);
+<a name="l01248"></a>01248     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".2byte"</span>)
+<a name="l01249"></a>01249       <span class="keywordflow">return</span> ParseDirectiveValue(2);
+<a name="l01250"></a>01250     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".long"</span>)
+<a name="l01251"></a>01251       <span class="keywordflow">return</span> ParseDirectiveValue(4);
+<a name="l01252"></a>01252     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".int"</span>)
+<a name="l01253"></a>01253       <span class="keywordflow">return</span> ParseDirectiveValue(4);
+<a name="l01254"></a>01254     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".4byte"</span>)
+<a name="l01255"></a>01255       <span class="keywordflow">return</span> ParseDirectiveValue(4);
+<a name="l01256"></a>01256     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".quad"</span>)
+<a name="l01257"></a>01257       <span class="keywordflow">return</span> ParseDirectiveValue(8);
+<a name="l01258"></a>01258     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".8byte"</span>)
+<a name="l01259"></a>01259       <span class="keywordflow">return</span> ParseDirectiveValue(8);
+<a name="l01260"></a>01260     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".single"</span> || IDVal == <span class="stringliteral">".float"</span>)
+<a name="l01261"></a>01261       <span class="keywordflow">return</span> ParseDirectiveRealValue(APFloat::IEEEsingle);
+<a name="l01262"></a>01262     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".double"</span>)
+<a name="l01263"></a>01263       <span class="keywordflow">return</span> ParseDirectiveRealValue(APFloat::IEEEdouble);
+<a name="l01264"></a>01264 
+<a name="l01265"></a>01265     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".align"</span>) {
+<a name="l01266"></a>01266       <span class="keywordtype">bool</span> IsPow2 = !getContext().getAsmInfo().getAlignmentIsInBytes();
+<a name="l01267"></a>01267       <span class="keywordflow">return</span> ParseDirectiveAlign(IsPow2, <span class="comment">/*ExprSize=*/</span>1);
+<a name="l01268"></a>01268     }
+<a name="l01269"></a>01269     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".align32"</span>) {
+<a name="l01270"></a>01270       <span class="keywordtype">bool</span> IsPow2 = !getContext().getAsmInfo().getAlignmentIsInBytes();
+<a name="l01271"></a>01271       <span class="keywordflow">return</span> ParseDirectiveAlign(IsPow2, <span class="comment">/*ExprSize=*/</span>4);
+<a name="l01272"></a>01272     }
+<a name="l01273"></a>01273     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".balign"</span>)
+<a name="l01274"></a>01274       <span class="keywordflow">return</span> ParseDirectiveAlign(<span class="comment">/*IsPow2=*/</span><span class="keyword">false</span>, <span class="comment">/*ExprSize=*/</span>1);
+<a name="l01275"></a>01275     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".balignw"</span>)
+<a name="l01276"></a>01276       <span class="keywordflow">return</span> ParseDirectiveAlign(<span class="comment">/*IsPow2=*/</span><span class="keyword">false</span>, <span class="comment">/*ExprSize=*/</span>2);
+<a name="l01277"></a>01277     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".balignl"</span>)
+<a name="l01278"></a>01278       <span class="keywordflow">return</span> ParseDirectiveAlign(<span class="comment">/*IsPow2=*/</span><span class="keyword">false</span>, <span class="comment">/*ExprSize=*/</span>4);
+<a name="l01279"></a>01279     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".p2align"</span>)
+<a name="l01280"></a>01280       <span class="keywordflow">return</span> ParseDirectiveAlign(<span class="comment">/*IsPow2=*/</span><span class="keyword">true</span>, <span class="comment">/*ExprSize=*/</span>1);
+<a name="l01281"></a>01281     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".p2alignw"</span>)
+<a name="l01282"></a>01282       <span class="keywordflow">return</span> ParseDirectiveAlign(<span class="comment">/*IsPow2=*/</span><span class="keyword">true</span>, <span class="comment">/*ExprSize=*/</span>2);
+<a name="l01283"></a>01283     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".p2alignl"</span>)
+<a name="l01284"></a>01284       <span class="keywordflow">return</span> ParseDirectiveAlign(<span class="comment">/*IsPow2=*/</span><span class="keyword">true</span>, <span class="comment">/*ExprSize=*/</span>4);
+<a name="l01285"></a>01285 
+<a name="l01286"></a>01286     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".org"</span>)
+<a name="l01287"></a>01287       <span class="keywordflow">return</span> ParseDirectiveOrg();
+<a name="l01288"></a>01288 
+<a name="l01289"></a>01289     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".fill"</span>)
+<a name="l01290"></a>01290       <span class="keywordflow">return</span> ParseDirectiveFill();
+<a name="l01291"></a>01291     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".space"</span> || IDVal == <span class="stringliteral">".skip"</span>)
+<a name="l01292"></a>01292       <span class="keywordflow">return</span> ParseDirectiveSpace();
+<a name="l01293"></a>01293     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".zero"</span>)
+<a name="l01294"></a>01294       <span class="keywordflow">return</span> ParseDirectiveZero();
+<a name="l01295"></a>01295 
+<a name="l01296"></a>01296     <span class="comment">// Symbol attribute directives</span>
+<a name="l01297"></a>01297 
+<a name="l01298"></a>01298     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".extern"</span>) {
+<a name="l01299"></a>01299       EatToEndOfStatement(); <span class="comment">// .extern is the default, ignore it.</span>
+<a name="l01300"></a>01300       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01301"></a>01301     }
+<a name="l01302"></a>01302     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".globl"</span> || IDVal == <span class="stringliteral">".global"</span>)
+<a name="l01303"></a>01303       <span class="keywordflow">return</span> ParseDirectiveSymbolAttribute(<a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243aa1e94c23156e37812e4d6e078af1d728" title=".type _foo, ">MCSA_Global</a>);
+<a name="l01304"></a>01304     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".indirect_symbol"</span>)
+<a name="l01305"></a>01305       <span class="keywordflow">return</span> ParseDirectiveSymbolAttribute(<a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243a9c4d91f21dab6846f0eb7cdd8608c16a" title=".indirect_symbol (MachO)">MCSA_IndirectSymbol</a>);
+<a name="l01306"></a>01306     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".lazy_reference"</span>)
+<a name="l01307"></a>01307       <span class="keywordflow">return</span> ParseDirectiveSymbolAttribute(<a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243a6f8590ba0f71b1b8b0e937695e303208" title=".lazy_reference (MachO)">MCSA_LazyReference</a>);
+<a name="l01308"></a>01308     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".no_dead_strip"</span>)
+<a name="l01309"></a>01309       <span class="keywordflow">return</span> ParseDirectiveSymbolAttribute(<a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243afb34d5700d536c3f8f8a5004985d1f57" title=".no_dead_strip (MachO)">MCSA_NoDeadStrip</a>);
+<a name="l01310"></a>01310     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".symbol_resolver"</span>)
+<a name="l01311"></a>01311       <span class="keywordflow">return</span> ParseDirectiveSymbolAttribute(<a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243a83196df34bcdda178fae802a4a06a6dc" title=".symbol_resolver (MachO)">MCSA_SymbolResolver</a>);
+<a name="l01312"></a>01312     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".private_extern"</span>)
+<a name="l01313"></a>01313       <span class="keywordflow">return</span> ParseDirectiveSymbolAttribute(<a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243a39ad38d82f889bf4c82e539beb859d05" title=".private_extern (MachO)">MCSA_PrivateExtern</a>);
+<a name="l01314"></a>01314     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".reference"</span>)
+<a name="l01315"></a>01315       <span class="keywordflow">return</span> ParseDirectiveSymbolAttribute(<a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243a80891606fbdc946b4085496f58aafd62" title=".reference (MachO)">MCSA_Reference</a>);
+<a name="l01316"></a>01316     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".weak_definition"</span>)
+<a name="l01317"></a>01317       <span class="keywordflow">return</span> ParseDirectiveSymbolAttribute(<a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243a9cd0febd9a535eb96c33815707bab481" title=".weak_definition (MachO)">MCSA_WeakDefinition</a>);
+<a name="l01318"></a>01318     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".weak_reference"</span>)
+<a name="l01319"></a>01319       <span class="keywordflow">return</span> ParseDirectiveSymbolAttribute(<a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243a42ec27e2fd185b27d0fbf1aaf0bfd214" title=".weak_reference (MachO)">MCSA_WeakReference</a>);
+<a name="l01320"></a>01320     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".weak_def_can_be_hidden"</span>)
+<a name="l01321"></a>01321       <span class="keywordflow">return</span> ParseDirectiveSymbolAttribute(<a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243a0506d51c6914f1b55fec60c97d4d8cc9" title=".weak_def_can_be_hidden (MachO)">MCSA_WeakDefAutoPrivate</a>);
+<a name="l01322"></a>01322 
+<a name="l01323"></a>01323     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".comm"</span> || IDVal == <span class="stringliteral">".common"</span>)
+<a name="l01324"></a>01324       <span class="keywordflow">return</span> ParseDirectiveComm(<span class="comment">/*IsLocal=*/</span><span class="keyword">false</span>);
+<a name="l01325"></a>01325     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".lcomm"</span>)
+<a name="l01326"></a>01326       <span class="keywordflow">return</span> ParseDirectiveComm(<span class="comment">/*IsLocal=*/</span><span class="keyword">true</span>);
+<a name="l01327"></a>01327 
+<a name="l01328"></a>01328     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".abort"</span>)
+<a name="l01329"></a>01329       <span class="keywordflow">return</span> ParseDirectiveAbort();
+<a name="l01330"></a>01330     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".include"</span>)
+<a name="l01331"></a>01331       <span class="keywordflow">return</span> ParseDirectiveInclude();
+<a name="l01332"></a>01332     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".incbin"</span>)
+<a name="l01333"></a>01333       <span class="keywordflow">return</span> ParseDirectiveIncbin();
+<a name="l01334"></a>01334 
+<a name="l01335"></a>01335     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".code16"</span> || IDVal == <span class="stringliteral">".code16gcc"</span>)
+<a name="l01336"></a>01336       <span class="keywordflow">return</span> TokError(<a class="code" href="classllvm_1_1Twine.html">Twine</a>(IDVal) + <span class="stringliteral">" not supported yet"</span>);
+<a name="l01337"></a>01337 
+<a name="l01338"></a>01338     <span class="comment">// Macro-like directives</span>
+<a name="l01339"></a>01339     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".rept"</span>)
+<a name="l01340"></a>01340       <span class="keywordflow">return</span> ParseDirectiveRept(IDLoc);
+<a name="l01341"></a>01341     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".irp"</span>)
+<a name="l01342"></a>01342       <span class="keywordflow">return</span> ParseDirectiveIrp(IDLoc);
+<a name="l01343"></a>01343     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".irpc"</span>)
+<a name="l01344"></a>01344       <span class="keywordflow">return</span> ParseDirectiveIrpc(IDLoc);
+<a name="l01345"></a>01345     <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".endr"</span>)
+<a name="l01346"></a>01346       <span class="keywordflow">return</span> ParseDirectiveEndr(IDLoc);
+<a name="l01347"></a>01347 
+<a name="l01348"></a>01348     <span class="comment">// Look up the handler in the handler table.</span>
+<a name="l01349"></a>01349     std::pair<MCAsmParserExtension*, DirectiveHandler> Handler =
+<a name="l01350"></a>01350       DirectiveMap.lookup(IDVal);
+<a name="l01351"></a>01351     <span class="keywordflow">if</span> (Handler.first)
+<a name="l01352"></a>01352       <span class="keywordflow">return</span> (*Handler.second)(Handler.first, IDVal, IDLoc);
+<a name="l01353"></a>01353 
+<a name="l01354"></a>01354 
+<a name="l01355"></a>01355     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(IDLoc, <span class="stringliteral">"unknown directive"</span>);
+<a name="l01356"></a>01356   }
+<a name="l01357"></a>01357 
+<a name="l01358"></a>01358   <span class="comment">// _emit</span>
+<a name="l01359"></a>01359   <span class="keywordflow">if</span> (ParsingInlineAsm && IDVal == <span class="stringliteral">"_emit"</span>)
+<a name="l01360"></a>01360     <span class="keywordflow">return</span> ParseDirectiveEmit(IDLoc, Info);
+<a name="l01361"></a>01361 
+<a name="l01362"></a>01362   CheckForValidSection();
+<a name="l01363"></a>01363 
+<a name="l01364"></a>01364   <span class="comment">// Canonicalize the opcode to lower case.</span>
+<a name="l01365"></a>01365   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> OpcodeStr;
+<a name="l01366"></a>01366   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = IDVal.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>(); i != e; ++i)
+<a name="l01367"></a>01367     OpcodeStr.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(tolower(IDVal[i]));
+<a name="l01368"></a>01368 
+<a name="l01369"></a>01369   <a class="code" href="structllvm_1_1ParseInstructionInfo.html">ParseInstructionInfo</a> IInfo(Info.AsmRewrites);
+<a name="l01370"></a>01370   <span class="keywordtype">bool</span> HadError = getTargetParser().ParseInstruction(IInfo, OpcodeStr.<a class="code" href="classllvm_1_1SmallString.html#a9926a62dd0ca26ed856052335091a54d" title="Explicit conversion to StringRef.">str</a>(),
+<a name="l01371"></a>01371                                                      IDLoc,Info.ParsedOperands);
+<a name="l01372"></a>01372 
+<a name="l01373"></a>01373   <span class="comment">// Dump the parsed representation, if requested.</span>
+<a name="l01374"></a>01374   <span class="keywordflow">if</span> (getShowParsedOperands()) {
+<a name="l01375"></a>01375     <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> Str;
+<a name="l01376"></a>01376     <a class="code" href="classllvm_1_1raw__svector__ostream.html">raw_svector_ostream</a> OS(Str);
+<a name="l01377"></a>01377     OS << <span class="stringliteral">"parsed instruction: ["</span>;
+<a name="l01378"></a>01378     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != Info.ParsedOperands.size(); ++i) {
+<a name="l01379"></a>01379       <span class="keywordflow">if</span> (i != 0)
+<a name="l01380"></a>01380         OS << <span class="stringliteral">", "</span>;
+<a name="l01381"></a>01381       Info.ParsedOperands[i]->print(OS);
+<a name="l01382"></a>01382     }
+<a name="l01383"></a>01383     OS << <span class="stringliteral">"]"</span>;
+<a name="l01384"></a>01384 
+<a name="l01385"></a>01385     <a class="code" href="namespacellvm.html#a6fbb0f04208840cc02fdcfec56e338d9">PrintMessage</a>(IDLoc, SourceMgr::DK_Note, OS.str());
+<a name="l01386"></a>01386   }
+<a name="l01387"></a>01387 
+<a name="l01388"></a>01388   <span class="comment">// If we are generating dwarf for assembly source files and the current</span>
+<a name="l01389"></a>01389   <span class="comment">// section is the initial text section then generate a .loc directive for</span>
+<a name="l01390"></a>01390   <span class="comment">// the instruction.</span>
+<a name="l01391"></a>01391   <span class="keywordflow">if</span> (!HadError && getContext().getGenDwarfForAssembly() &&
+<a name="l01392"></a>01392       getContext().getGenDwarfSection() == getStreamer().getCurrentSection() ) {
+<a name="l01393"></a>01393 
+<a name="l01394"></a>01394      <span class="keywordtype">unsigned</span> Line = <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#a02b1d94b61fb355d55b44c56f0142fc6">FindLineNumber</a>(IDLoc, CurBuffer);
+<a name="l01395"></a>01395 
+<a name="l01396"></a>01396      <span class="comment">// If we previously parsed a cpp hash file line comment then make sure the</span>
+<a name="l01397"></a>01397      <span class="comment">// current Dwarf File is for the CppHashFilename if not then emit the</span>
+<a name="l01398"></a>01398      <span class="comment">// Dwarf File table for it and adjust the line number for the .loc.</span>
+<a name="l01399"></a>01399      <span class="keyword">const</span> std::vector<MCDwarfFile *> &MCDwarfFiles =
+<a name="l01400"></a>01400        getContext().getMCDwarfFiles();
+<a name="l01401"></a>01401      <span class="keywordflow">if</span> (CppHashFilename.size() != 0) {
+<a name="l01402"></a>01402        <span class="keywordflow">if</span>(MCDwarfFiles[getContext().getGenDwarfFileNumber()]->getName() !=
+<a name="l01403"></a>01403           CppHashFilename)
+<a name="l01404"></a>01404    getStreamer().EmitDwarfFileDirective(
+<a name="l01405"></a>01405      getContext().nextGenDwarfFileNumber(), <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(), CppHashFilename);
+<a name="l01406"></a>01406 
+<a name="l01407"></a>01407        <span class="keywordtype">unsigned</span> CppHashLocLineNo = <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#a02b1d94b61fb355d55b44c56f0142fc6">FindLineNumber</a>(CppHashLoc,CppHashBuf);
+<a name="l01408"></a>01408        Line = CppHashLineNumber - 1 + (Line - CppHashLocLineNo);
+<a name="l01409"></a>01409      }
+<a name="l01410"></a>01410 
+<a name="l01411"></a>01411     getStreamer().EmitDwarfLocDirective(getContext().getGenDwarfFileNumber(),
+<a name="l01412"></a>01412                                         Line, 0, <a class="code" href="MCDwarf_8h.html#abc3534e4318dd6126f55a94635209c93">DWARF2_LINE_DEFAULT_IS_STMT</a> ?
+<a name="l01413"></a>01413                                         <a class="code" href="MCDwarf_8h.html#a377ba69923635f8154cad5784be89ff6">DWARF2_FLAG_IS_STMT</a> : 0, 0, 0,
+<a name="l01414"></a>01414                                         <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>());
+<a name="l01415"></a>01415   }
+<a name="l01416"></a>01416 
+<a name="l01417"></a>01417   <span class="comment">// If parsing succeeded, match the instruction.</span>
+<a name="l01418"></a>01418   <span class="keywordflow">if</span> (!HadError) {
+<a name="l01419"></a>01419     <span class="keywordtype">unsigned</span> ErrorInfo;
+<a name="l01420"></a>01420     HadError = getTargetParser().MatchAndEmitInstruction(IDLoc, Info.Opcode,
+<a name="l01421"></a>01421                                                          Info.ParsedOperands,
+<a name="l01422"></a>01422                                                          Out, ErrorInfo,
+<a name="l01423"></a>01423                                                          ParsingInlineAsm);
+<a name="l01424"></a>01424   }
+<a name="l01425"></a>01425 
+<a name="l01426"></a>01426   <span class="comment">// Don't skip the rest of the line, the instruction parser is responsible for</span>
+<a name="l01427"></a>01427   <span class="comment">// that.</span>
+<a name="l01428"></a>01428   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01429"></a>01429 }
+<a name="l01430"></a>01430 <span class="comment"></span>
+<a name="l01431"></a>01431 <span class="comment">/// EatToEndOfLine uses the Lexer to eat the characters to the end of the line</span>
+<a name="l01432"></a>01432 <span class="comment">/// since they may not be able to be tokenized to get to the end of line token.</span>
+<a name="l01433"></a>01433 <span class="comment"></span><span class="keywordtype">void</span> AsmParser::EatToEndOfLine() {
+<a name="l01434"></a>01434   <span class="keywordflow">if</span> (!Lexer.is(AsmToken::EndOfStatement))
+<a name="l01435"></a>01435     Lexer.LexUntilEndOfLine();
+<a name="l01436"></a>01436  <span class="comment">// Eat EOL.</span>
+<a name="l01437"></a>01437  Lex();
+<a name="l01438"></a>01438 }
+<a name="l01439"></a>01439 <span class="comment"></span>
+<a name="l01440"></a>01440 <span class="comment">/// ParseCppHashLineFilenameComment as this:</span>
+<a name="l01441"></a>01441 <span class="comment">///   ::= # number "filename"</span>
+<a name="l01442"></a>01442 <span class="comment">/// or just as a full line comment if it doesn't have a number and a string.</span>
+<a name="l01443"></a>01443 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseCppHashLineFilenameComment(<span class="keyword">const</span> <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &L) {
+<a name="l01444"></a>01444   Lex(); <span class="comment">// Eat the hash token.</span>
+<a name="l01445"></a>01445 
+<a name="l01446"></a>01446   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Integer)) {
+<a name="l01447"></a>01447     <span class="comment">// Consume the line since in cases it is not a well-formed line directive,</span>
+<a name="l01448"></a>01448     <span class="comment">// as if were simply a full line comment.</span>
+<a name="l01449"></a>01449     EatToEndOfLine();
+<a name="l01450"></a>01450     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01451"></a>01451   }
+<a name="l01452"></a>01452 
+<a name="l01453"></a>01453   <a class="code" href="classint64__t.html">int64_t</a> LineNumber = getTok().getIntVal();
+<a name="l01454"></a>01454   Lex();
+<a name="l01455"></a>01455 
+<a name="l01456"></a>01456   <span class="keywordflow">if</span> (getLexer().isNot(<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a394bf05139245f8e3ee22865dc9c1caf">AsmToken::String</a>)) {
+<a name="l01457"></a>01457     EatToEndOfLine();
+<a name="l01458"></a>01458     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01459"></a>01459   }
+<a name="l01460"></a>01460 
+<a name="l01461"></a>01461   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Filename = getTok().getString();
+<a name="l01462"></a>01462   <span class="comment">// Get rid of the enclosing quotes.</span>
+<a name="l01463"></a>01463   Filename = Filename.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(1, Filename.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>()-2);
+<a name="l01464"></a>01464 
+<a name="l01465"></a>01465   <span class="comment">// Save the SMLoc, Filename and LineNumber for later use by diagnostics.</span>
+<a name="l01466"></a>01466   CppHashLoc = L;
+<a name="l01467"></a>01467   CppHashFilename = Filename;
+<a name="l01468"></a>01468   CppHashLineNumber = LineNumber;
+<a name="l01469"></a>01469   CppHashBuf = CurBuffer;
+<a name="l01470"></a>01470 
+<a name="l01471"></a>01471   <span class="comment">// Ignore any trailing characters, they're just comment.</span>
+<a name="l01472"></a>01472   EatToEndOfLine();
+<a name="l01473"></a>01473   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01474"></a>01474 }
+<a name="l01475"></a>01475 <span class="comment"></span>
+<a name="l01476"></a>01476 <span class="comment">/// DiagHandler - will use the last parsed cpp hash line filename comment</span>
+<a name="l01477"></a>01477 <span class="comment">/// for the Filename and LineNo if any in the diagnostic.</span>
+<a name="l01478"></a>01478 <span class="comment"></span><span class="keywordtype">void</span> AsmParser::DiagHandler(<span class="keyword">const</span> <a class="code" href="classllvm_1_1SMDiagnostic.html">SMDiagnostic</a> &Diag, <span class="keywordtype">void</span> *Context) {
+<a name="l01479"></a>01479   <span class="keyword">const</span> AsmParser *Parser = <span class="keyword">static_cast<</span><span class="keyword">const </span>AsmParser*<span class="keyword">></span>(Context);
+<a name="l01480"></a>01480   <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &OS = <a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>();
+<a name="l01481"></a>01481 
+<a name="l01482"></a>01482   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SourceMgr.html">SourceMgr</a> &DiagSrcMgr = *Diag.<a class="code" href="classllvm_1_1SMDiagnostic.html#a2c6931b6557bb0cc586aa408eb5006f1">getSourceMgr</a>();
+<a name="l01483"></a>01483   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &DiagLoc = Diag.<a class="code" href="classllvm_1_1SMDiagnostic.html#a304424a186d8a306a7b10eb6dd4aeac4">getLoc</a>();
+<a name="l01484"></a>01484   <span class="keywordtype">int</span> DiagBuf = DiagSrcMgr.<a class="code" href="classllvm_1_1SourceMgr.html#a186847cf89bcc0c311885b7096f37ea4">FindBufferContainingLoc</a>(DiagLoc);
+<a name="l01485"></a>01485   <span class="keywordtype">int</span> CppHashBuf = Parser->SrcMgr.FindBufferContainingLoc(Parser->CppHashLoc);
+<a name="l01486"></a>01486 
+<a name="l01487"></a>01487   <span class="comment">// Like SourceMgr::PrintMessage() we need to print the include stack if any</span>
+<a name="l01488"></a>01488   <span class="comment">// before printing the message.</span>
+<a name="l01489"></a>01489   <span class="keywordtype">int</span> DiagCurBuffer = DiagSrcMgr.<a class="code" href="classllvm_1_1SourceMgr.html#a186847cf89bcc0c311885b7096f37ea4">FindBufferContainingLoc</a>(DiagLoc);
+<a name="l01490"></a>01490   <span class="keywordflow">if</span> (!Parser->SavedDiagHandler && DiagCurBuffer > 0) {
+<a name="l01491"></a>01491      <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> ParentIncludeLoc = DiagSrcMgr.<a class="code" href="classllvm_1_1SourceMgr.html#a9808c13b6da1ee5a7ca7304a9b5e6b93">getParentIncludeLoc</a>(DiagCurBuffer);
+<a name="l01492"></a>01492      DiagSrcMgr.<a class="code" href="classllvm_1_1SourceMgr.html#a9fb0702f2c6e10c838d74e9ed173e722">PrintIncludeStack</a>(ParentIncludeLoc, OS);
+<a name="l01493"></a>01493   }
+<a name="l01494"></a>01494 
+<a name="l01495"></a>01495   <span class="comment">// If we have not parsed a cpp hash line filename comment or the source </span>
+<a name="l01496"></a>01496   <span class="comment">// manager changed or buffer changed (like in a nested include) then just</span>
+<a name="l01497"></a>01497   <span class="comment">// print the normal diagnostic using its Filename and LineNo.</span>
+<a name="l01498"></a>01498   <span class="keywordflow">if</span> (!Parser->CppHashLineNumber ||
+<a name="l01499"></a>01499       &DiagSrcMgr != &Parser->SrcMgr ||
+<a name="l01500"></a>01500       DiagBuf != CppHashBuf) {
+<a name="l01501"></a>01501     <span class="keywordflow">if</span> (Parser->SavedDiagHandler)
+<a name="l01502"></a>01502       Parser->SavedDiagHandler(Diag, Parser->SavedDiagContext);
+<a name="l01503"></a>01503     <span class="keywordflow">else</span>
+<a name="l01504"></a>01504       Diag.<a class="code" href="classllvm_1_1SMDiagnostic.html#a0fe081a0bfd74d489cd91e001a8a3f03">print</a>(0, OS);
+<a name="l01505"></a>01505     <span class="keywordflow">return</span>;
+<a name="l01506"></a>01506   }
+<a name="l01507"></a>01507 
+<a name="l01508"></a>01508   <span class="comment">// Use the CppHashFilename and calculate a line number based on the </span>
+<a name="l01509"></a>01509   <span class="comment">// CppHashLoc and CppHashLineNumber relative to this Diag's SMLoc for</span>
+<a name="l01510"></a>01510   <span class="comment">// the diagnostic.</span>
+<a name="l01511"></a>01511   <span class="keyword">const</span> std::string Filename = Parser->CppHashFilename;
+<a name="l01512"></a>01512 
+<a name="l01513"></a>01513   <span class="keywordtype">int</span> DiagLocLineNo = DiagSrcMgr.<a class="code" href="classllvm_1_1SourceMgr.html#a02b1d94b61fb355d55b44c56f0142fc6">FindLineNumber</a>(DiagLoc, DiagBuf);
+<a name="l01514"></a>01514   <span class="keywordtype">int</span> CppHashLocLineNo =
+<a name="l01515"></a>01515       Parser->SrcMgr.FindLineNumber(Parser->CppHashLoc, CppHashBuf);
+<a name="l01516"></a>01516   <span class="keywordtype">int</span> LineNo = Parser->CppHashLineNumber - 1 +
+<a name="l01517"></a>01517                (DiagLocLineNo - CppHashLocLineNo);
+<a name="l01518"></a>01518 
+<a name="l01519"></a>01519   <a class="code" href="classllvm_1_1SMDiagnostic.html">SMDiagnostic</a> NewDiag(*Diag.<a class="code" href="classllvm_1_1SMDiagnostic.html#a2c6931b6557bb0cc586aa408eb5006f1">getSourceMgr</a>(), Diag.<a class="code" href="classllvm_1_1SMDiagnostic.html#a304424a186d8a306a7b10eb6dd4aeac4">getLoc</a>(),
+<a name="l01520"></a>01520                        Filename, LineNo, Diag.<a class="code" href="classllvm_1_1SMDiagnostic.html#a979c9fc699dece8614360d7b2f90371b">getColumnNo</a>(),
+<a name="l01521"></a>01521                        Diag.<a class="code" href="classllvm_1_1SMDiagnostic.html#a18ccd2417a23db05f5c5c518af8219b7">getKind</a>(), Diag.<a class="code" href="classllvm_1_1SMDiagnostic.html#ab923464e8909e24c17b4113bf3a436d0">getMessage</a>(),
+<a name="l01522"></a>01522                        Diag.<a class="code" href="classllvm_1_1SMDiagnostic.html#a40c12660505afffb1ed2d2399b4b15e5">getLineContents</a>(), Diag.<a class="code" href="classllvm_1_1SMDiagnostic.html#ac3cf1734e2319d2e05973e73db6acb16">getRanges</a>());
+<a name="l01523"></a>01523 
+<a name="l01524"></a>01524   <span class="keywordflow">if</span> (Parser->SavedDiagHandler)
+<a name="l01525"></a>01525     Parser->SavedDiagHandler(NewDiag, Parser->SavedDiagContext);
+<a name="l01526"></a>01526   <span class="keywordflow">else</span>
+<a name="l01527"></a>01527     NewDiag.print(0, OS);
+<a name="l01528"></a>01528 }
+<a name="l01529"></a>01529 
+<a name="l01530"></a>01530 <span class="comment">// FIXME: This is mostly duplicated from the function in AsmLexer.cpp. The</span>
+<a name="l01531"></a>01531 <span class="comment">// difference being that that function accepts '@' as part of identifiers and</span>
+<a name="l01532"></a>01532 <span class="comment">// we can't do that. AsmLexer.cpp should probably be changed to handle</span>
+<a name="l01533"></a>01533 <span class="comment">// '@' as a special case when needed.</span>
+<a name="l01534"></a><a class="code" href="AsmParser_8cpp.html#a6c23fe1fabd28591c06e690c2ef01f4e">01534</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="AsmParser_8cpp.html#a6c23fe1fabd28591c06e690c2ef01f4e">isIdentifierChar</a>(<span class="keywordtype">char</span> c) {
+<a name="l01535"></a>01535   <span class="keywordflow">return</span> isalnum(c) || c == <span class="charliteral">'_'</span> || c == <span class="charliteral">'$'</span> || c == <span class="charliteral">'.'</span>;
+<a name="l01536"></a>01536 }
+<a name="l01537"></a>01537 
+<a name="l01538"></a>01538 <span class="keywordtype">bool</span> AsmParser::expandMacro(<a class="code" href="classllvm_1_1raw__svector__ostream.html">raw_svector_ostream</a> &OS, <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Body,
+<a name="l01539"></a>01539                             <span class="keyword">const</span> MacroParameters &Parameters,
+<a name="l01540"></a>01540                             <span class="keyword">const</span> MacroArguments &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>,
+<a name="l01541"></a>01541                             <span class="keyword">const</span> <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &L) {
+<a name="l01542"></a>01542   <span class="keywordtype">unsigned</span> NParameters = Parameters.size();
+<a name="l01543"></a>01543   <span class="keywordflow">if</span> (NParameters != 0 && NParameters != A.size())
+<a name="l01544"></a>01544     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(L, <span class="stringliteral">"Wrong number of arguments"</span>);
+<a name="l01545"></a>01545 
+<a name="l01546"></a>01546   <span class="comment">// A macro without parameters is handled differently on Darwin:</span>
+<a name="l01547"></a>01547   <span class="comment">// gas accepts no arguments and does no substitutions</span>
+<a name="l01548"></a>01548   <span class="keywordflow">while</span> (!Body.<a class="code" href="classllvm_1_1StringRef.html#ad7e292682516000f8b472f4510a2acf7" title="empty - Check if the string is empty.">empty</a>()) {
+<a name="l01549"></a>01549     <span class="comment">// Scan for the next substitution.</span>
+<a name="l01550"></a>01550     std::size_t End = Body.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>(), Pos = 0;
+<a name="l01551"></a>01551     <span class="keywordflow">for</span> (; Pos != End; ++Pos) {
+<a name="l01552"></a>01552       <span class="comment">// Check for a substitution or escape.</span>
+<a name="l01553"></a>01553       <span class="keywordflow">if</span> (!NParameters) {
+<a name="l01554"></a>01554         <span class="comment">// This macro has no parameters, look for $0, $1, etc.</span>
+<a name="l01555"></a>01555         <span class="keywordflow">if</span> (Body[Pos] != <span class="charliteral">'$'</span> || Pos + 1 == End)
+<a name="l01556"></a>01556           <span class="keywordflow">continue</span>;
+<a name="l01557"></a>01557 
+<a name="l01558"></a>01558         <span class="keywordtype">char</span> Next = Body[Pos + 1];
+<a name="l01559"></a>01559         <span class="keywordflow">if</span> (Next == <span class="charliteral">'$'</span> || Next == <span class="charliteral">'n'</span> || isdigit(Next))
+<a name="l01560"></a>01560           <span class="keywordflow">break</span>;
+<a name="l01561"></a>01561       } <span class="keywordflow">else</span> {
+<a name="l01562"></a>01562         <span class="comment">// This macro has parameters, look for \foo, \bar, etc.</span>
+<a name="l01563"></a>01563         <span class="keywordflow">if</span> (Body[Pos] == <span class="charliteral">'\\'</span> && Pos + 1 != End)
+<a name="l01564"></a>01564           <span class="keywordflow">break</span>;
+<a name="l01565"></a>01565       }
+<a name="l01566"></a>01566     }
+<a name="l01567"></a>01567 
+<a name="l01568"></a>01568     <span class="comment">// Add the prefix.</span>
+<a name="l01569"></a>01569     OS << Body.<a class="code" href="classllvm_1_1StringRef.html#a84945a8050d1449eb630a7a1622aa76f">slice</a>(0, Pos);
+<a name="l01570"></a>01570 
+<a name="l01571"></a>01571     <span class="comment">// Check if we reached the end.</span>
+<a name="l01572"></a>01572     <span class="keywordflow">if</span> (Pos == End)
+<a name="l01573"></a>01573       <span class="keywordflow">break</span>;
+<a name="l01574"></a>01574 
+<a name="l01575"></a>01575     <span class="keywordflow">if</span> (!NParameters) {
+<a name="l01576"></a>01576       <span class="keywordflow">switch</span> (Body[Pos+1]) {
+<a name="l01577"></a>01577         <span class="comment">// $$ => $</span>
+<a name="l01578"></a>01578       <span class="keywordflow">case</span> <span class="charliteral">'$'</span>:
+<a name="l01579"></a>01579         OS << <span class="charliteral">'$'</span>;
+<a name="l01580"></a>01580         <span class="keywordflow">break</span>;
+<a name="l01581"></a>01581 
+<a name="l01582"></a>01582         <span class="comment">// $n => number of arguments</span>
+<a name="l01583"></a>01583       <span class="keywordflow">case</span> <span class="charliteral">'n'</span>:
+<a name="l01584"></a>01584         OS << A.size();
+<a name="l01585"></a>01585         <span class="keywordflow">break</span>;
+<a name="l01586"></a>01586 
+<a name="l01587"></a>01587         <span class="comment">// $[0-9] => argument</span>
+<a name="l01588"></a>01588       <span class="keywordflow">default</span>: {
+<a name="l01589"></a>01589         <span class="comment">// Missing arguments are ignored.</span>
+<a name="l01590"></a>01590         <span class="keywordtype">unsigned</span> Index = Body[Pos+1] - <span class="charliteral">'0'</span>;
+<a name="l01591"></a>01591         <span class="keywordflow">if</span> (Index >= A.size())
+<a name="l01592"></a>01592           <span class="keywordflow">break</span>;
+<a name="l01593"></a>01593 
+<a name="l01594"></a>01594         <span class="comment">// Otherwise substitute with the token values, with spaces eliminated.</span>
+<a name="l01595"></a>01595         <span class="keywordflow">for</span> (MacroArgument::const_iterator it = A[Index].<a class="code" href="namespacellvm_1_1sys_1_1path.html#a33706aab89e700b8f79e1fa6f4f0e3ee" title="Get begin iterator over path.">begin</a>(),
+<a name="l01596"></a>01596                ie = A[Index].end(); it != ie; ++it)
+<a name="l01597"></a>01597           OS << it->getString();
+<a name="l01598"></a>01598         <span class="keywordflow">break</span>;
+<a name="l01599"></a>01599       }
+<a name="l01600"></a>01600       }
+<a name="l01601"></a>01601       Pos += 2;
+<a name="l01602"></a>01602     } <span class="keywordflow">else</span> {
+<a name="l01603"></a>01603       <span class="keywordtype">unsigned</span> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = Pos + 1;
+<a name="l01604"></a>01604       <span class="keywordflow">while</span> (<a class="code" href="AsmParser_8cpp.html#a6c23fe1fabd28591c06e690c2ef01f4e">isIdentifierChar</a>(Body[I]) && I + 1 != End)
+<a name="l01605"></a>01605         ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l01606"></a>01606 
+<a name="l01607"></a>01607       <span class="keyword">const</span> <span class="keywordtype">char</span> *Begin = Body.<a class="code" href="classllvm_1_1StringRef.html#a7d9b88d042ae1da8afd5509875c90a04">data</a>() + Pos +1;
+<a name="l01608"></a>01608       <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="classllvm_1_1Argument.html" title="LLVM Argument representation.">Argument</a>(Begin, I - (Pos +1));
+<a name="l01609"></a>01609       <span class="keywordtype">unsigned</span> Index = 0;
+<a name="l01610"></a>01610       <span class="keywordflow">for</span> (; Index < NParameters; ++Index)
+<a name="l01611"></a>01611         <span class="keywordflow">if</span> (Parameters[Index].first == <a class="code" href="classllvm_1_1Argument.html" title="LLVM Argument representation.">Argument</a>)
+<a name="l01612"></a>01612           <span class="keywordflow">break</span>;
+<a name="l01613"></a>01613 
+<a name="l01614"></a>01614       <span class="keywordflow">if</span> (Index == NParameters) {
+<a name="l01615"></a>01615           <span class="keywordflow">if</span> (Body[Pos+1] == <span class="charliteral">'('</span> && Body[Pos+2] == <span class="charliteral">')'</span>)
+<a name="l01616"></a>01616             Pos += 3;
+<a name="l01617"></a>01617           <span class="keywordflow">else</span> {
+<a name="l01618"></a>01618             OS << <span class="charliteral">'\\'</span> << <a class="code" href="classllvm_1_1Argument.html" title="LLVM Argument representation.">Argument</a>;
+<a name="l01619"></a>01619             Pos = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l01620"></a>01620           }
+<a name="l01621"></a>01621       } <span class="keywordflow">else</span> {
+<a name="l01622"></a>01622         <span class="keywordflow">for</span> (MacroArgument::const_iterator it = A[Index].<a class="code" href="namespacellvm_1_1sys_1_1path.html#a33706aab89e700b8f79e1fa6f4f0e3ee" title="Get begin iterator over path.">begin</a>(),
+<a name="l01623"></a>01623                ie = A[Index].<a class="code" href="namespacellvm_1_1sys_1_1path.html#a214ec2f04ffd92636ed4bd2717607a1d" title="Get end iterator over path.">end</a>(); it != ie; ++it)
+<a name="l01624"></a>01624           <span class="keywordflow">if</span> (it->getKind() == <a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a394bf05139245f8e3ee22865dc9c1caf">AsmToken::String</a>)
+<a name="l01625"></a>01625             OS << it->getStringContents();
+<a name="l01626"></a>01626           <span class="keywordflow">else</span>
+<a name="l01627"></a>01627             OS << it->getString();
+<a name="l01628"></a>01628 
+<a name="l01629"></a>01629         Pos += 1 + <a class="code" href="classllvm_1_1Argument.html" title="LLVM Argument representation.">Argument</a>.size();
+<a name="l01630"></a>01630       }
+<a name="l01631"></a>01631     }
+<a name="l01632"></a>01632     <span class="comment">// Update the scan point.</span>
+<a name="l01633"></a>01633     Body = Body.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(Pos);
+<a name="l01634"></a>01634   }
+<a name="l01635"></a>01635 
+<a name="l01636"></a>01636   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01637"></a>01637 }
+<a name="l01638"></a>01638 
+<a name="l01639"></a>01639 MacroInstantiation::MacroInstantiation(<span class="keyword">const</span> Macro *M, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> IL, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> EL,
+<a name="l01640"></a>01640                                        <a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *I)
+<a name="l01641"></a>01641   : TheMacro(M), Instantiation(I), InstantiationLoc(IL), ExitLoc(EL)
+<a name="l01642"></a>01642 {
+<a name="l01643"></a>01643 }
+<a name="l01644"></a>01644 
+<a name="l01645"></a><a class="code" href="AsmParser_8cpp.html#a282e6d734f7f6a906a7ab8ab11eb22fd">01645</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="AsmParser_8cpp.html#a282e6d734f7f6a906a7ab8ab11eb22fd">IsOperator</a>(<a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039">AsmToken::TokenKind</a> kind)
+<a name="l01646"></a>01646 {
+<a name="l01647"></a>01647   <span class="keywordflow">switch</span> (kind)
+<a name="l01648"></a>01648   {
+<a name="l01649"></a>01649     <span class="keywordflow">default</span>:
+<a name="l01650"></a>01650       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01651"></a>01651     <span class="keywordflow">case</span> AsmToken::Plus:
+<a name="l01652"></a>01652     <span class="keywordflow">case</span> AsmToken::Minus:
+<a name="l01653"></a>01653     <span class="keywordflow">case</span> AsmToken::Tilde:
+<a name="l01654"></a>01654     <span class="keywordflow">case</span> AsmToken::Slash:
+<a name="l01655"></a>01655     <span class="keywordflow">case</span> AsmToken::Star:
+<a name="l01656"></a>01656     <span class="keywordflow">case</span> AsmToken::Dot:
+<a name="l01657"></a>01657     <span class="keywordflow">case</span> AsmToken::Equal:
+<a name="l01658"></a>01658     <span class="keywordflow">case</span> AsmToken::EqualEqual:
+<a name="l01659"></a>01659     <span class="keywordflow">case</span> AsmToken::Pipe:
+<a name="l01660"></a>01660     <span class="keywordflow">case</span> AsmToken::PipePipe:
+<a name="l01661"></a>01661     <span class="keywordflow">case</span> AsmToken::Caret:
+<a name="l01662"></a>01662     <span class="keywordflow">case</span> AsmToken::Amp:
+<a name="l01663"></a>01663     <span class="keywordflow">case</span> AsmToken::AmpAmp:
+<a name="l01664"></a>01664     <span class="keywordflow">case</span> AsmToken::Exclaim:
+<a name="l01665"></a>01665     <span class="keywordflow">case</span> AsmToken::ExclaimEqual:
+<a name="l01666"></a>01666     <span class="keywordflow">case</span> AsmToken::Percent:
+<a name="l01667"></a>01667     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1CodeGenOpt.html#a411055ea15209051c2370bbf655ec8d4ae56b4de70fb3488b3ae4ec998c0b6303">AsmToken::Less</a>:
+<a name="l01668"></a>01668     <span class="keywordflow">case</span> AsmToken::LessEqual:
+<a name="l01669"></a>01669     <span class="keywordflow">case</span> AsmToken::LessLess:
+<a name="l01670"></a>01670     <span class="keywordflow">case</span> AsmToken::LessGreater:
+<a name="l01671"></a>01671     <span class="keywordflow">case</span> AsmToken::Greater:
+<a name="l01672"></a>01672     <span class="keywordflow">case</span> AsmToken::GreaterEqual:
+<a name="l01673"></a>01673     <span class="keywordflow">case</span> AsmToken::GreaterGreater:
+<a name="l01674"></a>01674       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01675"></a>01675   }
+<a name="l01676"></a>01676 }
+<a name="l01677"></a>01677 <span class="comment"></span>
+<a name="l01678"></a>01678 <span class="comment">/// ParseMacroArgument - Extract AsmTokens for a macro argument.</span>
+<a name="l01679"></a>01679 <span class="comment">/// This is used for both default macro parameter values and the</span>
+<a name="l01680"></a>01680 <span class="comment">/// arguments in macro invocations</span>
+<a name="l01681"></a>01681 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseMacroArgument(MacroArgument &MA,
+<a name="l01682"></a>01682                                    <a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039">AsmToken::TokenKind</a> &ArgumentDelimiter) {
+<a name="l01683"></a>01683   <span class="keywordtype">unsigned</span> ParenLevel = 0;
+<a name="l01684"></a>01684   <span class="keywordtype">unsigned</span> AddTokens = 0;
+<a name="l01685"></a>01685 
+<a name="l01686"></a>01686   <span class="comment">// gas accepts arguments separated by whitespace, except on Darwin</span>
+<a name="l01687"></a>01687   <span class="keywordflow">if</span> (!IsDarwin)
+<a name="l01688"></a>01688     Lexer.setSkipSpace(<span class="keyword">false</span>);
+<a name="l01689"></a>01689 
+<a name="l01690"></a>01690   <span class="keywordflow">for</span> (;;) {
+<a name="l01691"></a>01691     <span class="keywordflow">if</span> (Lexer.is(<a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>) || Lexer.is(AsmToken::Equal)) {
+<a name="l01692"></a>01692       Lexer.setSkipSpace(<span class="keyword">true</span>);
+<a name="l01693"></a>01693       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in macro instantiation"</span>);
+<a name="l01694"></a>01694     }
+<a name="l01695"></a>01695 
+<a name="l01696"></a>01696     <span class="keywordflow">if</span> (ParenLevel == 0 && Lexer.is(AsmToken::Comma)) {
+<a name="l01697"></a>01697       <span class="comment">// Spaces and commas cannot be mixed to delimit parameters</span>
+<a name="l01698"></a>01698       <span class="keywordflow">if</span> (ArgumentDelimiter == <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>)
+<a name="l01699"></a>01699         ArgumentDelimiter = AsmToken::Comma;
+<a name="l01700"></a>01700       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ArgumentDelimiter != AsmToken::Comma) {
+<a name="l01701"></a>01701         Lexer.setSkipSpace(<span class="keyword">true</span>);
+<a name="l01702"></a>01702         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected ' ' for macro argument separator"</span>);
+<a name="l01703"></a>01703       }
+<a name="l01704"></a>01704       <span class="keywordflow">break</span>;
+<a name="l01705"></a>01705     }
+<a name="l01706"></a>01706 
+<a name="l01707"></a>01707     <span class="keywordflow">if</span> (Lexer.is(AsmToken::Space)) {
+<a name="l01708"></a>01708       Lex(); <span class="comment">// Eat spaces</span>
+<a name="l01709"></a>01709 
+<a name="l01710"></a>01710       <span class="comment">// Spaces can delimit parameters, but could also be part an expression.</span>
+<a name="l01711"></a>01711       <span class="comment">// If the token after a space is an operator, add the token and the next</span>
+<a name="l01712"></a>01712       <span class="comment">// one into this argument</span>
+<a name="l01713"></a>01713       <span class="keywordflow">if</span> (ArgumentDelimiter == AsmToken::Space ||
+<a name="l01714"></a>01714           ArgumentDelimiter == <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>) {
+<a name="l01715"></a>01715         <span class="keywordflow">if</span> (<a class="code" href="AsmParser_8cpp.html#a282e6d734f7f6a906a7ab8ab11eb22fd">IsOperator</a>(Lexer.getKind())) {
+<a name="l01716"></a>01716           <span class="comment">// Check to see whether the token is used as an operator,</span>
+<a name="l01717"></a>01717           <span class="comment">// or part of an identifier</span>
+<a name="l01718"></a>01718           <span class="keyword">const</span> <span class="keywordtype">char</span> *NextChar = getTok().getEndLoc().getPointer() + 1;
+<a name="l01719"></a>01719           <span class="keywordflow">if</span> (*NextChar == <span class="charliteral">' '</span>)
+<a name="l01720"></a>01720             AddTokens = 2;
+<a name="l01721"></a>01721         }
+<a name="l01722"></a>01722 
+<a name="l01723"></a>01723         <span class="keywordflow">if</span> (!AddTokens && ParenLevel == 0) {
+<a name="l01724"></a>01724           <span class="keywordflow">if</span> (ArgumentDelimiter == <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a> &&
+<a name="l01725"></a>01725               !<a class="code" href="AsmParser_8cpp.html#a282e6d734f7f6a906a7ab8ab11eb22fd">IsOperator</a>(Lexer.getKind()))
+<a name="l01726"></a>01726             ArgumentDelimiter = AsmToken::Space;
+<a name="l01727"></a>01727           <span class="keywordflow">break</span>;
+<a name="l01728"></a>01728         }
+<a name="l01729"></a>01729       }
+<a name="l01730"></a>01730     }
+<a name="l01731"></a>01731 
+<a name="l01732"></a>01732     <span class="comment">// HandleMacroEntry relies on not advancing the lexer here</span>
+<a name="l01733"></a>01733     <span class="comment">// to be able to fill in the remaining default parameter values</span>
+<a name="l01734"></a>01734     <span class="keywordflow">if</span> (Lexer.is(AsmToken::EndOfStatement))
+<a name="l01735"></a>01735       <span class="keywordflow">break</span>;
+<a name="l01736"></a>01736 
+<a name="l01737"></a>01737     <span class="comment">// Adjust the current parentheses level.</span>
+<a name="l01738"></a>01738     <span class="keywordflow">if</span> (Lexer.is(AsmToken::LParen))
+<a name="l01739"></a>01739       ++ParenLevel;
+<a name="l01740"></a>01740     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Lexer.is(AsmToken::RParen) && ParenLevel)
+<a name="l01741"></a>01741       --ParenLevel;
+<a name="l01742"></a>01742 
+<a name="l01743"></a>01743     <span class="comment">// Append the token to the current argument list.</span>
+<a name="l01744"></a>01744     MA.push_back(getTok());
+<a name="l01745"></a>01745     <span class="keywordflow">if</span> (AddTokens)
+<a name="l01746"></a>01746       AddTokens--;
+<a name="l01747"></a>01747     Lex();
+<a name="l01748"></a>01748   }
+<a name="l01749"></a>01749 
+<a name="l01750"></a>01750   Lexer.setSkipSpace(<span class="keyword">true</span>);
+<a name="l01751"></a>01751   <span class="keywordflow">if</span> (ParenLevel != 0)
+<a name="l01752"></a>01752     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unbalanced parentheses in macro argument"</span>);
+<a name="l01753"></a>01753   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01754"></a>01754 }
+<a name="l01755"></a>01755 
+<a name="l01756"></a>01756 <span class="comment">// Parse the macro instantiation arguments.</span>
+<a name="l01757"></a>01757 <span class="keywordtype">bool</span> AsmParser::ParseMacroArguments(<span class="keyword">const</span> Macro *M, MacroArguments &A) {
+<a name="l01758"></a>01758   <span class="keyword">const</span> <span class="keywordtype">unsigned</span> NParameters = M ? M->Parameters.size() : 0;
+<a name="l01759"></a>01759   <span class="comment">// Argument delimiter is initially unknown. It will be set by</span>
+<a name="l01760"></a>01760   <span class="comment">// ParseMacroArgument()</span>
+<a name="l01761"></a>01761   <a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039">AsmToken::TokenKind</a> ArgumentDelimiter = <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>;
+<a name="l01762"></a>01762 
+<a name="l01763"></a>01763   <span class="comment">// Parse two kinds of macro invocations:</span>
+<a name="l01764"></a>01764   <span class="comment">// - macros defined without any parameters accept an arbitrary number of them</span>
+<a name="l01765"></a>01765   <span class="comment">// - macros defined with parameters accept at most that many of them</span>
+<a name="l01766"></a>01766   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> Parameter = 0; !NParameters || Parameter < NParameters;
+<a name="l01767"></a>01767        ++Parameter) {
+<a name="l01768"></a>01768     MacroArgument MA;
+<a name="l01769"></a>01769 
+<a name="l01770"></a>01770     <span class="keywordflow">if</span> (ParseMacroArgument(MA, ArgumentDelimiter))
+<a name="l01771"></a>01771       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01772"></a>01772 
+<a name="l01773"></a>01773     <span class="keywordflow">if</span> (!MA.empty() || !NParameters)
+<a name="l01774"></a>01774       A.push_back(MA);
+<a name="l01775"></a>01775     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (NParameters) {
+<a name="l01776"></a>01776       <span class="keywordflow">if</span> (!M->Parameters[Parameter].second.empty())
+<a name="l01777"></a>01777         A.push_back(M->Parameters[Parameter].second);
+<a name="l01778"></a>01778     }
+<a name="l01779"></a>01779 
+<a name="l01780"></a>01780     <span class="comment">// At the end of the statement, fill in remaining arguments that have</span>
+<a name="l01781"></a>01781     <span class="comment">// default values. If there aren't any, then the next argument is</span>
+<a name="l01782"></a>01782     <span class="comment">// required but missing</span>
+<a name="l01783"></a>01783     <span class="keywordflow">if</span> (Lexer.is(AsmToken::EndOfStatement)) {
+<a name="l01784"></a>01784       <span class="keywordflow">if</span> (NParameters && Parameter < NParameters - 1) {
+<a name="l01785"></a>01785         <span class="keywordflow">if</span> (M->Parameters[Parameter + 1].second.empty())
+<a name="l01786"></a>01786           <span class="keywordflow">return</span> TokError(<span class="stringliteral">"macro argument '"</span> +
+<a name="l01787"></a>01787                           <a class="code" href="classllvm_1_1Twine.html">Twine</a>(M->Parameters[Parameter + 1].first) +
+<a name="l01788"></a>01788                           <span class="stringliteral">"' is missing"</span>);
+<a name="l01789"></a>01789         <span class="keywordflow">else</span>
+<a name="l01790"></a>01790           <span class="keywordflow">continue</span>;
+<a name="l01791"></a>01791       }
+<a name="l01792"></a>01792       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01793"></a>01793     }
+<a name="l01794"></a>01794 
+<a name="l01795"></a>01795     <span class="keywordflow">if</span> (Lexer.is(AsmToken::Comma))
+<a name="l01796"></a>01796       Lex();
+<a name="l01797"></a>01797   }
+<a name="l01798"></a>01798   <span class="keywordflow">return</span> TokError(<span class="stringliteral">"Too many arguments"</span>);
+<a name="l01799"></a>01799 }
+<a name="l01800"></a>01800 
+<a name="l01801"></a>01801 <span class="keywordtype">bool</span> AsmParser::HandleMacroEntry(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> NameLoc,
+<a name="l01802"></a>01802                                  <span class="keyword">const</span> Macro *M) {
+<a name="l01803"></a>01803   <span class="comment">// Arbitrarily limit macro nesting depth, to match 'as'. We can eliminate</span>
+<a name="l01804"></a>01804   <span class="comment">// this, although we should protect against infinite loops.</span>
+<a name="l01805"></a>01805   <span class="keywordflow">if</span> (ActiveMacros.size() == 20)
+<a name="l01806"></a>01806     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"macros cannot be nested more than 20 levels deep"</span>);
+<a name="l01807"></a>01807 
+<a name="l01808"></a>01808   MacroArguments <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>;
+<a name="l01809"></a>01809   <span class="keywordflow">if</span> (ParseMacroArguments(M, A))
+<a name="l01810"></a>01810     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01811"></a>01811 
+<a name="l01812"></a>01812   <span class="comment">// Remove any trailing empty arguments. Do this after-the-fact as we have</span>
+<a name="l01813"></a>01813   <span class="comment">// to keep empty arguments in the middle of the list or positionality</span>
+<a name="l01814"></a>01814   <span class="comment">// gets off. e.g.,  "foo 1, , 2" vs. "foo 1, 2,"</span>
+<a name="l01815"></a>01815   <span class="keywordflow">while</span> (!A.empty() && A.back().empty())
+<a name="l01816"></a>01816     A.pop_back();
+<a name="l01817"></a>01817 
+<a name="l01818"></a>01818   <span class="comment">// Macro instantiation is lexical, unfortunately. We construct a new buffer</span>
+<a name="l01819"></a>01819   <span class="comment">// to hold the macro body with substitutions.</span>
+<a name="l01820"></a>01820   <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> Buf;
+<a name="l01821"></a>01821   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Body = M->Body;
+<a name="l01822"></a>01822   <a class="code" href="classllvm_1_1raw__svector__ostream.html">raw_svector_ostream</a> OS(Buf);
+<a name="l01823"></a>01823 
+<a name="l01824"></a>01824   <span class="keywordflow">if</span> (expandMacro(OS, Body, M->Parameters, A, getTok().getLoc()))
+<a name="l01825"></a>01825     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01826"></a>01826 
+<a name="l01827"></a>01827   <span class="comment">// We include the .endmacro in the buffer as our queue to exit the macro</span>
+<a name="l01828"></a>01828   <span class="comment">// instantiation.</span>
+<a name="l01829"></a>01829   OS << <span class="stringliteral">".endmacro\n"</span>;
+<a name="l01830"></a>01830 
+<a name="l01831"></a>01831   <a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *Instantiation =
+<a name="l01832"></a>01832     MemoryBuffer::getMemBufferCopy(OS.<a class="code" href="classllvm_1_1raw__svector__ostream.html#a941652907e3c1b132f86e1870bb5b291">str</a>(), <span class="stringliteral">"<instantiation>"</span>);
+<a name="l01833"></a>01833 
+<a name="l01834"></a>01834   <span class="comment">// Create the macro instantiation object and add to the current macro</span>
+<a name="l01835"></a>01835   <span class="comment">// instantiation stack.</span>
+<a name="l01836"></a>01836   MacroInstantiation *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a> = <span class="keyword">new</span> MacroInstantiation(M, NameLoc,
+<a name="l01837"></a>01837                                                   getTok().getLoc(),
+<a name="l01838"></a>01838                                                   Instantiation);
+<a name="l01839"></a>01839   ActiveMacros.push_back(MI);
+<a name="l01840"></a>01840 
+<a name="l01841"></a>01841   <span class="comment">// Jump to the macro instantiation and prime the lexer.</span>
+<a name="l01842"></a>01842   CurBuffer = <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#a773a3f4ecc3eb26ffb9ef9e90c99698d">AddNewSourceBuffer</a>(MI->Instantiation, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a>());
+<a name="l01843"></a>01843   Lexer.setBuffer(<a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#afea655fbbcf8d46deafb61f56eed99bd">getMemoryBuffer</a>(CurBuffer));
+<a name="l01844"></a>01844   Lex();
+<a name="l01845"></a>01845 
+<a name="l01846"></a>01846   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01847"></a>01847 }
+<a name="l01848"></a>01848 
+<a name="l01849"></a>01849 <span class="keywordtype">void</span> AsmParser::HandleMacroExit() {
+<a name="l01850"></a>01850   <span class="comment">// Jump to the EndOfStatement we should return to, and consume it.</span>
+<a name="l01851"></a>01851   JumpToLoc(ActiveMacros.back()->ExitLoc);
+<a name="l01852"></a>01852   Lex();
+<a name="l01853"></a>01853 
+<a name="l01854"></a>01854   <span class="comment">// Pop the instantiation entry.</span>
+<a name="l01855"></a>01855   <span class="keyword">delete</span> ActiveMacros.back();
+<a name="l01856"></a>01856   ActiveMacros.pop_back();
+<a name="l01857"></a>01857 }
+<a name="l01858"></a>01858 
+<a name="l01859"></a><a class="code" href="AsmParser_8cpp.html#ac5df2a5cdd7e5f5d339173521a66ea87">01859</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="AsmParser_8cpp.html#ac5df2a5cdd7e5f5d339173521a66ea87">IsUsedIn</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym, <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Value) {
+<a name="l01860"></a>01860   <span class="keywordflow">switch</span> (Value-><a class="code" href="classllvm_1_1MCExpr.html#ace5b4c9d98f1781030dc31db7f983529">getKind</a>()) {
+<a name="l01861"></a>01861   <span class="keywordflow">case</span> MCExpr::Binary: {
+<a name="l01862"></a>01862     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCBinaryExpr.html" title="MCBinaryExpr - Binary assembler expressions.">MCBinaryExpr</a> *BE = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classllvm_1_1MCBinaryExpr.html" title="MCBinaryExpr - Binary assembler expressions.">MCBinaryExpr</a>*<span class="keyword">></span>(Value);
+<a name="l01863"></a>01863     <span class="keywordflow">return</span> <a class="code" href="AsmParser_8cpp.html#ac5df2a5cdd7e5f5d339173521a66ea87">IsUsedIn</a>(Sym, BE-><a class="code" href="classllvm_1_1MCBinaryExpr.html#a6fa0e299419a7bd4563ad8a18ea7bc2b" title="getLHS - Get the left-hand side expression of the binary operator.">getLHS</a>()) || <a class="code" href="AsmParser_8cpp.html#ac5df2a5cdd7e5f5d339173521a66ea87">IsUsedIn</a>(Sym, BE-><a class="code" href="classllvm_1_1MCBinaryExpr.html#a076d8d9106ff8a8ae53365e7c0b41837" title="getRHS - Get the right-hand side expression of the binary operator.">getRHS</a>());
+<a name="l01864"></a>01864     <span class="keywordflow">break</span>;
+<a name="l01865"></a>01865   }
+<a name="l01866"></a>01866   <span class="keywordflow">case</span> MCExpr::Target:
+<a name="l01867"></a>01867   <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110aac2f0a84dd2aa5ee4c3f1385e9565f5e">MCExpr::Constant</a>:
+<a name="l01868"></a>01868     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01869"></a>01869   <span class="keywordflow">case</span> MCExpr::SymbolRef: {
+<a name="l01870"></a>01870     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> &S = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classllvm_1_1MCSymbolRefExpr.html">MCSymbolRefExpr</a>*<span class="keyword">></span>(Value)->getSymbol();
+<a name="l01871"></a>01871     <span class="keywordflow">if</span> (S.<a class="code" href="classllvm_1_1MCSymbol.html#ac542b727bb1c9dd954198bf3906912ce" title="isVariable - Check if this is a variable symbol.">isVariable</a>())
+<a name="l01872"></a>01872       <span class="keywordflow">return</span> <a class="code" href="AsmParser_8cpp.html#ac5df2a5cdd7e5f5d339173521a66ea87">IsUsedIn</a>(Sym, S.<a class="code" href="classllvm_1_1MCSymbol.html#a3edce2254ea42487721b42c00bbafe18" title="getVariableValue() - Get the value for variable symbols.">getVariableValue</a>());
+<a name="l01873"></a>01873     <span class="keywordflow">return</span> &S == Sym;
+<a name="l01874"></a>01874   }
+<a name="l01875"></a>01875   <span class="keywordflow">case</span> MCExpr::Unary:
+<a name="l01876"></a>01876     <span class="keywordflow">return</span> <a class="code" href="AsmParser_8cpp.html#ac5df2a5cdd7e5f5d339173521a66ea87">IsUsedIn</a>(Sym, static_cast<const MCUnaryExpr*>(Value)->getSubExpr());
+<a name="l01877"></a>01877   }
+<a name="l01878"></a>01878 
+<a name="l01879"></a>01879   <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Unknown expr kind!"</span>);
+<a name="l01880"></a>01880 }
+<a name="l01881"></a>01881 
+<a name="l01882"></a>01882 <span class="keywordtype">bool</span> AsmParser::ParseAssignment(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Name, <span class="keywordtype">bool</span> allow_redef,
+<a name="l01883"></a>01883                                 <span class="keywordtype">bool</span> NoDeadStrip) {
+<a name="l01884"></a>01884   <span class="comment">// FIXME: Use better location, we should use proper tokens.</span>
+<a name="l01885"></a>01885   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> EqualLoc = Lexer.getLoc();
+<a name="l01886"></a>01886 
+<a name="l01887"></a>01887   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Value;
+<a name="l01888"></a>01888   <span class="keywordflow">if</span> (ParseExpression(Value))
+<a name="l01889"></a>01889     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01890"></a>01890 
+<a name="l01891"></a>01891   <span class="comment">// Note: we don't count b as used in "a = b". This is to allow</span>
+<a name="l01892"></a>01892   <span class="comment">// a = b</span>
+<a name="l01893"></a>01893   <span class="comment">// b = c</span>
+<a name="l01894"></a>01894 
+<a name="l01895"></a>01895   <span class="keywordflow">if</span> (Lexer.isNot(AsmToken::EndOfStatement))
+<a name="l01896"></a>01896     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in assignment"</span>);
+<a name="l01897"></a>01897 
+<a name="l01898"></a>01898   <span class="comment">// Error on assignment to '.'.</span>
+<a name="l01899"></a>01899   <span class="keywordflow">if</span> (Name == <span class="stringliteral">"."</span>) {
+<a name="l01900"></a>01900     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(EqualLoc, (<span class="stringliteral">"assignment to pseudo-symbol '.' is unsupported "</span>
+<a name="l01901"></a>01901                             <span class="stringliteral">"(use '.space' or '.org').)"</span>));
+<a name="l01902"></a>01902   }
+<a name="l01903"></a>01903 
+<a name="l01904"></a>01904   <span class="comment">// Eat the end of statement marker.</span>
+<a name="l01905"></a>01905   Lex();
+<a name="l01906"></a>01906 
+<a name="l01907"></a>01907   <span class="comment">// Validate that the LHS is allowed to be a variable (either it has not been</span>
+<a name="l01908"></a>01908   <span class="comment">// used as a symbol, or it is an absolute symbol).</span>
+<a name="l01909"></a>01909   <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = getContext().LookupSymbol(Name);
+<a name="l01910"></a>01910   <span class="keywordflow">if</span> (Sym) {
+<a name="l01911"></a>01911     <span class="comment">// Diagnose assignment to a label.</span>
+<a name="l01912"></a>01912     <span class="comment">//</span>
+<a name="l01913"></a>01913     <span class="comment">// FIXME: Diagnostics. Note the location of the definition as a label.</span>
+<a name="l01914"></a>01914     <span class="comment">// FIXME: Diagnose assignment to protected identifier (e.g., register name).</span>
+<a name="l01915"></a>01915     <span class="keywordflow">if</span> (<a class="code" href="AsmParser_8cpp.html#ac5df2a5cdd7e5f5d339173521a66ea87">IsUsedIn</a>(Sym, Value))
+<a name="l01916"></a>01916       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(EqualLoc, <span class="stringliteral">"Recursive use of '"</span> + Name + <span class="stringliteral">"'"</span>);
+<a name="l01917"></a>01917     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a2260c62e12734815ad60dc038bf514f5" title="isUndefined - Check if this symbol undefined (i.e., implicitly defined).">isUndefined</a>() && !Sym-><a class="code" href="classllvm_1_1MCSymbol.html#ab27813a64346ebe779c3d4f43e4a7214" title="isUsed - Check if this is used.">isUsed</a>() && !Sym-><a class="code" href="classllvm_1_1MCSymbol.html#ac542b727bb1c9dd954198bf3906912ce" title="isVariable - Check if this is a variable symbol.">isVariable</a>())
+<a name="l01918"></a>01918       ; <span class="comment">// Allow redefinitions of undefined symbols only used in directives.</span>
+<a name="l01919"></a>01919     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Sym-><a class="code" href="classllvm_1_1MCSymbol.html#ac542b727bb1c9dd954198bf3906912ce" title="isVariable - Check if this is a variable symbol.">isVariable</a>() && !Sym-><a class="code" href="classllvm_1_1MCSymbol.html#ab27813a64346ebe779c3d4f43e4a7214" title="isUsed - Check if this is used.">isUsed</a>() && allow_redef)
+<a name="l01920"></a>01920       ; <span class="comment">// Allow redefinitions of variables that haven't yet been used.</span>
+<a name="l01921"></a>01921     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a2260c62e12734815ad60dc038bf514f5" title="isUndefined - Check if this symbol undefined (i.e., implicitly defined).">isUndefined</a>() && (!Sym-><a class="code" href="classllvm_1_1MCSymbol.html#ac542b727bb1c9dd954198bf3906912ce" title="isVariable - Check if this is a variable symbol.">isVariable</a>() || !allow_redef))
+<a name="l01922"></a>01922       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(EqualLoc, <span class="stringliteral">"redefinition of '"</span> + Name + <span class="stringliteral">"'"</span>);
+<a name="l01923"></a>01923     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!Sym-><a class="code" href="classllvm_1_1MCSymbol.html#ac542b727bb1c9dd954198bf3906912ce" title="isVariable - Check if this is a variable symbol.">isVariable</a>())
+<a name="l01924"></a>01924       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(EqualLoc, <span class="stringliteral">"invalid assignment to '"</span> + Name + <span class="stringliteral">"'"</span>);
+<a name="l01925"></a>01925     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!isa<MCConstantExpr>(Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a3edce2254ea42487721b42c00bbafe18" title="getVariableValue() - Get the value for variable symbols.">getVariableValue</a>()))
+<a name="l01926"></a>01926       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(EqualLoc, <span class="stringliteral">"invalid reassignment of non-absolute variable '"</span> +
+<a name="l01927"></a>01927                    Name + <span class="stringliteral">"'"</span>);
+<a name="l01928"></a>01928 
+<a name="l01929"></a>01929     <span class="comment">// Don't count these checks as uses.</span>
+<a name="l01930"></a>01930     Sym-><a class="code" href="classllvm_1_1MCSymbol.html#ab60aae1c95461776bc34fa14e06b8f6a">setUsed</a>(<span class="keyword">false</span>);
+<a name="l01931"></a>01931   } <span class="keywordflow">else</span>
+<a name="l01932"></a>01932     Sym = getContext().GetOrCreateSymbol(Name);
+<a name="l01933"></a>01933 
+<a name="l01934"></a>01934   <span class="comment">// FIXME: Handle '.'.</span>
+<a name="l01935"></a>01935 
+<a name="l01936"></a>01936   <span class="comment">// Do the assignment.</span>
+<a name="l01937"></a>01937   Out.EmitAssignment(Sym, Value);
+<a name="l01938"></a>01938   <span class="keywordflow">if</span> (NoDeadStrip)
+<a name="l01939"></a>01939     Out.EmitSymbolAttribute(Sym, <a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243afb34d5700d536c3f8f8a5004985d1f57" title=".no_dead_strip (MachO)">MCSA_NoDeadStrip</a>);
+<a name="l01940"></a>01940 
+<a name="l01941"></a>01941 
+<a name="l01942"></a>01942   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01943"></a>01943 }
+<a name="l01944"></a>01944 <span class="comment"></span>
+<a name="l01945"></a>01945 <span class="comment">/// ParseIdentifier:</span>
+<a name="l01946"></a>01946 <span class="comment">///   ::= identifier</span>
+<a name="l01947"></a>01947 <span class="comment">///   ::= string</span>
+<a name="l01948"></a>01948 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MCAsmParser.html#a653b18a10fe439207b8a273920c72495">AsmParser::ParseIdentifier</a>(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> &Res) {
+<a name="l01949"></a>01949   <span class="comment">// The assembler has relaxed rules for accepting identifiers, in particular we</span>
+<a name="l01950"></a>01950   <span class="comment">// allow things like '.globl $foo', which would normally be separate</span>
+<a name="l01951"></a>01951   <span class="comment">// tokens. At this level, we have already lexed so we cannot (currently)</span>
+<a name="l01952"></a>01952   <span class="comment">// handle this as a context dependent token, instead we detect adjacent tokens</span>
+<a name="l01953"></a>01953   <span class="comment">// and return the combined identifier.</span>
+<a name="l01954"></a>01954   <span class="keywordflow">if</span> (Lexer.is(AsmToken::Dollar)) {
+<a name="l01955"></a>01955     <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DollarLoc = getLexer().getLoc();
+<a name="l01956"></a>01956 
+<a name="l01957"></a>01957     <span class="comment">// Consume the dollar sign, and check for a following identifier.</span>
+<a name="l01958"></a>01958     Lex();
+<a name="l01959"></a>01959     <span class="keywordflow">if</span> (Lexer.isNot(AsmToken::Identifier))
+<a name="l01960"></a>01960       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01961"></a>01961 
+<a name="l01962"></a>01962     <span class="comment">// We have a '$' followed by an identifier, make sure they are adjacent.</span>
+<a name="l01963"></a>01963     <span class="keywordflow">if</span> (DollarLoc.<a class="code" href="classllvm_1_1SMLoc.html#a57b9155169a1c2d0f2363cd4fdd97ac7">getPointer</a>() + 1 != getTok().getLoc().getPointer())
+<a name="l01964"></a>01964       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01965"></a>01965 
+<a name="l01966"></a>01966     <span class="comment">// Construct the joined identifier and consume the token.</span>
+<a name="l01967"></a>01967     Res = <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(DollarLoc.<a class="code" href="classllvm_1_1SMLoc.html#a57b9155169a1c2d0f2363cd4fdd97ac7">getPointer</a>(),
+<a name="l01968"></a>01968                     getTok().getIdentifier().size() + 1);
+<a name="l01969"></a>01969     Lex();
+<a name="l01970"></a>01970     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01971"></a>01971   }
+<a name="l01972"></a>01972 
+<a name="l01973"></a>01973   <span class="keywordflow">if</span> (Lexer.isNot(AsmToken::Identifier) &&
+<a name="l01974"></a>01974       Lexer.isNot(<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a394bf05139245f8e3ee22865dc9c1caf">AsmToken::String</a>))
+<a name="l01975"></a>01975     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01976"></a>01976 
+<a name="l01977"></a>01977   Res = getTok().getIdentifier();
+<a name="l01978"></a>01978 
+<a name="l01979"></a>01979   Lex(); <span class="comment">// Consume the identifier token.</span>
+<a name="l01980"></a>01980 
+<a name="l01981"></a>01981   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01982"></a>01982 }
+<a name="l01983"></a>01983 <span class="comment"></span>
+<a name="l01984"></a>01984 <span class="comment">/// ParseDirectiveSet:</span>
+<a name="l01985"></a>01985 <span class="comment">///   ::= .equ identifier ',' expression</span>
+<a name="l01986"></a>01986 <span class="comment">///   ::= .equiv identifier ',' expression</span>
+<a name="l01987"></a>01987 <span class="comment">///   ::= .set identifier ',' expression</span>
+<a name="l01988"></a>01988 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveSet(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal, <span class="keywordtype">bool</span> allow_redef) {
+<a name="l01989"></a>01989   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l01990"></a>01990 
+<a name="l01991"></a>01991   <span class="keywordflow">if</span> (ParseIdentifier(Name))
+<a name="l01992"></a>01992     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected identifier after '"</span> + <a class="code" href="classllvm_1_1Twine.html">Twine</a>(IDVal) + <span class="stringliteral">"'"</span>);
+<a name="l01993"></a>01993 
+<a name="l01994"></a>01994   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l01995"></a>01995     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '"</span> + <a class="code" href="classllvm_1_1Twine.html">Twine</a>(IDVal) + <span class="stringliteral">"'"</span>);
+<a name="l01996"></a>01996   Lex();
+<a name="l01997"></a>01997 
+<a name="l01998"></a>01998   <span class="keywordflow">return</span> ParseAssignment(Name, allow_redef, <span class="keyword">true</span>);
+<a name="l01999"></a>01999 }
+<a name="l02000"></a>02000 
+<a name="l02001"></a>02001 <span class="keywordtype">bool</span> AsmParser::ParseEscapedString(std::string &<a class="code" href="namespacellvm_1_1object_1_1macho.html#a56678f646a4a478d777eb8821f710db0a557a58f6e018464dcf0635728ef14dd1">Data</a>) {
+<a name="l02002"></a>02002   assert(getLexer().is(<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a394bf05139245f8e3ee22865dc9c1caf">AsmToken::String</a>) && <span class="stringliteral">"Unexpected current token!"</span>);
+<a name="l02003"></a>02003 
+<a name="l02004"></a>02004   Data = <span class="stringliteral">""</span>;
+<a name="l02005"></a>02005   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Str = getTok().getStringContents();
+<a name="l02006"></a>02006   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Str.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>(); i != e; ++i) {
+<a name="l02007"></a>02007     <span class="keywordflow">if</span> (Str[i] != <span class="charliteral">'\\'</span>) {
+<a name="l02008"></a>02008       Data += Str[i];
+<a name="l02009"></a>02009       <span class="keywordflow">continue</span>;
+<a name="l02010"></a>02010     }
+<a name="l02011"></a>02011 
+<a name="l02012"></a>02012     <span class="comment">// Recognize escaped characters. Note that this escape semantics currently</span>
+<a name="l02013"></a>02013     <span class="comment">// loosely follows Darwin 'as'. Notably, it doesn't support hex escapes.</span>
+<a name="l02014"></a>02014     ++i;
+<a name="l02015"></a>02015     <span class="keywordflow">if</span> (i == e)
+<a name="l02016"></a>02016       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected backslash at end of string"</span>);
+<a name="l02017"></a>02017 
+<a name="l02018"></a>02018     <span class="comment">// Recognize octal sequences.</span>
+<a name="l02019"></a>02019     <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>) (Str[i] - <span class="charliteral">'0'</span>) <= 7) {
+<a name="l02020"></a>02020       <span class="comment">// Consume up to three octal characters.</span>
+<a name="l02021"></a>02021       <span class="keywordtype">unsigned</span> Value = Str[i] - <span class="charliteral">'0'</span>;
+<a name="l02022"></a>02022 
+<a name="l02023"></a>02023       <span class="keywordflow">if</span> (i + 1 != e && ((<span class="keywordtype">unsigned</span>) (Str[i + 1] - <span class="charliteral">'0'</span>)) <= 7) {
+<a name="l02024"></a>02024         ++i;
+<a name="l02025"></a>02025         Value = Value * 8 + (Str[i] - <span class="charliteral">'0'</span>);
+<a name="l02026"></a>02026 
+<a name="l02027"></a>02027         <span class="keywordflow">if</span> (i + 1 != e && ((<span class="keywordtype">unsigned</span>) (Str[i + 1] - <span class="charliteral">'0'</span>)) <= 7) {
+<a name="l02028"></a>02028           ++i;
+<a name="l02029"></a>02029           Value = Value * 8 + (Str[i] - <span class="charliteral">'0'</span>);
+<a name="l02030"></a>02030         }
+<a name="l02031"></a>02031       }
+<a name="l02032"></a>02032 
+<a name="l02033"></a>02033       <span class="keywordflow">if</span> (Value > 255)
+<a name="l02034"></a>02034         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"invalid octal escape sequence (out of range)"</span>);
+<a name="l02035"></a>02035 
+<a name="l02036"></a>02036       Data += (<span class="keywordtype">unsigned</span> <a class="code" href="classchar.html">char</a>) Value;
+<a name="l02037"></a>02037       <span class="keywordflow">continue</span>;
+<a name="l02038"></a>02038     }
+<a name="l02039"></a>02039 
+<a name="l02040"></a>02040     <span class="comment">// Otherwise recognize individual escapes.</span>
+<a name="l02041"></a>02041     <span class="keywordflow">switch</span> (Str[i]) {
+<a name="l02042"></a>02042     <span class="keywordflow">default</span>:
+<a name="l02043"></a>02043       <span class="comment">// Just reject invalid escape sequences for now.</span>
+<a name="l02044"></a>02044       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"invalid escape sequence (unrecognized character)"</span>);
+<a name="l02045"></a>02045 
+<a name="l02046"></a>02046     <span class="keywordflow">case</span> <span class="charliteral">'b'</span>: Data += <span class="charliteral">'\b'</span>; <span class="keywordflow">break</span>;
+<a name="l02047"></a>02047     <span class="keywordflow">case</span> <span class="charliteral">'f'</span>: Data += <span class="charliteral">'\f'</span>; <span class="keywordflow">break</span>;
+<a name="l02048"></a>02048     <span class="keywordflow">case</span> <span class="charliteral">'n'</span>: Data += <span class="charliteral">'\n'</span>; <span class="keywordflow">break</span>;
+<a name="l02049"></a>02049     <span class="keywordflow">case</span> <span class="charliteral">'r'</span>: Data += <span class="charliteral">'\r'</span>; <span class="keywordflow">break</span>;
+<a name="l02050"></a>02050     <span class="keywordflow">case</span> <span class="charliteral">'t'</span>: Data += <span class="charliteral">'\t'</span>; <span class="keywordflow">break</span>;
+<a name="l02051"></a>02051     <span class="keywordflow">case</span> <span class="charliteral">'"'</span>: Data += <span class="charliteral">'"'</span>; <span class="keywordflow">break</span>;
+<a name="l02052"></a>02052     <span class="keywordflow">case</span> <span class="charliteral">'\\'</span>: Data += <span class="charliteral">'\\'</span>; <span class="keywordflow">break</span>;
+<a name="l02053"></a>02053     }
+<a name="l02054"></a>02054   }
+<a name="l02055"></a>02055 
+<a name="l02056"></a>02056   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02057"></a>02057 }
+<a name="l02058"></a>02058 <span class="comment"></span>
+<a name="l02059"></a>02059 <span class="comment">/// ParseDirectiveAscii:</span>
+<a name="l02060"></a>02060 <span class="comment">///   ::= ( .ascii | .asciz | .string ) [ "string" ( , "string" )* ]</span>
+<a name="l02061"></a>02061 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveAscii(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal, <span class="keywordtype">bool</span> ZeroTerminated) {
+<a name="l02062"></a>02062   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement)) {
+<a name="l02063"></a>02063     CheckForValidSection();
+<a name="l02064"></a>02064 
+<a name="l02065"></a>02065     <span class="keywordflow">for</span> (;;) {
+<a name="l02066"></a>02066       <span class="keywordflow">if</span> (getLexer().isNot(<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a394bf05139245f8e3ee22865dc9c1caf">AsmToken::String</a>))
+<a name="l02067"></a>02067         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected string in '"</span> + <a class="code" href="classllvm_1_1Twine.html">Twine</a>(IDVal) + <span class="stringliteral">"' directive"</span>);
+<a name="l02068"></a>02068 
+<a name="l02069"></a>02069       std::string <a class="code" href="namespacellvm_1_1object_1_1macho.html#a56678f646a4a478d777eb8821f710db0a557a58f6e018464dcf0635728ef14dd1">Data</a>;
+<a name="l02070"></a>02070       <span class="keywordflow">if</span> (ParseEscapedString(Data))
+<a name="l02071"></a>02071         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02072"></a>02072 
+<a name="l02073"></a>02073       getStreamer().EmitBytes(Data, <a class="code" href="AsmParser_8cpp.html#af77d65ab56b38a820b1efc0bcafbd4fba4fb9b7e46bf210aa9b5b59ac1c5fe8ff">DEFAULT_ADDRSPACE</a>);
+<a name="l02074"></a>02074       <span class="keywordflow">if</span> (ZeroTerminated)
+<a name="l02075"></a>02075         getStreamer().EmitBytes(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(<span class="stringliteral">"\0"</span>, 1), <a class="code" href="AsmParser_8cpp.html#af77d65ab56b38a820b1efc0bcafbd4fba4fb9b7e46bf210aa9b5b59ac1c5fe8ff">DEFAULT_ADDRSPACE</a>);
+<a name="l02076"></a>02076 
+<a name="l02077"></a>02077       Lex();
+<a name="l02078"></a>02078 
+<a name="l02079"></a>02079       <span class="keywordflow">if</span> (getLexer().is(AsmToken::EndOfStatement))
+<a name="l02080"></a>02080         <span class="keywordflow">break</span>;
+<a name="l02081"></a>02081 
+<a name="l02082"></a>02082       <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l02083"></a>02083         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '"</span> + <a class="code" href="classllvm_1_1Twine.html">Twine</a>(IDVal) + <span class="stringliteral">"' directive"</span>);
+<a name="l02084"></a>02084       Lex();
+<a name="l02085"></a>02085     }
+<a name="l02086"></a>02086   }
+<a name="l02087"></a>02087 
+<a name="l02088"></a>02088   Lex();
+<a name="l02089"></a>02089   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02090"></a>02090 }
+<a name="l02091"></a>02091 <span class="comment"></span>
+<a name="l02092"></a>02092 <span class="comment">/// ParseDirectiveValue</span>
+<a name="l02093"></a>02093 <span class="comment">///  ::= (.byte | .short | ... ) [ expression (, expression)* ]</span>
+<a name="l02094"></a>02094 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveValue(<span class="keywordtype">unsigned</span> Size) {
+<a name="l02095"></a>02095   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement)) {
+<a name="l02096"></a>02096     CheckForValidSection();
+<a name="l02097"></a>02097 
+<a name="l02098"></a>02098     <span class="keywordflow">for</span> (;;) {
+<a name="l02099"></a>02099       <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Value;
+<a name="l02100"></a>02100       <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> ExprLoc = getLexer().getLoc();
+<a name="l02101"></a>02101       <span class="keywordflow">if</span> (ParseExpression(Value))
+<a name="l02102"></a>02102         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02103"></a>02103 
+<a name="l02104"></a>02104       <span class="comment">// Special case constant expressions to match code generator.</span>
+<a name="l02105"></a>02105       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCConstantExpr.html">MCConstantExpr</a> *MCE = dyn_cast<MCConstantExpr>(Value)) {
+<a name="l02106"></a>02106         assert(Size <= 8 && <span class="stringliteral">"Invalid size"</span>);
+<a name="l02107"></a>02107         uint64_t IntValue = MCE->getValue();
+<a name="l02108"></a>02108         <span class="keywordflow">if</span> (!<a class="code" href="namespacellvm.html#a1a995470163b6d76695cba5bc8dfb529">isUIntN</a>(8 * Size, IntValue) && !<a class="code" href="namespacellvm_1_1APIntOps.html#a01bd8f75e31e440075bf2f943b3714ff" title="Check if the specified APInt has a N-bits unsigned integer value.">isIntN</a>(8 * Size, IntValue))
+<a name="l02109"></a>02109           <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(ExprLoc, <span class="stringliteral">"literal value out of range for directive"</span>);
+<a name="l02110"></a>02110         getStreamer().EmitIntValue(IntValue, Size, <a class="code" href="AsmParser_8cpp.html#af77d65ab56b38a820b1efc0bcafbd4fba4fb9b7e46bf210aa9b5b59ac1c5fe8ff">DEFAULT_ADDRSPACE</a>);
+<a name="l02111"></a>02111       } <span class="keywordflow">else</span>
+<a name="l02112"></a>02112         getStreamer().EmitValue(Value, Size, <a class="code" href="AsmParser_8cpp.html#af77d65ab56b38a820b1efc0bcafbd4fba4fb9b7e46bf210aa9b5b59ac1c5fe8ff">DEFAULT_ADDRSPACE</a>);
+<a name="l02113"></a>02113 
+<a name="l02114"></a>02114       <span class="keywordflow">if</span> (getLexer().is(AsmToken::EndOfStatement))
+<a name="l02115"></a>02115         <span class="keywordflow">break</span>;
+<a name="l02116"></a>02116 
+<a name="l02117"></a>02117       <span class="comment">// FIXME: Improve diagnostic.</span>
+<a name="l02118"></a>02118       <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l02119"></a>02119         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l02120"></a>02120       Lex();
+<a name="l02121"></a>02121     }
+<a name="l02122"></a>02122   }
+<a name="l02123"></a>02123 
+<a name="l02124"></a>02124   Lex();
+<a name="l02125"></a>02125   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02126"></a>02126 }
+<a name="l02127"></a>02127 <span class="comment"></span>
+<a name="l02128"></a>02128 <span class="comment">/// ParseDirectiveRealValue</span>
+<a name="l02129"></a>02129 <span class="comment">///  ::= (.single | .double) [ expression (, expression)* ]</span>
+<a name="l02130"></a>02130 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveRealValue(<span class="keyword">const</span> <a class="code" href="structllvm_1_1fltSemantics.html">fltSemantics</a> &Semantics) {
+<a name="l02131"></a>02131   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement)) {
+<a name="l02132"></a>02132     CheckForValidSection();
+<a name="l02133"></a>02133 
+<a name="l02134"></a>02134     <span class="keywordflow">for</span> (;;) {
+<a name="l02135"></a>02135       <span class="comment">// We don't truly support arithmetic on floating point expressions, so we</span>
+<a name="l02136"></a>02136       <span class="comment">// have to manually parse unary prefixes.</span>
+<a name="l02137"></a>02137       <span class="keywordtype">bool</span> IsNeg = <span class="keyword">false</span>;
+<a name="l02138"></a>02138       <span class="keywordflow">if</span> (getLexer().is(AsmToken::Minus)) {
+<a name="l02139"></a>02139         Lex();
+<a name="l02140"></a>02140         IsNeg = <span class="keyword">true</span>;
+<a name="l02141"></a>02141       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (getLexer().is(AsmToken::Plus))
+<a name="l02142"></a>02142         Lex();
+<a name="l02143"></a>02143 
+<a name="l02144"></a>02144       <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Integer) &&
+<a name="l02145"></a>02145           getLexer().isNot(AsmToken::Real) &&
+<a name="l02146"></a>02146           getLexer().isNot(AsmToken::Identifier))
+<a name="l02147"></a>02147         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l02148"></a>02148 
+<a name="l02149"></a>02149       <span class="comment">// Convert to an APFloat.</span>
+<a name="l02150"></a>02150       <a class="code" href="classllvm_1_1APFloat.html">APFloat</a> Value(Semantics);
+<a name="l02151"></a>02151       <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal = getTok().getString();
+<a name="l02152"></a>02152       <span class="keywordflow">if</span> (getLexer().is(AsmToken::Identifier)) {
+<a name="l02153"></a>02153         <span class="keywordflow">if</span> (!IDVal.<a class="code" href="classllvm_1_1StringRef.html#a18c93533914a679e39ceb1f2b6c4ee17" title="compare_lower - Compare two strings, ignoring case.">compare_lower</a>(<span class="stringliteral">"infinity"</span>) || !IDVal.<a class="code" href="classllvm_1_1StringRef.html#a18c93533914a679e39ceb1f2b6c4ee17" title="compare_lower - Compare two strings, ignoring case.">compare_lower</a>(<span class="stringliteral">"inf"</span>))
+<a name="l02154"></a>02154           Value = APFloat::getInf(Semantics);
+<a name="l02155"></a>02155         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!IDVal.<a class="code" href="classllvm_1_1StringRef.html#a18c93533914a679e39ceb1f2b6c4ee17" title="compare_lower - Compare two strings, ignoring case.">compare_lower</a>(<span class="stringliteral">"nan"</span>))
+<a name="l02156"></a>02156           Value = APFloat::getNaN(Semantics, <span class="keyword">false</span>, ~0);
+<a name="l02157"></a>02157         <span class="keywordflow">else</span>
+<a name="l02158"></a>02158           <span class="keywordflow">return</span> TokError(<span class="stringliteral">"invalid floating point literal"</span>);
+<a name="l02159"></a>02159       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Value.convertFromString(IDVal, APFloat::rmNearestTiesToEven) ==
+<a name="l02160"></a>02160           APFloat::opInvalidOp)
+<a name="l02161"></a>02161         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"invalid floating point literal"</span>);
+<a name="l02162"></a>02162       <span class="keywordflow">if</span> (IsNeg)
+<a name="l02163"></a>02163         Value.changeSign();
+<a name="l02164"></a>02164 
+<a name="l02165"></a>02165       <span class="comment">// Consume the numeric token.</span>
+<a name="l02166"></a>02166       Lex();
+<a name="l02167"></a>02167 
+<a name="l02168"></a>02168       <span class="comment">// Emit the value as an integer.</span>
+<a name="l02169"></a>02169       <a class="code" href="classllvm_1_1APInt.html" title="Class for arbitrary precision integers.">APInt</a> AsInt = Value.bitcastToAPInt();
+<a name="l02170"></a>02170       getStreamer().EmitIntValue(AsInt.<a class="code" href="classllvm_1_1APInt.html#ae0c5e70885cf005feb6707932774f99c">getLimitedValue</a>(),
+<a name="l02171"></a>02171                                  AsInt.<a class="code" href="classllvm_1_1APInt.html#ad081689e23a8f5dea78dedd623d6a8f8">getBitWidth</a>() / 8, <a class="code" href="AsmParser_8cpp.html#af77d65ab56b38a820b1efc0bcafbd4fba4fb9b7e46bf210aa9b5b59ac1c5fe8ff">DEFAULT_ADDRSPACE</a>);
+<a name="l02172"></a>02172 
+<a name="l02173"></a>02173       <span class="keywordflow">if</span> (getLexer().is(AsmToken::EndOfStatement))
+<a name="l02174"></a>02174         <span class="keywordflow">break</span>;
+<a name="l02175"></a>02175 
+<a name="l02176"></a>02176       <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l02177"></a>02177         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l02178"></a>02178       Lex();
+<a name="l02179"></a>02179     }
+<a name="l02180"></a>02180   }
+<a name="l02181"></a>02181 
+<a name="l02182"></a>02182   Lex();
+<a name="l02183"></a>02183   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02184"></a>02184 }
+<a name="l02185"></a>02185 <span class="comment"></span>
+<a name="l02186"></a>02186 <span class="comment">/// ParseDirectiveSpace</span>
+<a name="l02187"></a>02187 <span class="comment">///  ::= .space expression [ , expression ]</span>
+<a name="l02188"></a>02188 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveSpace() {
+<a name="l02189"></a>02189   CheckForValidSection();
+<a name="l02190"></a>02190 
+<a name="l02191"></a>02191   <a class="code" href="classint64__t.html">int64_t</a> NumBytes;
+<a name="l02192"></a>02192   <span class="keywordflow">if</span> (ParseAbsoluteExpression(NumBytes))
+<a name="l02193"></a>02193     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02194"></a>02194 
+<a name="l02195"></a>02195   <a class="code" href="classint64__t.html">int64_t</a> FillExpr = 0;
+<a name="l02196"></a>02196   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement)) {
+<a name="l02197"></a>02197     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l02198"></a>02198       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.space' directive"</span>);
+<a name="l02199"></a>02199     Lex();
+<a name="l02200"></a>02200 
+<a name="l02201"></a>02201     <span class="keywordflow">if</span> (ParseAbsoluteExpression(FillExpr))
+<a name="l02202"></a>02202       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02203"></a>02203 
+<a name="l02204"></a>02204     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02205"></a>02205       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.space' directive"</span>);
+<a name="l02206"></a>02206   }
+<a name="l02207"></a>02207 
+<a name="l02208"></a>02208   Lex();
+<a name="l02209"></a>02209 
+<a name="l02210"></a>02210   <span class="keywordflow">if</span> (NumBytes <= 0)
+<a name="l02211"></a>02211     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"invalid number of bytes in '.space' directive"</span>);
+<a name="l02212"></a>02212 
+<a name="l02213"></a>02213   <span class="comment">// FIXME: Sometimes the fill expr is 'nop' if it isn't supplied, instead of 0.</span>
+<a name="l02214"></a>02214   getStreamer().EmitFill(NumBytes, FillExpr, <a class="code" href="AsmParser_8cpp.html#af77d65ab56b38a820b1efc0bcafbd4fba4fb9b7e46bf210aa9b5b59ac1c5fe8ff">DEFAULT_ADDRSPACE</a>);
+<a name="l02215"></a>02215 
+<a name="l02216"></a>02216   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02217"></a>02217 }
+<a name="l02218"></a>02218 <span class="comment"></span>
+<a name="l02219"></a>02219 <span class="comment">/// ParseDirectiveZero</span>
+<a name="l02220"></a>02220 <span class="comment">///  ::= .zero expression</span>
+<a name="l02221"></a>02221 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveZero() {
+<a name="l02222"></a>02222   CheckForValidSection();
+<a name="l02223"></a>02223 
+<a name="l02224"></a>02224   <a class="code" href="classint64__t.html">int64_t</a> NumBytes;
+<a name="l02225"></a>02225   <span class="keywordflow">if</span> (ParseAbsoluteExpression(NumBytes))
+<a name="l02226"></a>02226     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02227"></a>02227 
+<a name="l02228"></a>02228   <a class="code" href="classint64__t.html">int64_t</a> Val = 0;
+<a name="l02229"></a>02229   <span class="keywordflow">if</span> (getLexer().is(AsmToken::Comma)) {
+<a name="l02230"></a>02230     Lex();
+<a name="l02231"></a>02231     <span class="keywordflow">if</span> (ParseAbsoluteExpression(Val))
+<a name="l02232"></a>02232       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02233"></a>02233   }
+<a name="l02234"></a>02234 
+<a name="l02235"></a>02235   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02236"></a>02236     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.zero' directive"</span>);
+<a name="l02237"></a>02237 
+<a name="l02238"></a>02238   Lex();
+<a name="l02239"></a>02239 
+<a name="l02240"></a>02240   getStreamer().EmitFill(NumBytes, Val, <a class="code" href="AsmParser_8cpp.html#af77d65ab56b38a820b1efc0bcafbd4fba4fb9b7e46bf210aa9b5b59ac1c5fe8ff">DEFAULT_ADDRSPACE</a>);
+<a name="l02241"></a>02241 
+<a name="l02242"></a>02242   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02243"></a>02243 }
+<a name="l02244"></a>02244 <span class="comment"></span>
+<a name="l02245"></a>02245 <span class="comment">/// ParseDirectiveFill</span>
+<a name="l02246"></a>02246 <span class="comment">///  ::= .fill expression , expression , expression</span>
+<a name="l02247"></a>02247 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveFill() {
+<a name="l02248"></a>02248   CheckForValidSection();
+<a name="l02249"></a>02249 
+<a name="l02250"></a>02250   <a class="code" href="classint64__t.html">int64_t</a> NumValues;
+<a name="l02251"></a>02251   <span class="keywordflow">if</span> (ParseAbsoluteExpression(NumValues))
+<a name="l02252"></a>02252     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02253"></a>02253 
+<a name="l02254"></a>02254   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l02255"></a>02255     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.fill' directive"</span>);
+<a name="l02256"></a>02256   Lex();
+<a name="l02257"></a>02257 
+<a name="l02258"></a>02258   <a class="code" href="classint64__t.html">int64_t</a> FillSize;
+<a name="l02259"></a>02259   <span class="keywordflow">if</span> (ParseAbsoluteExpression(FillSize))
+<a name="l02260"></a>02260     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02261"></a>02261 
+<a name="l02262"></a>02262   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l02263"></a>02263     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.fill' directive"</span>);
+<a name="l02264"></a>02264   Lex();
+<a name="l02265"></a>02265 
+<a name="l02266"></a>02266   <a class="code" href="classint64__t.html">int64_t</a> FillExpr;
+<a name="l02267"></a>02267   <span class="keywordflow">if</span> (ParseAbsoluteExpression(FillExpr))
+<a name="l02268"></a>02268     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02269"></a>02269 
+<a name="l02270"></a>02270   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02271"></a>02271     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.fill' directive"</span>);
+<a name="l02272"></a>02272 
+<a name="l02273"></a>02273   Lex();
+<a name="l02274"></a>02274 
+<a name="l02275"></a>02275   <span class="keywordflow">if</span> (FillSize != 1 && FillSize != 2 && FillSize != 4 && FillSize != 8)
+<a name="l02276"></a>02276     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"invalid '.fill' size, expected 1, 2, 4, or 8"</span>);
+<a name="l02277"></a>02277 
+<a name="l02278"></a>02278   <span class="keywordflow">for</span> (uint64_t i = 0, e = NumValues; i != e; ++i)
+<a name="l02279"></a>02279     getStreamer().EmitIntValue(FillExpr, FillSize, <a class="code" href="AsmParser_8cpp.html#af77d65ab56b38a820b1efc0bcafbd4fba4fb9b7e46bf210aa9b5b59ac1c5fe8ff">DEFAULT_ADDRSPACE</a>);
+<a name="l02280"></a>02280 
+<a name="l02281"></a>02281   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02282"></a>02282 }
+<a name="l02283"></a>02283 <span class="comment"></span>
+<a name="l02284"></a>02284 <span class="comment">/// ParseDirectiveOrg</span>
+<a name="l02285"></a>02285 <span class="comment">///  ::= .org expression [ , expression ]</span>
+<a name="l02286"></a>02286 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveOrg() {
+<a name="l02287"></a>02287   CheckForValidSection();
+<a name="l02288"></a>02288 
+<a name="l02289"></a>02289   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Offset;
+<a name="l02290"></a>02290   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> Loc = getTok().getLoc();
+<a name="l02291"></a>02291   <span class="keywordflow">if</span> (ParseExpression(Offset))
+<a name="l02292"></a>02292     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02293"></a>02293 
+<a name="l02294"></a>02294   <span class="comment">// Parse optional fill expression.</span>
+<a name="l02295"></a>02295   <a class="code" href="classint64__t.html">int64_t</a> FillExpr = 0;
+<a name="l02296"></a>02296   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement)) {
+<a name="l02297"></a>02297     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l02298"></a>02298       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.org' directive"</span>);
+<a name="l02299"></a>02299     Lex();
+<a name="l02300"></a>02300 
+<a name="l02301"></a>02301     <span class="keywordflow">if</span> (ParseAbsoluteExpression(FillExpr))
+<a name="l02302"></a>02302       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02303"></a>02303 
+<a name="l02304"></a>02304     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02305"></a>02305       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.org' directive"</span>);
+<a name="l02306"></a>02306   }
+<a name="l02307"></a>02307 
+<a name="l02308"></a>02308   Lex();
+<a name="l02309"></a>02309 
+<a name="l02310"></a>02310   <span class="comment">// Only limited forms of relocatable expressions are accepted here, it</span>
+<a name="l02311"></a>02311   <span class="comment">// has to be relative to the current section. The streamer will return</span>
+<a name="l02312"></a>02312   <span class="comment">// 'true' if the expression wasn't evaluatable.</span>
+<a name="l02313"></a>02313   <span class="keywordflow">if</span> (getStreamer().EmitValueToOffset(Offset, FillExpr))
+<a name="l02314"></a>02314     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Loc, <span class="stringliteral">"expected assembly-time absolute expression"</span>);
+<a name="l02315"></a>02315 
+<a name="l02316"></a>02316   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02317"></a>02317 }
+<a name="l02318"></a>02318 <span class="comment"></span>
+<a name="l02319"></a>02319 <span class="comment">/// ParseDirectiveAlign</span>
+<a name="l02320"></a>02320 <span class="comment">///  ::= {.align, ...} expression [ , expression [ , expression ]]</span>
+<a name="l02321"></a>02321 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveAlign(<span class="keywordtype">bool</span> IsPow2, <span class="keywordtype">unsigned</span> ValueSize) {
+<a name="l02322"></a>02322   CheckForValidSection();
+<a name="l02323"></a>02323 
+<a name="l02324"></a>02324   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> AlignmentLoc = getLexer().getLoc();
+<a name="l02325"></a>02325   <a class="code" href="classint64__t.html">int64_t</a> Alignment;
+<a name="l02326"></a>02326   <span class="keywordflow">if</span> (ParseAbsoluteExpression(Alignment))
+<a name="l02327"></a>02327     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02328"></a>02328 
+<a name="l02329"></a>02329   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> MaxBytesLoc;
+<a name="l02330"></a>02330   <span class="keywordtype">bool</span> HasFillExpr = <span class="keyword">false</span>;
+<a name="l02331"></a>02331   <a class="code" href="classint64__t.html">int64_t</a> FillExpr = 0;
+<a name="l02332"></a>02332   <a class="code" href="classint64__t.html">int64_t</a> MaxBytesToFill = 0;
+<a name="l02333"></a>02333   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement)) {
+<a name="l02334"></a>02334     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l02335"></a>02335       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l02336"></a>02336     Lex();
+<a name="l02337"></a>02337 
+<a name="l02338"></a>02338     <span class="comment">// The fill expression can be omitted while specifying a maximum number of</span>
+<a name="l02339"></a>02339     <span class="comment">// alignment bytes, e.g:</span>
+<a name="l02340"></a>02340     <span class="comment">//  .align 3,,4</span>
+<a name="l02341"></a>02341     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma)) {
+<a name="l02342"></a>02342       HasFillExpr = <span class="keyword">true</span>;
+<a name="l02343"></a>02343       <span class="keywordflow">if</span> (ParseAbsoluteExpression(FillExpr))
+<a name="l02344"></a>02344         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02345"></a>02345     }
+<a name="l02346"></a>02346 
+<a name="l02347"></a>02347     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement)) {
+<a name="l02348"></a>02348       <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l02349"></a>02349         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l02350"></a>02350       Lex();
+<a name="l02351"></a>02351 
+<a name="l02352"></a>02352       MaxBytesLoc = getLexer().getLoc();
+<a name="l02353"></a>02353       <span class="keywordflow">if</span> (ParseAbsoluteExpression(MaxBytesToFill))
+<a name="l02354"></a>02354         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02355"></a>02355 
+<a name="l02356"></a>02356       <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02357"></a>02357         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l02358"></a>02358     }
+<a name="l02359"></a>02359   }
+<a name="l02360"></a>02360 
+<a name="l02361"></a>02361   Lex();
+<a name="l02362"></a>02362 
+<a name="l02363"></a>02363   <span class="keywordflow">if</span> (!HasFillExpr)
+<a name="l02364"></a>02364     FillExpr = 0;
+<a name="l02365"></a>02365 
+<a name="l02366"></a>02366   <span class="comment">// Compute alignment in bytes.</span>
+<a name="l02367"></a>02367   <span class="keywordflow">if</span> (IsPow2) {
+<a name="l02368"></a>02368     <span class="comment">// FIXME: Diagnose overflow.</span>
+<a name="l02369"></a>02369     <span class="keywordflow">if</span> (Alignment >= 32) {
+<a name="l02370"></a>02370       <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(AlignmentLoc, <span class="stringliteral">"invalid alignment value"</span>);
+<a name="l02371"></a>02371       Alignment = 31;
+<a name="l02372"></a>02372     }
+<a name="l02373"></a>02373 
+<a name="l02374"></a>02374     Alignment = 1ULL << Alignment;
+<a name="l02375"></a>02375   }
+<a name="l02376"></a>02376 
+<a name="l02377"></a>02377   <span class="comment">// Diagnose non-sensical max bytes to align.</span>
+<a name="l02378"></a>02378   <span class="keywordflow">if</span> (MaxBytesLoc.<a class="code" href="classllvm_1_1SMLoc.html#a84fa182459a01f8b60c04f6800b47f8e">isValid</a>()) {
+<a name="l02379"></a>02379     <span class="keywordflow">if</span> (MaxBytesToFill < 1) {
+<a name="l02380"></a>02380       <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(MaxBytesLoc, <span class="stringliteral">"alignment directive can never be satisfied in this "</span>
+<a name="l02381"></a>02381             <span class="stringliteral">"many bytes, ignoring maximum bytes expression"</span>);
+<a name="l02382"></a>02382       MaxBytesToFill = 0;
+<a name="l02383"></a>02383     }
+<a name="l02384"></a>02384 
+<a name="l02385"></a>02385     <span class="keywordflow">if</span> (MaxBytesToFill >= Alignment) {
+<a name="l02386"></a>02386       Warning(MaxBytesLoc, <span class="stringliteral">"maximum bytes expression exceeds alignment and "</span>
+<a name="l02387"></a>02387               <span class="stringliteral">"has no effect"</span>);
+<a name="l02388"></a>02388       MaxBytesToFill = 0;
+<a name="l02389"></a>02389     }
+<a name="l02390"></a>02390   }
+<a name="l02391"></a>02391 
+<a name="l02392"></a>02392   <span class="comment">// Check whether we should use optimal code alignment for this .align</span>
+<a name="l02393"></a>02393   <span class="comment">// directive.</span>
+<a name="l02394"></a>02394   <span class="keywordtype">bool</span> UseCodeAlign = getStreamer().getCurrentSection()->UseCodeAlign();
+<a name="l02395"></a>02395   <span class="keywordflow">if</span> ((!HasFillExpr || Lexer.getMAI().getTextAlignFillValue() == FillExpr) &&
+<a name="l02396"></a>02396       ValueSize == 1 && UseCodeAlign) {
+<a name="l02397"></a>02397     getStreamer().EmitCodeAlignment(Alignment, MaxBytesToFill);
+<a name="l02398"></a>02398   } <span class="keywordflow">else</span> {
+<a name="l02399"></a>02399     <span class="comment">// FIXME: Target specific behavior about how the "extra" bytes are filled.</span>
+<a name="l02400"></a>02400     getStreamer().EmitValueToAlignment(Alignment, FillExpr, ValueSize,
+<a name="l02401"></a>02401                                        MaxBytesToFill);
+<a name="l02402"></a>02402   }
+<a name="l02403"></a>02403 
+<a name="l02404"></a>02404   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02405"></a>02405 }
+<a name="l02406"></a>02406 <span class="comment"></span>
+<a name="l02407"></a>02407 <span class="comment">/// ParseDirectiveSymbolAttribute</span>
+<a name="l02408"></a>02408 <span class="comment">///  ::= { ".globl", ".weak", ... } [ identifier ( , identifier )* ]</span>
+<a name="l02409"></a>02409 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveSymbolAttribute(<a class="code" href="namespacellvm.html#af74c787f7a33e251485729416d260243">MCSymbolAttr</a> Attr) {
+<a name="l02410"></a>02410   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement)) {
+<a name="l02411"></a>02411     <span class="keywordflow">for</span> (;;) {
+<a name="l02412"></a>02412       <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l02413"></a>02413       <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> Loc = getTok().getLoc();
+<a name="l02414"></a>02414 
+<a name="l02415"></a>02415       <span class="keywordflow">if</span> (ParseIdentifier(Name))
+<a name="l02416"></a>02416         <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Loc, <span class="stringliteral">"expected identifier in directive"</span>);
+<a name="l02417"></a>02417 
+<a name="l02418"></a>02418       <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = getContext().GetOrCreateSymbol(Name);
+<a name="l02419"></a>02419 
+<a name="l02420"></a>02420       <span class="comment">// Assembler local symbols don't make any sense here. Complain loudly.</span>
+<a name="l02421"></a>02421       <span class="keywordflow">if</span> (Sym-><a class="code" href="classllvm_1_1MCSymbol.html#ad75d1f7b68cd325d8f592a90bc7d1732" title="isTemporary - Check if this is an assembler temporary symbol.">isTemporary</a>())
+<a name="l02422"></a>02422         <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Loc, <span class="stringliteral">"non-local symbol required in directive"</span>);
+<a name="l02423"></a>02423 
+<a name="l02424"></a>02424       getStreamer().EmitSymbolAttribute(Sym, Attr);
+<a name="l02425"></a>02425 
+<a name="l02426"></a>02426       <span class="keywordflow">if</span> (getLexer().is(AsmToken::EndOfStatement))
+<a name="l02427"></a>02427         <span class="keywordflow">break</span>;
+<a name="l02428"></a>02428 
+<a name="l02429"></a>02429       <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l02430"></a>02430         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l02431"></a>02431       Lex();
+<a name="l02432"></a>02432     }
+<a name="l02433"></a>02433   }
+<a name="l02434"></a>02434 
+<a name="l02435"></a>02435   Lex();
+<a name="l02436"></a>02436   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02437"></a>02437 }
+<a name="l02438"></a>02438 <span class="comment"></span>
+<a name="l02439"></a>02439 <span class="comment">/// ParseDirectiveComm</span>
+<a name="l02440"></a>02440 <span class="comment">///  ::= ( .comm | .lcomm ) identifier , size_expression [ , align_expression ]</span>
+<a name="l02441"></a>02441 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveComm(<span class="keywordtype">bool</span> IsLocal) {
+<a name="l02442"></a>02442   CheckForValidSection();
+<a name="l02443"></a>02443 
+<a name="l02444"></a>02444   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> IDLoc = getLexer().getLoc();
+<a name="l02445"></a>02445   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l02446"></a>02446   <span class="keywordflow">if</span> (ParseIdentifier(Name))
+<a name="l02447"></a>02447     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected identifier in directive"</span>);
+<a name="l02448"></a>02448 
+<a name="l02449"></a>02449   <span class="comment">// Handle the identifier as the key symbol.</span>
+<a name="l02450"></a>02450   <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = getContext().GetOrCreateSymbol(Name);
+<a name="l02451"></a>02451 
+<a name="l02452"></a>02452   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l02453"></a>02453     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l02454"></a>02454   Lex();
+<a name="l02455"></a>02455 
+<a name="l02456"></a>02456   <a class="code" href="classint64__t.html">int64_t</a> Size;
+<a name="l02457"></a>02457   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> SizeLoc = getLexer().getLoc();
+<a name="l02458"></a>02458   <span class="keywordflow">if</span> (ParseAbsoluteExpression(Size))
+<a name="l02459"></a>02459     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02460"></a>02460 
+<a name="l02461"></a>02461   <a class="code" href="classint64__t.html">int64_t</a> Pow2Alignment = 0;
+<a name="l02462"></a>02462   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> Pow2AlignmentLoc;
+<a name="l02463"></a>02463   <span class="keywordflow">if</span> (getLexer().is(AsmToken::Comma)) {
+<a name="l02464"></a>02464     Lex();
+<a name="l02465"></a>02465     Pow2AlignmentLoc = getLexer().getLoc();
+<a name="l02466"></a>02466     <span class="keywordflow">if</span> (ParseAbsoluteExpression(Pow2Alignment))
+<a name="l02467"></a>02467       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02468"></a>02468 
+<a name="l02469"></a>02469     <a class="code" href="namespacellvm_1_1LCOMM.html#aae933cd10a930a5312da96502035e331">LCOMM::LCOMMType</a> LCOMM = Lexer.getMAI().getLCOMMDirectiveAlignmentType();
+<a name="l02470"></a>02470     <span class="keywordflow">if</span> (IsLocal && LCOMM == <a class="code" href="namespacellvm_1_1LCOMM.html#aae933cd10a930a5312da96502035e331a3062e0ef4c841d66420bf37c2d8fc750">LCOMM::NoAlignment</a>)
+<a name="l02471"></a>02471       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Pow2AlignmentLoc, <span class="stringliteral">"alignment not supported on this target"</span>);
+<a name="l02472"></a>02472 
+<a name="l02473"></a>02473     <span class="comment">// If this target takes alignments in bytes (not log) validate and convert.</span>
+<a name="l02474"></a>02474     <span class="keywordflow">if</span> ((!IsLocal && Lexer.getMAI().getCOMMDirectiveAlignmentIsInBytes()) ||
+<a name="l02475"></a>02475         (IsLocal && LCOMM == <a class="code" href="namespacellvm_1_1LCOMM.html#aae933cd10a930a5312da96502035e331a310fe8dc05086ce23b6826ccb3c37fc7">LCOMM::ByteAlignment</a>)) {
+<a name="l02476"></a>02476       <span class="keywordflow">if</span> (!<a class="code" href="namespacellvm.html#a19358222bb2c2199975e3a4ec4b40eed">isPowerOf2_64</a>(Pow2Alignment))
+<a name="l02477"></a>02477         <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Pow2AlignmentLoc, <span class="stringliteral">"alignment must be a power of 2"</span>);
+<a name="l02478"></a>02478       Pow2Alignment = <a class="code" href="namespacellvm.html#a4f42ed6fd2569fa43f03814a17f9d94a">Log2_64</a>(Pow2Alignment);
+<a name="l02479"></a>02479     }
+<a name="l02480"></a>02480   }
+<a name="l02481"></a>02481 
+<a name="l02482"></a>02482   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02483"></a>02483     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.comm' or '.lcomm' directive"</span>);
+<a name="l02484"></a>02484 
+<a name="l02485"></a>02485   Lex();
+<a name="l02486"></a>02486 
+<a name="l02487"></a>02487   <span class="comment">// NOTE: a size of zero for a .comm should create a undefined symbol</span>
+<a name="l02488"></a>02488   <span class="comment">// but a size of .lcomm creates a bss symbol of size zero.</span>
+<a name="l02489"></a>02489   <span class="keywordflow">if</span> (Size < 0)
+<a name="l02490"></a>02490     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(SizeLoc, <span class="stringliteral">"invalid '.comm' or '.lcomm' directive size, can't "</span>
+<a name="l02491"></a>02491                  <span class="stringliteral">"be less than zero"</span>);
+<a name="l02492"></a>02492 
+<a name="l02493"></a>02493   <span class="comment">// NOTE: The alignment in the directive is a power of 2 value, the assembler</span>
+<a name="l02494"></a>02494   <span class="comment">// may internally end up wanting an alignment in bytes.</span>
+<a name="l02495"></a>02495   <span class="comment">// FIXME: Diagnose overflow.</span>
+<a name="l02496"></a>02496   <span class="keywordflow">if</span> (Pow2Alignment < 0)
+<a name="l02497"></a>02497     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Pow2AlignmentLoc, <span class="stringliteral">"invalid '.comm' or '.lcomm' directive "</span>
+<a name="l02498"></a>02498                  <span class="stringliteral">"alignment, can't be less than zero"</span>);
+<a name="l02499"></a>02499 
+<a name="l02500"></a>02500   <span class="keywordflow">if</span> (!Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a2260c62e12734815ad60dc038bf514f5" title="isUndefined - Check if this symbol undefined (i.e., implicitly defined).">isUndefined</a>())
+<a name="l02501"></a>02501     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(IDLoc, <span class="stringliteral">"invalid symbol redefinition"</span>);
+<a name="l02502"></a>02502 
+<a name="l02503"></a>02503   <span class="comment">// Create the Symbol as a common or local common with Size and Pow2Alignment</span>
+<a name="l02504"></a>02504   <span class="keywordflow">if</span> (IsLocal) {
+<a name="l02505"></a>02505     getStreamer().EmitLocalCommonSymbol(Sym, Size, 1 << Pow2Alignment);
+<a name="l02506"></a>02506     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02507"></a>02507   }
+<a name="l02508"></a>02508 
+<a name="l02509"></a>02509   getStreamer().EmitCommonSymbol(Sym, Size, 1 << Pow2Alignment);
+<a name="l02510"></a>02510   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02511"></a>02511 }
+<a name="l02512"></a>02512 <span class="comment"></span>
+<a name="l02513"></a>02513 <span class="comment">/// ParseDirectiveAbort</span>
+<a name="l02514"></a>02514 <span class="comment">///  ::= .abort [... message ...]</span>
+<a name="l02515"></a>02515 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveAbort() {
+<a name="l02516"></a>02516   <span class="comment">// FIXME: Use loc from directive.</span>
+<a name="l02517"></a>02517   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> Loc = getLexer().getLoc();
+<a name="l02518"></a>02518 
+<a name="l02519"></a>02519   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Str = ParseStringToEndOfStatement();
+<a name="l02520"></a>02520   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02521"></a>02521     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.abort' directive"</span>);
+<a name="l02522"></a>02522 
+<a name="l02523"></a>02523   Lex();
+<a name="l02524"></a>02524 
+<a name="l02525"></a>02525   <span class="keywordflow">if</span> (Str.<a class="code" href="classllvm_1_1StringRef.html#ad7e292682516000f8b472f4510a2acf7" title="empty - Check if the string is empty.">empty</a>())
+<a name="l02526"></a>02526     <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Loc, <span class="stringliteral">".abort detected. Assembly stopping."</span>);
+<a name="l02527"></a>02527   <span class="keywordflow">else</span>
+<a name="l02528"></a>02528     <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Loc, <span class="stringliteral">".abort '"</span> + Str + <span class="stringliteral">"' detected. Assembly stopping."</span>);
+<a name="l02529"></a>02529   <span class="comment">// FIXME: Actually abort assembly here.</span>
+<a name="l02530"></a>02530 
+<a name="l02531"></a>02531   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02532"></a>02532 }
+<a name="l02533"></a>02533 <span class="comment"></span>
+<a name="l02534"></a>02534 <span class="comment">/// ParseDirectiveInclude</span>
+<a name="l02535"></a>02535 <span class="comment">///  ::= .include "filename"</span>
+<a name="l02536"></a>02536 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveInclude() {
+<a name="l02537"></a>02537   <span class="keywordflow">if</span> (getLexer().isNot(<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a394bf05139245f8e3ee22865dc9c1caf">AsmToken::String</a>))
+<a name="l02538"></a>02538     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected string in '.include' directive"</span>);
+<a name="l02539"></a>02539 
+<a name="l02540"></a>02540   std::string Filename = getTok().getString();
+<a name="l02541"></a>02541   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> IncludeLoc = getLexer().getLoc();
+<a name="l02542"></a>02542   Lex();
+<a name="l02543"></a>02543 
+<a name="l02544"></a>02544   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02545"></a>02545     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.include' directive"</span>);
+<a name="l02546"></a>02546 
+<a name="l02547"></a>02547   <span class="comment">// Strip the quotes.</span>
+<a name="l02548"></a>02548   Filename = Filename.substr(1, Filename.size()-2);
+<a name="l02549"></a>02549 
+<a name="l02550"></a>02550   <span class="comment">// Attempt to switch the lexer to the included file before consuming the end</span>
+<a name="l02551"></a>02551   <span class="comment">// of statement to avoid losing it when we switch.</span>
+<a name="l02552"></a>02552   <span class="keywordflow">if</span> (EnterIncludeFile(Filename)) {
+<a name="l02553"></a>02553     <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(IncludeLoc, <span class="stringliteral">"Could not find include file '"</span> + Filename + <span class="stringliteral">"'"</span>);
+<a name="l02554"></a>02554     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02555"></a>02555   }
+<a name="l02556"></a>02556 
+<a name="l02557"></a>02557   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02558"></a>02558 }
+<a name="l02559"></a>02559 <span class="comment"></span>
+<a name="l02560"></a>02560 <span class="comment">/// ParseDirectiveIncbin</span>
+<a name="l02561"></a>02561 <span class="comment">///  ::= .incbin "filename"</span>
+<a name="l02562"></a>02562 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveIncbin() {
+<a name="l02563"></a>02563   <span class="keywordflow">if</span> (getLexer().isNot(<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a394bf05139245f8e3ee22865dc9c1caf">AsmToken::String</a>))
+<a name="l02564"></a>02564     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected string in '.incbin' directive"</span>);
+<a name="l02565"></a>02565 
+<a name="l02566"></a>02566   std::string Filename = getTok().getString();
+<a name="l02567"></a>02567   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> IncbinLoc = getLexer().getLoc();
+<a name="l02568"></a>02568   Lex();
+<a name="l02569"></a>02569 
+<a name="l02570"></a>02570   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02571"></a>02571     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.incbin' directive"</span>);
+<a name="l02572"></a>02572 
+<a name="l02573"></a>02573   <span class="comment">// Strip the quotes.</span>
+<a name="l02574"></a>02574   Filename = Filename.substr(1, Filename.size()-2);
+<a name="l02575"></a>02575 
+<a name="l02576"></a>02576   <span class="comment">// Attempt to process the included file.</span>
+<a name="l02577"></a>02577   <span class="keywordflow">if</span> (ProcessIncbinFile(Filename)) {
+<a name="l02578"></a>02578     <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(IncbinLoc, <span class="stringliteral">"Could not find incbin file '"</span> + Filename + <span class="stringliteral">"'"</span>);
+<a name="l02579"></a>02579     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02580"></a>02580   }
+<a name="l02581"></a>02581 
+<a name="l02582"></a>02582   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02583"></a>02583 }
+<a name="l02584"></a>02584 <span class="comment"></span>
+<a name="l02585"></a>02585 <span class="comment">/// ParseDirectiveIf</span>
+<a name="l02586"></a>02586 <span class="comment">/// ::= .if expression</span>
+<a name="l02587"></a>02587 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveIf(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l02588"></a>02588   TheCondStack.push_back(TheCondState);
+<a name="l02589"></a>02589   TheCondState.TheCond = AsmCond::IfCond;
+<a name="l02590"></a>02590   <span class="keywordflow">if</span> (TheCondState.Ignore) {
+<a name="l02591"></a>02591     EatToEndOfStatement();
+<a name="l02592"></a>02592   } <span class="keywordflow">else</span> {
+<a name="l02593"></a>02593     <a class="code" href="classint64__t.html">int64_t</a> ExprValue;
+<a name="l02594"></a>02594     <span class="keywordflow">if</span> (ParseAbsoluteExpression(ExprValue))
+<a name="l02595"></a>02595       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02596"></a>02596 
+<a name="l02597"></a>02597     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02598"></a>02598       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.if' directive"</span>);
+<a name="l02599"></a>02599 
+<a name="l02600"></a>02600     Lex();
+<a name="l02601"></a>02601 
+<a name="l02602"></a>02602     TheCondState.CondMet = ExprValue;
+<a name="l02603"></a>02603     TheCondState.Ignore = !TheCondState.CondMet;
+<a name="l02604"></a>02604   }
+<a name="l02605"></a>02605 
+<a name="l02606"></a>02606   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02607"></a>02607 }
+<a name="l02608"></a>02608 <span class="comment"></span>
+<a name="l02609"></a>02609 <span class="comment">/// ParseDirectiveIfb</span>
+<a name="l02610"></a>02610 <span class="comment">/// ::= .ifb string</span>
+<a name="l02611"></a>02611 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveIfb(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc, <span class="keywordtype">bool</span> ExpectBlank) {
+<a name="l02612"></a>02612   TheCondStack.push_back(TheCondState);
+<a name="l02613"></a>02613   TheCondState.TheCond = AsmCond::IfCond;
+<a name="l02614"></a>02614 
+<a name="l02615"></a>02615   <span class="keywordflow">if</span> (TheCondState.Ignore) {
+<a name="l02616"></a>02616     EatToEndOfStatement();
+<a name="l02617"></a>02617   } <span class="keywordflow">else</span> {
+<a name="l02618"></a>02618     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Str = ParseStringToEndOfStatement();
+<a name="l02619"></a>02619 
+<a name="l02620"></a>02620     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02621"></a>02621       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.ifb' directive"</span>);
+<a name="l02622"></a>02622 
+<a name="l02623"></a>02623     Lex();
+<a name="l02624"></a>02624 
+<a name="l02625"></a>02625     TheCondState.CondMet = ExpectBlank == Str.<a class="code" href="classllvm_1_1StringRef.html#ad7e292682516000f8b472f4510a2acf7" title="empty - Check if the string is empty.">empty</a>();
+<a name="l02626"></a>02626     TheCondState.Ignore = !TheCondState.CondMet;
+<a name="l02627"></a>02627   }
+<a name="l02628"></a>02628 
+<a name="l02629"></a>02629   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02630"></a>02630 }
+<a name="l02631"></a>02631 <span class="comment"></span>
+<a name="l02632"></a>02632 <span class="comment">/// ParseDirectiveIfc</span>
+<a name="l02633"></a>02633 <span class="comment">/// ::= .ifc string1, string2</span>
+<a name="l02634"></a>02634 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveIfc(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc, <span class="keywordtype">bool</span> ExpectEqual) {
+<a name="l02635"></a>02635   TheCondStack.push_back(TheCondState);
+<a name="l02636"></a>02636   TheCondState.TheCond = AsmCond::IfCond;
+<a name="l02637"></a>02637 
+<a name="l02638"></a>02638   <span class="keywordflow">if</span> (TheCondState.Ignore) {
+<a name="l02639"></a>02639     EatToEndOfStatement();
+<a name="l02640"></a>02640   } <span class="keywordflow">else</span> {
+<a name="l02641"></a>02641     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Str1 = ParseStringToComma();
+<a name="l02642"></a>02642 
+<a name="l02643"></a>02643     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l02644"></a>02644       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.ifc' directive"</span>);
+<a name="l02645"></a>02645 
+<a name="l02646"></a>02646     Lex();
+<a name="l02647"></a>02647 
+<a name="l02648"></a>02648     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Str2 = ParseStringToEndOfStatement();
+<a name="l02649"></a>02649 
+<a name="l02650"></a>02650     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02651"></a>02651       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.ifc' directive"</span>);
+<a name="l02652"></a>02652 
+<a name="l02653"></a>02653     Lex();
+<a name="l02654"></a>02654 
+<a name="l02655"></a>02655     TheCondState.CondMet = ExpectEqual == (Str1 == Str2);
+<a name="l02656"></a>02656     TheCondState.Ignore = !TheCondState.CondMet;
+<a name="l02657"></a>02657   }
+<a name="l02658"></a>02658 
+<a name="l02659"></a>02659   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02660"></a>02660 }
+<a name="l02661"></a>02661 <span class="comment"></span>
+<a name="l02662"></a>02662 <span class="comment">/// ParseDirectiveIfdef</span>
+<a name="l02663"></a>02663 <span class="comment">/// ::= .ifdef symbol</span>
+<a name="l02664"></a>02664 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveIfdef(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc, <span class="keywordtype">bool</span> expect_defined) {
+<a name="l02665"></a>02665   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l02666"></a>02666   TheCondStack.push_back(TheCondState);
+<a name="l02667"></a>02667   TheCondState.TheCond = AsmCond::IfCond;
+<a name="l02668"></a>02668 
+<a name="l02669"></a>02669   <span class="keywordflow">if</span> (TheCondState.Ignore) {
+<a name="l02670"></a>02670     EatToEndOfStatement();
+<a name="l02671"></a>02671   } <span class="keywordflow">else</span> {
+<a name="l02672"></a>02672     <span class="keywordflow">if</span> (ParseIdentifier(Name))
+<a name="l02673"></a>02673       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected identifier after '.ifdef'"</span>);
+<a name="l02674"></a>02674 
+<a name="l02675"></a>02675     Lex();
+<a name="l02676"></a>02676 
+<a name="l02677"></a>02677     <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = getContext().LookupSymbol(Name);
+<a name="l02678"></a>02678 
+<a name="l02679"></a>02679     <span class="keywordflow">if</span> (expect_defined)
+<a name="l02680"></a>02680       TheCondState.CondMet = (Sym != NULL && !Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a2260c62e12734815ad60dc038bf514f5" title="isUndefined - Check if this symbol undefined (i.e., implicitly defined).">isUndefined</a>());
+<a name="l02681"></a>02681     <span class="keywordflow">else</span>
+<a name="l02682"></a>02682       TheCondState.CondMet = (Sym == NULL || Sym-><a class="code" href="classllvm_1_1MCSymbol.html#a2260c62e12734815ad60dc038bf514f5" title="isUndefined - Check if this symbol undefined (i.e., implicitly defined).">isUndefined</a>());
+<a name="l02683"></a>02683     TheCondState.Ignore = !TheCondState.CondMet;
+<a name="l02684"></a>02684   }
+<a name="l02685"></a>02685 
+<a name="l02686"></a>02686   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02687"></a>02687 }
+<a name="l02688"></a>02688 <span class="comment"></span>
+<a name="l02689"></a>02689 <span class="comment">/// ParseDirectiveElseIf</span>
+<a name="l02690"></a>02690 <span class="comment">/// ::= .elseif expression</span>
+<a name="l02691"></a>02691 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveElseIf(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l02692"></a>02692   <span class="keywordflow">if</span> (TheCondState.TheCond != AsmCond::IfCond &&
+<a name="l02693"></a>02693       TheCondState.TheCond != AsmCond::ElseIfCond)
+<a name="l02694"></a>02694       <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(DirectiveLoc, <span class="stringliteral">"Encountered a .elseif that doesn't follow a .if or "</span>
+<a name="l02695"></a>02695                           <span class="stringliteral">" an .elseif"</span>);
+<a name="l02696"></a>02696   TheCondState.TheCond = AsmCond::ElseIfCond;
+<a name="l02697"></a>02697 
+<a name="l02698"></a>02698   <span class="keywordtype">bool</span> LastIgnoreState = <span class="keyword">false</span>;
+<a name="l02699"></a>02699   <span class="keywordflow">if</span> (!TheCondStack.empty())
+<a name="l02700"></a>02700       LastIgnoreState = TheCondStack.back().Ignore;
+<a name="l02701"></a>02701   <span class="keywordflow">if</span> (LastIgnoreState || TheCondState.CondMet) {
+<a name="l02702"></a>02702     TheCondState.Ignore = <span class="keyword">true</span>;
+<a name="l02703"></a>02703     EatToEndOfStatement();
+<a name="l02704"></a>02704   }
+<a name="l02705"></a>02705   <span class="keywordflow">else</span> {
+<a name="l02706"></a>02706     <a class="code" href="classint64__t.html">int64_t</a> ExprValue;
+<a name="l02707"></a>02707     <span class="keywordflow">if</span> (ParseAbsoluteExpression(ExprValue))
+<a name="l02708"></a>02708       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02709"></a>02709 
+<a name="l02710"></a>02710     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02711"></a>02711       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.elseif' directive"</span>);
+<a name="l02712"></a>02712 
+<a name="l02713"></a>02713     Lex();
+<a name="l02714"></a>02714     TheCondState.CondMet = ExprValue;
+<a name="l02715"></a>02715     TheCondState.Ignore = !TheCondState.CondMet;
+<a name="l02716"></a>02716   }
+<a name="l02717"></a>02717 
+<a name="l02718"></a>02718   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02719"></a>02719 }
+<a name="l02720"></a>02720 <span class="comment"></span>
+<a name="l02721"></a>02721 <span class="comment">/// ParseDirectiveElse</span>
+<a name="l02722"></a>02722 <span class="comment">/// ::= .else</span>
+<a name="l02723"></a>02723 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveElse(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l02724"></a>02724   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02725"></a>02725     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.else' directive"</span>);
+<a name="l02726"></a>02726 
+<a name="l02727"></a>02727   Lex();
+<a name="l02728"></a>02728 
+<a name="l02729"></a>02729   <span class="keywordflow">if</span> (TheCondState.TheCond != AsmCond::IfCond &&
+<a name="l02730"></a>02730       TheCondState.TheCond != AsmCond::ElseIfCond)
+<a name="l02731"></a>02731       <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(DirectiveLoc, <span class="stringliteral">"Encountered a .else that doesn't follow a .if or an "</span>
+<a name="l02732"></a>02732                           <span class="stringliteral">".elseif"</span>);
+<a name="l02733"></a>02733   TheCondState.TheCond = AsmCond::ElseCond;
+<a name="l02734"></a>02734   <span class="keywordtype">bool</span> LastIgnoreState = <span class="keyword">false</span>;
+<a name="l02735"></a>02735   <span class="keywordflow">if</span> (!TheCondStack.empty())
+<a name="l02736"></a>02736     LastIgnoreState = TheCondStack.back().Ignore;
+<a name="l02737"></a>02737   <span class="keywordflow">if</span> (LastIgnoreState || TheCondState.CondMet)
+<a name="l02738"></a>02738     TheCondState.Ignore = <span class="keyword">true</span>;
+<a name="l02739"></a>02739   <span class="keywordflow">else</span>
+<a name="l02740"></a>02740     TheCondState.Ignore = <span class="keyword">false</span>;
+<a name="l02741"></a>02741 
+<a name="l02742"></a>02742   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02743"></a>02743 }
+<a name="l02744"></a>02744 <span class="comment"></span>
+<a name="l02745"></a>02745 <span class="comment">/// ParseDirectiveEndIf</span>
+<a name="l02746"></a>02746 <span class="comment">/// ::= .endif</span>
+<a name="l02747"></a>02747 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveEndIf(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l02748"></a>02748   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02749"></a>02749     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.endif' directive"</span>);
+<a name="l02750"></a>02750 
+<a name="l02751"></a>02751   Lex();
+<a name="l02752"></a>02752 
+<a name="l02753"></a>02753   <span class="keywordflow">if</span> ((TheCondState.TheCond == AsmCond::NoCond) ||
+<a name="l02754"></a>02754       TheCondStack.empty())
+<a name="l02755"></a>02755     <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(DirectiveLoc, <span class="stringliteral">"Encountered a .endif that doesn't follow a .if or "</span>
+<a name="l02756"></a>02756                         <span class="stringliteral">".else"</span>);
+<a name="l02757"></a>02757   <span class="keywordflow">if</span> (!TheCondStack.empty()) {
+<a name="l02758"></a>02758     TheCondState = TheCondStack.back();
+<a name="l02759"></a>02759     TheCondStack.pop_back();
+<a name="l02760"></a>02760   }
+<a name="l02761"></a>02761 
+<a name="l02762"></a>02762   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02763"></a>02763 }
+<a name="l02764"></a>02764 <span class="comment"></span>
+<a name="l02765"></a>02765 <span class="comment">/// ParseDirectiveFile</span>
+<a name="l02766"></a>02766 <span class="comment">/// ::= .file [number] filename</span>
+<a name="l02767"></a>02767 <span class="comment">/// ::= .file number directory filename</span>
+<a name="l02768"></a>02768 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveFile(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l02769"></a>02769   <span class="comment">// FIXME: I'm not sure what this is.</span>
+<a name="l02770"></a>02770   <a class="code" href="classint64__t.html">int64_t</a> FileNumber = -1;
+<a name="l02771"></a>02771   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> FileNumberLoc = getLexer().getLoc();
+<a name="l02772"></a>02772   <span class="keywordflow">if</span> (getLexer().is(AsmToken::Integer)) {
+<a name="l02773"></a>02773     FileNumber = getTok().getIntVal();
+<a name="l02774"></a>02774     Lex();
+<a name="l02775"></a>02775 
+<a name="l02776"></a>02776     <span class="keywordflow">if</span> (FileNumber < 1)
+<a name="l02777"></a>02777       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"file number less than one"</span>);
+<a name="l02778"></a>02778   }
+<a name="l02779"></a>02779 
+<a name="l02780"></a>02780   <span class="keywordflow">if</span> (getLexer().isNot(<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a394bf05139245f8e3ee22865dc9c1caf">AsmToken::String</a>))
+<a name="l02781"></a>02781     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.file' directive"</span>);
+<a name="l02782"></a>02782 
+<a name="l02783"></a>02783   <span class="comment">// Usually the directory and filename together, otherwise just the directory.</span>
+<a name="l02784"></a>02784   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="classllvm_1_1sys_1_1Path.html" title="An abstraction for operating system paths.">Path</a> = getTok().getString();
+<a name="l02785"></a>02785   Path = Path.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(1, Path.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>()-2);
+<a name="l02786"></a>02786   Lex();
+<a name="l02787"></a>02787 
+<a name="l02788"></a>02788   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Directory;
+<a name="l02789"></a>02789   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Filename;
+<a name="l02790"></a>02790   <span class="keywordflow">if</span> (getLexer().is(<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a394bf05139245f8e3ee22865dc9c1caf">AsmToken::String</a>)) {
+<a name="l02791"></a>02791     <span class="keywordflow">if</span> (FileNumber == -1)
+<a name="l02792"></a>02792       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"explicit path specified, but no file number"</span>);
+<a name="l02793"></a>02793     Filename = getTok().getString();
+<a name="l02794"></a>02794     Filename = Filename.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(1, Filename.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>()-2);
+<a name="l02795"></a>02795     Directory = Path;
+<a name="l02796"></a>02796     Lex();
+<a name="l02797"></a>02797   } <span class="keywordflow">else</span> {
+<a name="l02798"></a>02798     Filename = Path;
+<a name="l02799"></a>02799   }
+<a name="l02800"></a>02800 
+<a name="l02801"></a>02801   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02802"></a>02802     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.file' directive"</span>);
+<a name="l02803"></a>02803 
+<a name="l02804"></a>02804   <span class="keywordflow">if</span> (FileNumber == -1)
+<a name="l02805"></a>02805     getStreamer().EmitFileDirective(Filename);
+<a name="l02806"></a>02806   <span class="keywordflow">else</span> {
+<a name="l02807"></a>02807     <span class="keywordflow">if</span> (getContext().getGenDwarfForAssembly() == <span class="keyword">true</span>)
+<a name="l02808"></a>02808       <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(DirectiveLoc, <span class="stringliteral">"input can't have .file dwarf directives when -g is "</span>
+<a name="l02809"></a>02809                         <span class="stringliteral">"used to generate dwarf debug info for assembly code"</span>);
+<a name="l02810"></a>02810 
+<a name="l02811"></a>02811     <span class="keywordflow">if</span> (getStreamer().EmitDwarfFileDirective(FileNumber, Directory, Filename))
+<a name="l02812"></a>02812       <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(FileNumberLoc, <span class="stringliteral">"file number already allocated"</span>);
+<a name="l02813"></a>02813   }
+<a name="l02814"></a>02814 
+<a name="l02815"></a>02815   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02816"></a>02816 }
+<a name="l02817"></a>02817 <span class="comment"></span>
+<a name="l02818"></a>02818 <span class="comment">/// ParseDirectiveLine</span>
+<a name="l02819"></a>02819 <span class="comment">/// ::= .line [number]</span>
+<a name="l02820"></a>02820 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveLine(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l02821"></a>02821   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement)) {
+<a name="l02822"></a>02822     <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Integer))
+<a name="l02823"></a>02823       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.line' directive"</span>);
+<a name="l02824"></a>02824 
+<a name="l02825"></a>02825     <a class="code" href="classint64__t.html">int64_t</a> LineNumber = getTok().getIntVal();
+<a name="l02826"></a>02826     (void) LineNumber;
+<a name="l02827"></a>02827     Lex();
+<a name="l02828"></a>02828 
+<a name="l02829"></a>02829     <span class="comment">// FIXME: Do something with the .line.</span>
+<a name="l02830"></a>02830   }
+<a name="l02831"></a>02831 
+<a name="l02832"></a>02832   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l02833"></a>02833     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.line' directive"</span>);
+<a name="l02834"></a>02834 
+<a name="l02835"></a>02835   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02836"></a>02836 }
+<a name="l02837"></a>02837 
+<a name="l02838"></a>02838 <span class="comment"></span>
+<a name="l02839"></a>02839 <span class="comment">/// ParseDirectiveLoc</span>
+<a name="l02840"></a>02840 <span class="comment">/// ::= .loc FileNumber [LineNumber] [ColumnPos] [basic_block] [prologue_end]</span>
+<a name="l02841"></a>02841 <span class="comment">///                                [epilogue_begin] [is_stmt VALUE] [isa VALUE]</span>
+<a name="l02842"></a>02842 <span class="comment">/// The first number is a file number, must have been previously assigned with</span>
+<a name="l02843"></a>02843 <span class="comment">/// a .file directive, the second number is the line number and optionally the</span>
+<a name="l02844"></a>02844 <span class="comment">/// third number is a column position (zero if not specified).  The remaining</span>
+<a name="l02845"></a>02845 <span class="comment">/// optional items are .loc sub-directives.</span>
+<a name="l02846"></a>02846 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveLoc(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l02847"></a>02847 
+<a name="l02848"></a>02848   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Integer))
+<a name="l02849"></a>02849     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.loc' directive"</span>);
+<a name="l02850"></a>02850   <a class="code" href="classint64__t.html">int64_t</a> FileNumber = getTok().getIntVal();
+<a name="l02851"></a>02851   <span class="keywordflow">if</span> (FileNumber < 1)
+<a name="l02852"></a>02852     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"file number less than one in '.loc' directive"</span>);
+<a name="l02853"></a>02853   <span class="keywordflow">if</span> (!getContext().isValidDwarfFileNumber(FileNumber))
+<a name="l02854"></a>02854     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unassigned file number in '.loc' directive"</span>);
+<a name="l02855"></a>02855   Lex();
+<a name="l02856"></a>02856 
+<a name="l02857"></a>02857   <a class="code" href="classint64__t.html">int64_t</a> LineNumber = 0;
+<a name="l02858"></a>02858   <span class="keywordflow">if</span> (getLexer().is(AsmToken::Integer)) {
+<a name="l02859"></a>02859     LineNumber = getTok().getIntVal();
+<a name="l02860"></a>02860     <span class="keywordflow">if</span> (LineNumber < 1)
+<a name="l02861"></a>02861       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"line number less than one in '.loc' directive"</span>);
+<a name="l02862"></a>02862     Lex();
+<a name="l02863"></a>02863   }
+<a name="l02864"></a>02864 
+<a name="l02865"></a>02865   <a class="code" href="classint64__t.html">int64_t</a> ColumnPos = 0;
+<a name="l02866"></a>02866   <span class="keywordflow">if</span> (getLexer().is(AsmToken::Integer)) {
+<a name="l02867"></a>02867     ColumnPos = getTok().getIntVal();
+<a name="l02868"></a>02868     <span class="keywordflow">if</span> (ColumnPos < 0)
+<a name="l02869"></a>02869       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"column position less than zero in '.loc' directive"</span>);
+<a name="l02870"></a>02870     Lex();
+<a name="l02871"></a>02871   }
+<a name="l02872"></a>02872 
+<a name="l02873"></a>02873   <span class="keywordtype">unsigned</span> Flags = <a class="code" href="MCDwarf_8h.html#abc3534e4318dd6126f55a94635209c93">DWARF2_LINE_DEFAULT_IS_STMT</a> ? DWARF2_FLAG_IS_STMT : 0;
+<a name="l02874"></a>02874   <span class="keywordtype">unsigned</span> Isa = 0;
+<a name="l02875"></a>02875   <a class="code" href="classint64__t.html">int64_t</a> Discriminator = 0;
+<a name="l02876"></a>02876   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement)) {
+<a name="l02877"></a>02877     <span class="keywordflow">for</span> (;;) {
+<a name="l02878"></a>02878       <span class="keywordflow">if</span> (getLexer().is(AsmToken::EndOfStatement))
+<a name="l02879"></a>02879         <span class="keywordflow">break</span>;
+<a name="l02880"></a>02880 
+<a name="l02881"></a>02881       <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l02882"></a>02882       <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> Loc = getTok().getLoc();
+<a name="l02883"></a>02883       <span class="keywordflow">if</span> (getParser().ParseIdentifier(Name))
+<a name="l02884"></a>02884         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.loc' directive"</span>);
+<a name="l02885"></a>02885 
+<a name="l02886"></a>02886       <span class="keywordflow">if</span> (Name == <span class="stringliteral">"basic_block"</span>)
+<a name="l02887"></a>02887         Flags |= <a class="code" href="MCDwarf_8h.html#a74d34cc02788b4d55fcbdd15b3e0f223">DWARF2_FLAG_BASIC_BLOCK</a>;
+<a name="l02888"></a>02888       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Name == <span class="stringliteral">"prologue_end"</span>)
+<a name="l02889"></a>02889         Flags |= <a class="code" href="MCDwarf_8h.html#ac0c23e2e79a5713602b44382a3ecc960">DWARF2_FLAG_PROLOGUE_END</a>;
+<a name="l02890"></a>02890       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Name == <span class="stringliteral">"epilogue_begin"</span>)
+<a name="l02891"></a>02891         Flags |= <a class="code" href="MCDwarf_8h.html#aefa88a895bd349d0750ded8be4a29dda">DWARF2_FLAG_EPILOGUE_BEGIN</a>;
+<a name="l02892"></a>02892       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Name == <span class="stringliteral">"is_stmt"</span>) {
+<a name="l02893"></a>02893         <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> Loc = getTok().getLoc();
+<a name="l02894"></a>02894         <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Value;
+<a name="l02895"></a>02895         <span class="keywordflow">if</span> (getParser().ParseExpression(Value))
+<a name="l02896"></a>02896           <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02897"></a>02897         <span class="comment">// The expression must be the constant 0 or 1.</span>
+<a name="l02898"></a>02898         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCConstantExpr.html">MCConstantExpr</a> *MCE = dyn_cast<MCConstantExpr>(Value)) {
+<a name="l02899"></a>02899           <span class="keywordtype">int</span> Value = MCE->getValue();
+<a name="l02900"></a>02900           <span class="keywordflow">if</span> (Value == 0)
+<a name="l02901"></a>02901             Flags &= ~DWARF2_FLAG_IS_STMT;
+<a name="l02902"></a>02902           <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Value == 1)
+<a name="l02903"></a>02903             Flags |= <a class="code" href="MCDwarf_8h.html#a377ba69923635f8154cad5784be89ff6">DWARF2_FLAG_IS_STMT</a>;
+<a name="l02904"></a>02904           <span class="keywordflow">else</span>
+<a name="l02905"></a>02905             <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Loc, <span class="stringliteral">"is_stmt value not 0 or 1"</span>);
+<a name="l02906"></a>02906         }
+<a name="l02907"></a>02907         <span class="keywordflow">else</span> {
+<a name="l02908"></a>02908           <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Loc, <span class="stringliteral">"is_stmt value not the constant value of 0 or 1"</span>);
+<a name="l02909"></a>02909         }
+<a name="l02910"></a>02910       }
+<a name="l02911"></a>02911       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Name == <span class="stringliteral">"isa"</span>) {
+<a name="l02912"></a>02912         <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> Loc = getTok().getLoc();
+<a name="l02913"></a>02913         <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Value;
+<a name="l02914"></a>02914         <span class="keywordflow">if</span> (getParser().ParseExpression(Value))
+<a name="l02915"></a>02915           <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02916"></a>02916         <span class="comment">// The expression must be a constant greater or equal to 0.</span>
+<a name="l02917"></a>02917         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCConstantExpr.html">MCConstantExpr</a> *MCE = dyn_cast<MCConstantExpr>(Value)) {
+<a name="l02918"></a>02918           <span class="keywordtype">int</span> Value = MCE->getValue();
+<a name="l02919"></a>02919           <span class="keywordflow">if</span> (Value < 0)
+<a name="l02920"></a>02920             <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Loc, <span class="stringliteral">"isa number less than zero"</span>);
+<a name="l02921"></a>02921           Isa = Value;
+<a name="l02922"></a>02922         }
+<a name="l02923"></a>02923         <span class="keywordflow">else</span> {
+<a name="l02924"></a>02924           <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Loc, <span class="stringliteral">"isa number not a constant value"</span>);
+<a name="l02925"></a>02925         }
+<a name="l02926"></a>02926       }
+<a name="l02927"></a>02927       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Name == <span class="stringliteral">"discriminator"</span>) {
+<a name="l02928"></a>02928         <span class="keywordflow">if</span> (getParser().ParseAbsoluteExpression(Discriminator))
+<a name="l02929"></a>02929           <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l02930"></a>02930       }
+<a name="l02931"></a>02931       <span class="keywordflow">else</span> {
+<a name="l02932"></a>02932         <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Loc, <span class="stringliteral">"unknown sub-directive in '.loc' directive"</span>);
+<a name="l02933"></a>02933       }
+<a name="l02934"></a>02934 
+<a name="l02935"></a>02935       <span class="keywordflow">if</span> (getLexer().is(AsmToken::EndOfStatement))
+<a name="l02936"></a>02936         <span class="keywordflow">break</span>;
+<a name="l02937"></a>02937     }
+<a name="l02938"></a>02938   }
+<a name="l02939"></a>02939 
+<a name="l02940"></a>02940   getStreamer().EmitDwarfLocDirective(FileNumber, LineNumber, ColumnPos, Flags,
+<a name="l02941"></a>02941                                       Isa, Discriminator, <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>());
+<a name="l02942"></a>02942 
+<a name="l02943"></a>02943   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02944"></a>02944 }
+<a name="l02945"></a>02945 <span class="comment"></span>
+<a name="l02946"></a>02946 <span class="comment">/// ParseDirectiveStabs</span>
+<a name="l02947"></a>02947 <span class="comment">/// ::= .stabs string, number, number, number</span>
+<a name="l02948"></a>02948 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveStabs(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Directive,
+<a name="l02949"></a>02949                                            <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l02950"></a>02950   <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unsupported directive '"</span> + Directive + <span class="stringliteral">"'"</span>);
+<a name="l02951"></a>02951 }
+<a name="l02952"></a>02952 <span class="comment"></span>
+<a name="l02953"></a>02953 <span class="comment">/// ParseDirectiveCFISections</span>
+<a name="l02954"></a>02954 <span class="comment">/// ::= .cfi_sections section [, section]</span>
+<a name="l02955"></a>02955 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFISections(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>,
+<a name="l02956"></a>02956                                                  <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l02957"></a>02957   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l02958"></a>02958   <span class="keywordtype">bool</span> EH = <span class="keyword">false</span>;
+<a name="l02959"></a>02959   <span class="keywordtype">bool</span> <a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa14af644ca4aff07a3768974c824ac9d5">Debug</a> = <span class="keyword">false</span>;
+<a name="l02960"></a>02960 
+<a name="l02961"></a>02961   <span class="keywordflow">if</span> (getParser().ParseIdentifier(Name))
+<a name="l02962"></a>02962     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"Expected an identifier"</span>);
+<a name="l02963"></a>02963 
+<a name="l02964"></a>02964   <span class="keywordflow">if</span> (Name == <span class="stringliteral">".eh_frame"</span>)
+<a name="l02965"></a>02965     EH = <span class="keyword">true</span>;
+<a name="l02966"></a>02966   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Name == <span class="stringliteral">".debug_frame"</span>)
+<a name="l02967"></a>02967     Debug = <span class="keyword">true</span>;
+<a name="l02968"></a>02968 
+<a name="l02969"></a>02969   <span class="keywordflow">if</span> (getLexer().is(AsmToken::Comma)) {
+<a name="l02970"></a>02970     Lex();
+<a name="l02971"></a>02971 
+<a name="l02972"></a>02972     <span class="keywordflow">if</span> (getParser().ParseIdentifier(Name))
+<a name="l02973"></a>02973       <span class="keywordflow">return</span> TokError(<span class="stringliteral">"Expected an identifier"</span>);
+<a name="l02974"></a>02974 
+<a name="l02975"></a>02975     <span class="keywordflow">if</span> (Name == <span class="stringliteral">".eh_frame"</span>)
+<a name="l02976"></a>02976       EH = <span class="keyword">true</span>;
+<a name="l02977"></a>02977     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Name == <span class="stringliteral">".debug_frame"</span>)
+<a name="l02978"></a>02978       Debug = <span class="keyword">true</span>;
+<a name="l02979"></a>02979   }
+<a name="l02980"></a>02980 
+<a name="l02981"></a>02981   getStreamer().EmitCFISections(EH, Debug);
+<a name="l02982"></a>02982 
+<a name="l02983"></a>02983   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02984"></a>02984 }
+<a name="l02985"></a>02985 <span class="comment"></span>
+<a name="l02986"></a>02986 <span class="comment">/// ParseDirectiveCFIStartProc</span>
+<a name="l02987"></a>02987 <span class="comment">/// ::= .cfi_startproc</span>
+<a name="l02988"></a>02988 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIStartProc(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>,
+<a name="l02989"></a>02989                                                   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l02990"></a>02990   getStreamer().EmitCFIStartProc();
+<a name="l02991"></a>02991   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02992"></a>02992 }
+<a name="l02993"></a>02993 <span class="comment"></span>
+<a name="l02994"></a>02994 <span class="comment">/// ParseDirectiveCFIEndProc</span>
+<a name="l02995"></a>02995 <span class="comment">/// ::= .cfi_endproc</span>
+<a name="l02996"></a>02996 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIEndProc(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l02997"></a>02997   getStreamer().EmitCFIEndProc();
+<a name="l02998"></a>02998   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l02999"></a>02999 }
+<a name="l03000"></a>03000 <span class="comment"></span>
+<a name="l03001"></a>03001 <span class="comment">/// ParseRegisterOrRegisterNumber - parse register name or number.</span>
+<a name="l03002"></a>03002 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseRegisterOrRegisterNumber(<a class="code" href="classint64__t.html">int64_t</a> &<a class="code" href="Mem2Reg_8cpp.html#a6fde3eb6ca09ddf2fd76432176d817bb">Register</a>,
+<a name="l03003"></a>03003                                                      <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03004"></a>03004   <span class="keywordtype">unsigned</span> RegNo;
+<a name="l03005"></a>03005 
+<a name="l03006"></a>03006   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Integer)) {
+<a name="l03007"></a>03007     <span class="keywordflow">if</span> (getParser().getTargetParser().ParseRegister(RegNo, DirectiveLoc,
+<a name="l03008"></a>03008       DirectiveLoc))
+<a name="l03009"></a>03009       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03010"></a>03010     Register = getContext().getRegisterInfo().getDwarfRegNum(RegNo, <span class="keyword">true</span>);
+<a name="l03011"></a>03011   } <span class="keywordflow">else</span>
+<a name="l03012"></a>03012     <span class="keywordflow">return</span> getParser().ParseAbsoluteExpression(Register);
+<a name="l03013"></a>03013 
+<a name="l03014"></a>03014   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03015"></a>03015 }
+<a name="l03016"></a>03016 <span class="comment"></span>
+<a name="l03017"></a>03017 <span class="comment">/// ParseDirectiveCFIDefCfa</span>
+<a name="l03018"></a>03018 <span class="comment">/// ::= .cfi_def_cfa register,  offset</span>
+<a name="l03019"></a>03019 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIDefCfa(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>,
+<a name="l03020"></a>03020                                                <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03021"></a>03021   <a class="code" href="classint64__t.html">int64_t</a> Register = 0;
+<a name="l03022"></a>03022   <span class="keywordflow">if</span> (ParseRegisterOrRegisterNumber(Register, DirectiveLoc))
+<a name="l03023"></a>03023     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03024"></a>03024 
+<a name="l03025"></a>03025   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l03026"></a>03026     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l03027"></a>03027   Lex();
+<a name="l03028"></a>03028 
+<a name="l03029"></a>03029   <a class="code" href="classint64__t.html">int64_t</a> Offset = 0;
+<a name="l03030"></a>03030   <span class="keywordflow">if</span> (getParser().ParseAbsoluteExpression(Offset))
+<a name="l03031"></a>03031     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03032"></a>03032 
+<a name="l03033"></a>03033   getStreamer().EmitCFIDefCfa(Register, Offset);
+<a name="l03034"></a>03034   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03035"></a>03035 }
+<a name="l03036"></a>03036 <span class="comment"></span>
+<a name="l03037"></a>03037 <span class="comment">/// ParseDirectiveCFIDefCfaOffset</span>
+<a name="l03038"></a>03038 <span class="comment">/// ::= .cfi_def_cfa_offset offset</span>
+<a name="l03039"></a>03039 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIDefCfaOffset(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>,
+<a name="l03040"></a>03040                                                      <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03041"></a>03041   <a class="code" href="classint64__t.html">int64_t</a> Offset = 0;
+<a name="l03042"></a>03042   <span class="keywordflow">if</span> (getParser().ParseAbsoluteExpression(Offset))
+<a name="l03043"></a>03043     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03044"></a>03044 
+<a name="l03045"></a>03045   getStreamer().EmitCFIDefCfaOffset(Offset);
+<a name="l03046"></a>03046   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03047"></a>03047 }
+<a name="l03048"></a>03048 <span class="comment"></span>
+<a name="l03049"></a>03049 <span class="comment">/// ParseDirectiveCFIAdjustCfaOffset</span>
+<a name="l03050"></a>03050 <span class="comment">/// ::= .cfi_adjust_cfa_offset adjustment</span>
+<a name="l03051"></a>03051 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIAdjustCfaOffset(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>,
+<a name="l03052"></a>03052                                                         <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03053"></a>03053   <a class="code" href="classint64__t.html">int64_t</a> Adjustment = 0;
+<a name="l03054"></a>03054   <span class="keywordflow">if</span> (getParser().ParseAbsoluteExpression(Adjustment))
+<a name="l03055"></a>03055     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03056"></a>03056 
+<a name="l03057"></a>03057   getStreamer().EmitCFIAdjustCfaOffset(Adjustment);
+<a name="l03058"></a>03058   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03059"></a>03059 }
+<a name="l03060"></a>03060 <span class="comment"></span>
+<a name="l03061"></a>03061 <span class="comment">/// ParseDirectiveCFIDefCfaRegister</span>
+<a name="l03062"></a>03062 <span class="comment">/// ::= .cfi_def_cfa_register register</span>
+<a name="l03063"></a>03063 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIDefCfaRegister(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>,
+<a name="l03064"></a>03064                                                        <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03065"></a>03065   <a class="code" href="classint64__t.html">int64_t</a> Register = 0;
+<a name="l03066"></a>03066   <span class="keywordflow">if</span> (ParseRegisterOrRegisterNumber(Register, DirectiveLoc))
+<a name="l03067"></a>03067     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03068"></a>03068 
+<a name="l03069"></a>03069   getStreamer().EmitCFIDefCfaRegister(Register);
+<a name="l03070"></a>03070   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03071"></a>03071 }
+<a name="l03072"></a>03072 <span class="comment"></span>
+<a name="l03073"></a>03073 <span class="comment">/// ParseDirectiveCFIOffset</span>
+<a name="l03074"></a>03074 <span class="comment">/// ::= .cfi_offset register, offset</span>
+<a name="l03075"></a>03075 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIOffset(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03076"></a>03076   <a class="code" href="classint64__t.html">int64_t</a> Register = 0;
+<a name="l03077"></a>03077   <a class="code" href="classint64__t.html">int64_t</a> Offset = 0;
+<a name="l03078"></a>03078 
+<a name="l03079"></a>03079   <span class="keywordflow">if</span> (ParseRegisterOrRegisterNumber(Register, DirectiveLoc))
+<a name="l03080"></a>03080     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03081"></a>03081 
+<a name="l03082"></a>03082   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l03083"></a>03083     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l03084"></a>03084   Lex();
+<a name="l03085"></a>03085 
+<a name="l03086"></a>03086   <span class="keywordflow">if</span> (getParser().ParseAbsoluteExpression(Offset))
+<a name="l03087"></a>03087     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03088"></a>03088 
+<a name="l03089"></a>03089   getStreamer().EmitCFIOffset(Register, Offset);
+<a name="l03090"></a>03090   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03091"></a>03091 }
+<a name="l03092"></a>03092 <span class="comment"></span>
+<a name="l03093"></a>03093 <span class="comment">/// ParseDirectiveCFIRelOffset</span>
+<a name="l03094"></a>03094 <span class="comment">/// ::= .cfi_rel_offset register, offset</span>
+<a name="l03095"></a>03095 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIRelOffset(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>,
+<a name="l03096"></a>03096                                                   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03097"></a>03097   <a class="code" href="classint64__t.html">int64_t</a> Register = 0;
+<a name="l03098"></a>03098 
+<a name="l03099"></a>03099   <span class="keywordflow">if</span> (ParseRegisterOrRegisterNumber(Register, DirectiveLoc))
+<a name="l03100"></a>03100     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03101"></a>03101 
+<a name="l03102"></a>03102   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l03103"></a>03103     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l03104"></a>03104   Lex();
+<a name="l03105"></a>03105 
+<a name="l03106"></a>03106   <a class="code" href="classint64__t.html">int64_t</a> Offset = 0;
+<a name="l03107"></a>03107   <span class="keywordflow">if</span> (getParser().ParseAbsoluteExpression(Offset))
+<a name="l03108"></a>03108     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03109"></a>03109 
+<a name="l03110"></a>03110   getStreamer().EmitCFIRelOffset(Register, Offset);
+<a name="l03111"></a>03111   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03112"></a>03112 }
+<a name="l03113"></a>03113 
+<a name="l03114"></a><a class="code" href="AsmParser_8cpp.html#a3bac8de926a7ec7b9877746d5d3d3334">03114</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="AsmParser_8cpp.html#a3bac8de926a7ec7b9877746d5d3d3334">isValidEncoding</a>(<a class="code" href="classint64__t.html">int64_t</a> Encoding) {
+<a name="l03115"></a>03115   <span class="keywordflow">if</span> (Encoding & ~0xff)
+<a name="l03116"></a>03116     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03117"></a>03117 
+<a name="l03118"></a>03118   <span class="keywordflow">if</span> (Encoding == <a class="code" href="namespacellvm_1_1dwarf.html#a85bda042c02722848a3411b67924eb47af88641d07cb5fdb688ad0d4e78314222">dwarf::DW_EH_PE_omit</a>)
+<a name="l03119"></a>03119     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03120"></a>03120 
+<a name="l03121"></a>03121   <span class="keyword">const</span> <span class="keywordtype">unsigned</span> Format = Encoding & 0xf;
+<a name="l03122"></a>03122   <span class="keywordflow">if</span> (Format != <a class="code" href="namespacellvm_1_1dwarf.html#a85bda042c02722848a3411b67924eb47ab8bb265a153372d87860f6a33d858f3e">dwarf::DW_EH_PE_absptr</a> && Format != <a class="code" href="namespacellvm_1_1dwarf.html#a85bda042c02722848a3411b67924eb47ab06941f802d97190e82e32018265b5f1">dwarf::DW_EH_PE_udata2</a> &&
+<a name="l03123"></a>03123       Format != <a class="code" href="namespacellvm_1_1dwarf.html#a85bda042c02722848a3411b67924eb47abfafdba601fd5cab55113f2cdb96c033">dwarf::DW_EH_PE_udata4</a> && Format != <a class="code" href="namespacellvm_1_1dwarf.html#a85bda042c02722848a3411b67924eb47ac75ce7ce2df1136a194d4cd1d889c06a">dwarf::DW_EH_PE_udata8</a> &&
+<a name="l03124"></a>03124       Format != <a class="code" href="namespacellvm_1_1dwarf.html#a85bda042c02722848a3411b67924eb47abf732c58551b977c2f830e8ddd06e64f">dwarf::DW_EH_PE_sdata2</a> && Format != <a class="code" href="namespacellvm_1_1dwarf.html#a85bda042c02722848a3411b67924eb47a68bcc7d64ea60cf76503e913360e0b01">dwarf::DW_EH_PE_sdata4</a> &&
+<a name="l03125"></a>03125       Format != <a class="code" href="namespacellvm_1_1dwarf.html#a85bda042c02722848a3411b67924eb47ab4f228eae8e91cb5eb218c4372d2cd75">dwarf::DW_EH_PE_sdata8</a> && Format != <a class="code" href="namespacellvm_1_1dwarf.html#a85bda042c02722848a3411b67924eb47a43244ccf6c5f085a9fdf303d86761a27">dwarf::DW_EH_PE_signed</a>)
+<a name="l03126"></a>03126     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03127"></a>03127 
+<a name="l03128"></a>03128   <span class="keyword">const</span> <span class="keywordtype">unsigned</span> Application = Encoding & 0x70;
+<a name="l03129"></a>03129   <span class="keywordflow">if</span> (Application != <a class="code" href="namespacellvm_1_1dwarf.html#a85bda042c02722848a3411b67924eb47ab8bb265a153372d87860f6a33d858f3e">dwarf::DW_EH_PE_absptr</a> &&
+<a name="l03130"></a>03130       Application != <a class="code" href="namespacellvm_1_1dwarf.html#a85bda042c02722848a3411b67924eb47a18cb02c6dc96569494f65b82ab70487b">dwarf::DW_EH_PE_pcrel</a>)
+<a name="l03131"></a>03131     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03132"></a>03132 
+<a name="l03133"></a>03133   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03134"></a>03134 }
+<a name="l03135"></a>03135 <span class="comment"></span>
+<a name="l03136"></a>03136 <span class="comment">/// ParseDirectiveCFIPersonalityOrLsda</span>
+<a name="l03137"></a>03137 <span class="comment">/// ::= .cfi_personality encoding, [symbol_name]</span>
+<a name="l03138"></a>03138 <span class="comment">/// ::= .cfi_lsda encoding, [symbol_name]</span>
+<a name="l03139"></a>03139 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIPersonalityOrLsda(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal,
+<a name="l03140"></a>03140                                                     <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03141"></a>03141   <a class="code" href="classint64__t.html">int64_t</a> Encoding = 0;
+<a name="l03142"></a>03142   <span class="keywordflow">if</span> (getParser().ParseAbsoluteExpression(Encoding))
+<a name="l03143"></a>03143     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03144"></a>03144   <span class="keywordflow">if</span> (Encoding == <a class="code" href="namespacellvm_1_1dwarf.html#a85bda042c02722848a3411b67924eb47af88641d07cb5fdb688ad0d4e78314222">dwarf::DW_EH_PE_omit</a>)
+<a name="l03145"></a>03145     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03146"></a>03146 
+<a name="l03147"></a>03147   <span class="keywordflow">if</span> (!<a class="code" href="AsmParser_8cpp.html#a3bac8de926a7ec7b9877746d5d3d3334">isValidEncoding</a>(Encoding))
+<a name="l03148"></a>03148     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unsupported encoding."</span>);
+<a name="l03149"></a>03149 
+<a name="l03150"></a>03150   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::Comma))
+<a name="l03151"></a>03151     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l03152"></a>03152   Lex();
+<a name="l03153"></a>03153 
+<a name="l03154"></a>03154   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l03155"></a>03155   <span class="keywordflow">if</span> (getParser().ParseIdentifier(Name))
+<a name="l03156"></a>03156     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected identifier in directive"</span>);
+<a name="l03157"></a>03157 
+<a name="l03158"></a>03158   <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = getContext().GetOrCreateSymbol(Name);
+<a name="l03159"></a>03159 
+<a name="l03160"></a>03160   <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".cfi_personality"</span>)
+<a name="l03161"></a>03161     getStreamer().EmitCFIPersonality(Sym, Encoding);
+<a name="l03162"></a>03162   <span class="keywordflow">else</span> {
+<a name="l03163"></a>03163     assert(IDVal == <span class="stringliteral">".cfi_lsda"</span>);
+<a name="l03164"></a>03164     getStreamer().EmitCFILsda(Sym, Encoding);
+<a name="l03165"></a>03165   }
+<a name="l03166"></a>03166   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03167"></a>03167 }
+<a name="l03168"></a>03168 <span class="comment"></span>
+<a name="l03169"></a>03169 <span class="comment">/// ParseDirectiveCFIRememberState</span>
+<a name="l03170"></a>03170 <span class="comment">/// ::= .cfi_remember_state</span>
+<a name="l03171"></a>03171 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIRememberState(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal,
+<a name="l03172"></a>03172                                                       <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03173"></a>03173   getStreamer().EmitCFIRememberState();
+<a name="l03174"></a>03174   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03175"></a>03175 }
+<a name="l03176"></a>03176 <span class="comment"></span>
+<a name="l03177"></a>03177 <span class="comment">/// ParseDirectiveCFIRestoreState</span>
+<a name="l03178"></a>03178 <span class="comment">/// ::= .cfi_remember_state</span>
+<a name="l03179"></a>03179 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIRestoreState(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal,
+<a name="l03180"></a>03180                                                      <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03181"></a>03181   getStreamer().EmitCFIRestoreState();
+<a name="l03182"></a>03182   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03183"></a>03183 }
+<a name="l03184"></a>03184 <span class="comment"></span>
+<a name="l03185"></a>03185 <span class="comment">/// ParseDirectiveCFISameValue</span>
+<a name="l03186"></a>03186 <span class="comment">/// ::= .cfi_same_value register</span>
+<a name="l03187"></a>03187 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFISameValue(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal,
+<a name="l03188"></a>03188                                                   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03189"></a>03189   <a class="code" href="classint64__t.html">int64_t</a> Register = 0;
+<a name="l03190"></a>03190 
+<a name="l03191"></a>03191   <span class="keywordflow">if</span> (ParseRegisterOrRegisterNumber(Register, DirectiveLoc))
+<a name="l03192"></a>03192     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03193"></a>03193 
+<a name="l03194"></a>03194   getStreamer().EmitCFISameValue(Register);
+<a name="l03195"></a>03195 
+<a name="l03196"></a>03196   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03197"></a>03197 }
+<a name="l03198"></a>03198 <span class="comment"></span>
+<a name="l03199"></a>03199 <span class="comment">/// ParseDirectiveCFIRestore</span>
+<a name="l03200"></a>03200 <span class="comment">/// ::= .cfi_restore register</span>
+<a name="l03201"></a>03201 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIRestore(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal,
+<a name="l03202"></a>03202                                                 <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03203"></a>03203   <a class="code" href="classint64__t.html">int64_t</a> Register = 0;
+<a name="l03204"></a>03204   <span class="keywordflow">if</span> (ParseRegisterOrRegisterNumber(Register, DirectiveLoc))
+<a name="l03205"></a>03205     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03206"></a>03206 
+<a name="l03207"></a>03207   getStreamer().EmitCFIRestore(Register);
+<a name="l03208"></a>03208 
+<a name="l03209"></a>03209   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03210"></a>03210 }
+<a name="l03211"></a>03211 <span class="comment"></span>
+<a name="l03212"></a>03212 <span class="comment">/// ParseDirectiveCFIEscape</span>
+<a name="l03213"></a>03213 <span class="comment">/// ::= .cfi_escape expression[,...]</span>
+<a name="l03214"></a>03214 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFIEscape(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal,
+<a name="l03215"></a>03215                                                <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03216"></a>03216   std::string Values;
+<a name="l03217"></a>03217   <a class="code" href="classint64__t.html">int64_t</a> CurrValue;
+<a name="l03218"></a>03218   <span class="keywordflow">if</span> (getParser().ParseAbsoluteExpression(CurrValue))
+<a name="l03219"></a>03219     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03220"></a>03220 
+<a name="l03221"></a>03221   Values.push_back((uint8_t)CurrValue);
+<a name="l03222"></a>03222 
+<a name="l03223"></a>03223   <span class="keywordflow">while</span> (getLexer().is(AsmToken::Comma)) {
+<a name="l03224"></a>03224     Lex();
+<a name="l03225"></a>03225 
+<a name="l03226"></a>03226     <span class="keywordflow">if</span> (getParser().ParseAbsoluteExpression(CurrValue))
+<a name="l03227"></a>03227       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03228"></a>03228 
+<a name="l03229"></a>03229     Values.push_back((uint8_t)CurrValue);
+<a name="l03230"></a>03230   }
+<a name="l03231"></a>03231 
+<a name="l03232"></a>03232   getStreamer().EmitCFIEscape(Values);
+<a name="l03233"></a>03233   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03234"></a>03234 }
+<a name="l03235"></a>03235 <span class="comment"></span>
+<a name="l03236"></a>03236 <span class="comment">/// ParseDirectiveCFISignalFrame</span>
+<a name="l03237"></a>03237 <span class="comment">/// ::= .cfi_signal_frame</span>
+<a name="l03238"></a>03238 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveCFISignalFrame(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Directive,
+<a name="l03239"></a>03239                                                     <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03240"></a>03240   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l03241"></a>03241     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(getLexer().getLoc(),
+<a name="l03242"></a>03242                  <span class="stringliteral">"unexpected token in '"</span> + Directive + <span class="stringliteral">"' directive"</span>);
+<a name="l03243"></a>03243 
+<a name="l03244"></a>03244   getStreamer().EmitCFISignalFrame();
+<a name="l03245"></a>03245 
+<a name="l03246"></a>03246   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03247"></a>03247 }
+<a name="l03248"></a>03248 <span class="comment"></span>
+<a name="l03249"></a>03249 <span class="comment">/// ParseDirectiveMacrosOnOff</span>
+<a name="l03250"></a>03250 <span class="comment">/// ::= .macros_on</span>
+<a name="l03251"></a>03251 <span class="comment">/// ::= .macros_off</span>
+<a name="l03252"></a>03252 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveMacrosOnOff(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Directive,
+<a name="l03253"></a>03253                                                  <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03254"></a>03254   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l03255"></a>03255     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(getLexer().getLoc(),
+<a name="l03256"></a>03256                  <span class="stringliteral">"unexpected token in '"</span> + Directive + <span class="stringliteral">"' directive"</span>);
+<a name="l03257"></a>03257 
+<a name="l03258"></a>03258   getParser().MacrosEnabled = Directive == <span class="stringliteral">".macros_on"</span>;
+<a name="l03259"></a>03259 
+<a name="l03260"></a>03260   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03261"></a>03261 }
+<a name="l03262"></a>03262 <span class="comment"></span>
+<a name="l03263"></a>03263 <span class="comment">/// ParseDirectiveMacro</span>
+<a name="l03264"></a>03264 <span class="comment">/// ::= .macro name [parameters]</span>
+<a name="l03265"></a>03265 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveMacro(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Directive,
+<a name="l03266"></a>03266                                            <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03267"></a>03267   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l03268"></a>03268   <span class="keywordflow">if</span> (getParser().ParseIdentifier(Name))
+<a name="l03269"></a>03269     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected identifier in '.macro' directive"</span>);
+<a name="l03270"></a>03270 
+<a name="l03271"></a>03271   MacroParameters Parameters;
+<a name="l03272"></a>03272   <span class="comment">// Argument delimiter is initially unknown. It will be set by</span>
+<a name="l03273"></a>03273   <span class="comment">// ParseMacroArgument()</span>
+<a name="l03274"></a>03274   <a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039">AsmToken::TokenKind</a> ArgumentDelimiter = <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>;
+<a name="l03275"></a>03275   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement)) {
+<a name="l03276"></a>03276     <span class="keywordflow">for</span> (;;) {
+<a name="l03277"></a>03277       MacroParameter Parameter;
+<a name="l03278"></a>03278       <span class="keywordflow">if</span> (getParser().ParseIdentifier(Parameter.first))
+<a name="l03279"></a>03279         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected identifier in '.macro' directive"</span>);
+<a name="l03280"></a>03280 
+<a name="l03281"></a>03281       <span class="keywordflow">if</span> (getLexer().is(AsmToken::Equal)) {
+<a name="l03282"></a>03282         Lex();
+<a name="l03283"></a>03283         <span class="keywordflow">if</span> (getParser().ParseMacroArgument(Parameter.second, ArgumentDelimiter))
+<a name="l03284"></a>03284           <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03285"></a>03285       }
+<a name="l03286"></a>03286 
+<a name="l03287"></a>03287       Parameters.push_back(Parameter);
+<a name="l03288"></a>03288 
+<a name="l03289"></a>03289       <span class="keywordflow">if</span> (getLexer().is(AsmToken::Comma))
+<a name="l03290"></a>03290         Lex();
+<a name="l03291"></a>03291       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (getLexer().is(AsmToken::EndOfStatement))
+<a name="l03292"></a>03292         <span class="keywordflow">break</span>;
+<a name="l03293"></a>03293     }
+<a name="l03294"></a>03294   }
+<a name="l03295"></a>03295 
+<a name="l03296"></a>03296   <span class="comment">// Eat the end of statement.</span>
+<a name="l03297"></a>03297   Lex();
+<a name="l03298"></a>03298 
+<a name="l03299"></a>03299   <a class="code" href="classllvm_1_1AsmToken.html" title="AsmToken - Target independent representation for an assembler token.">AsmToken</a> EndToken, StartToken = getTok();
+<a name="l03300"></a>03300 
+<a name="l03301"></a>03301   <span class="comment">// Lex the macro definition.</span>
+<a name="l03302"></a>03302   <span class="keywordflow">for</span> (;;) {
+<a name="l03303"></a>03303     <span class="comment">// Check whether we have reached the end of the file.</span>
+<a name="l03304"></a>03304     <span class="keywordflow">if</span> (getLexer().is(<a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>))
+<a name="l03305"></a>03305       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(DirectiveLoc, <span class="stringliteral">"no matching '.endmacro' in definition"</span>);
+<a name="l03306"></a>03306 
+<a name="l03307"></a>03307     <span class="comment">// Otherwise, check whether we have reach the .endmacro.</span>
+<a name="l03308"></a>03308     <span class="keywordflow">if</span> (getLexer().is(AsmToken::Identifier) &&
+<a name="l03309"></a>03309         (getTok().getIdentifier() == <span class="stringliteral">".endm"</span> ||
+<a name="l03310"></a>03310          getTok().getIdentifier() == <span class="stringliteral">".endmacro"</span>)) {
+<a name="l03311"></a>03311       EndToken = getTok();
+<a name="l03312"></a>03312       Lex();
+<a name="l03313"></a>03313       <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l03314"></a>03314         <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '"</span> + EndToken.<a class="code" href="classllvm_1_1AsmToken.html#a25860c6ffc7116937ab327771c3dd08f">getIdentifier</a>() +
+<a name="l03315"></a>03315                         <span class="stringliteral">"' directive"</span>);
+<a name="l03316"></a>03316       <span class="keywordflow">break</span>;
+<a name="l03317"></a>03317     }
+<a name="l03318"></a>03318 
+<a name="l03319"></a>03319     <span class="comment">// Otherwise, scan til the end of the statement.</span>
+<a name="l03320"></a>03320     getParser().EatToEndOfStatement();
+<a name="l03321"></a>03321   }
+<a name="l03322"></a>03322 
+<a name="l03323"></a>03323   <span class="keywordflow">if</span> (getParser().MacroMap.lookup(Name)) {
+<a name="l03324"></a>03324     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(DirectiveLoc, <span class="stringliteral">"macro '"</span> + Name + <span class="stringliteral">"' is already defined"</span>);
+<a name="l03325"></a>03325   }
+<a name="l03326"></a>03326 
+<a name="l03327"></a>03327   <span class="keyword">const</span> <span class="keywordtype">char</span> *BodyStart = StartToken.<a class="code" href="classllvm_1_1AsmToken.html#add7f9405ba7ad0891528a4cf5f47f45e">getLoc</a>().<a class="code" href="classllvm_1_1SMLoc.html#a57b9155169a1c2d0f2363cd4fdd97ac7">getPointer</a>();
+<a name="l03328"></a>03328   <span class="keyword">const</span> <span class="keywordtype">char</span> *BodyEnd = EndToken.<a class="code" href="classllvm_1_1AsmToken.html#add7f9405ba7ad0891528a4cf5f47f45e">getLoc</a>().<a class="code" href="classllvm_1_1SMLoc.html#a57b9155169a1c2d0f2363cd4fdd97ac7">getPointer</a>();
+<a name="l03329"></a>03329   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Body = <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(BodyStart, BodyEnd - BodyStart);
+<a name="l03330"></a>03330   getParser().MacroMap[<a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>] = <span class="keyword">new</span> Macro(Name, Body, Parameters);
+<a name="l03331"></a>03331   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03332"></a>03332 }
+<a name="l03333"></a>03333 <span class="comment"></span>
+<a name="l03334"></a>03334 <span class="comment">/// ParseDirectiveEndMacro</span>
+<a name="l03335"></a>03335 <span class="comment">/// ::= .endm</span>
+<a name="l03336"></a>03336 <span class="comment">/// ::= .endmacro</span>
+<a name="l03337"></a>03337 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveEndMacro(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Directive,
+<a name="l03338"></a>03338                                               <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03339"></a>03339   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l03340"></a>03340     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '"</span> + Directive + <span class="stringliteral">"' directive"</span>);
+<a name="l03341"></a>03341 
+<a name="l03342"></a>03342   <span class="comment">// If we are inside a macro instantiation, terminate the current</span>
+<a name="l03343"></a>03343   <span class="comment">// instantiation.</span>
+<a name="l03344"></a>03344   <span class="keywordflow">if</span> (!getParser().ActiveMacros.empty()) {
+<a name="l03345"></a>03345     getParser().HandleMacroExit();
+<a name="l03346"></a>03346     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03347"></a>03347   }
+<a name="l03348"></a>03348 
+<a name="l03349"></a>03349   <span class="comment">// Otherwise, this .endmacro is a stray entry in the file; well formed</span>
+<a name="l03350"></a>03350   <span class="comment">// .endmacro directives are handled during the macro definition parsing.</span>
+<a name="l03351"></a>03351   <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected '"</span> + Directive + <span class="stringliteral">"' in file, "</span>
+<a name="l03352"></a>03352                   <span class="stringliteral">"no current macro definition"</span>);
+<a name="l03353"></a>03353 }
+<a name="l03354"></a>03354 <span class="comment"></span>
+<a name="l03355"></a>03355 <span class="comment">/// ParseDirectivePurgeMacro</span>
+<a name="l03356"></a>03356 <span class="comment">/// ::= .purgem</span>
+<a name="l03357"></a>03357 <span class="comment"></span><span class="keywordtype">bool</span> GenericAsmParser::ParseDirectivePurgeMacro(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Directive,
+<a name="l03358"></a>03358                                                 <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03359"></a>03359   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l03360"></a>03360   <span class="keywordflow">if</span> (getParser().ParseIdentifier(Name))
+<a name="l03361"></a>03361     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected identifier in '.purgem' directive"</span>);
+<a name="l03362"></a>03362 
+<a name="l03363"></a>03363   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l03364"></a>03364     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.purgem' directive"</span>);
+<a name="l03365"></a>03365 
+<a name="l03366"></a>03366   <a class="code" href="classllvm_1_1StringMapIterator.html">StringMap<Macro*>::iterator</a> I = getParser().MacroMap.find(Name);
+<a name="l03367"></a>03367   <span class="keywordflow">if</span> (I == getParser().MacroMap.end())
+<a name="l03368"></a>03368     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(DirectiveLoc, <span class="stringliteral">"macro '"</span> + Name + <span class="stringliteral">"' is not defined"</span>);
+<a name="l03369"></a>03369 
+<a name="l03370"></a>03370   <span class="comment">// Undefine the macro.</span>
+<a name="l03371"></a>03371   <span class="keyword">delete</span> I->getValue();
+<a name="l03372"></a>03372   getParser().MacroMap.erase(I);
+<a name="l03373"></a>03373   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03374"></a>03374 }
+<a name="l03375"></a>03375 
+<a name="l03376"></a>03376 <span class="keywordtype">bool</span> GenericAsmParser::ParseDirectiveLEB128(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> DirName, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a>) {
+<a name="l03377"></a>03377   getParser().CheckForValidSection();
+<a name="l03378"></a>03378 
+<a name="l03379"></a>03379   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Value;
+<a name="l03380"></a>03380 
+<a name="l03381"></a>03381   <span class="keywordflow">if</span> (getParser().ParseExpression(Value))
+<a name="l03382"></a>03382     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03383"></a>03383 
+<a name="l03384"></a>03384   <span class="keywordflow">if</span> (getLexer().isNot(AsmToken::EndOfStatement))
+<a name="l03385"></a>03385     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l03386"></a>03386 
+<a name="l03387"></a>03387   <span class="keywordflow">if</span> (DirName[1] == <span class="charliteral">'s'</span>)
+<a name="l03388"></a>03388     getStreamer().EmitSLEB128Value(Value);
+<a name="l03389"></a>03389   <span class="keywordflow">else</span>
+<a name="l03390"></a>03390     getStreamer().EmitULEB128Value(Value);
+<a name="l03391"></a>03391 
+<a name="l03392"></a>03392   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03393"></a>03393 }
+<a name="l03394"></a>03394 
+<a name="l03395"></a>03395 Macro *AsmParser::ParseMacroLikeBody(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03396"></a>03396   <a class="code" href="classllvm_1_1AsmToken.html" title="AsmToken - Target independent representation for an assembler token.">AsmToken</a> EndToken, StartToken = getTok();
+<a name="l03397"></a>03397 
+<a name="l03398"></a>03398   <span class="keywordtype">unsigned</span> NestLevel = 0;
+<a name="l03399"></a>03399   <span class="keywordflow">for</span> (;;) {
+<a name="l03400"></a>03400     <span class="comment">// Check whether we have reached the end of the file.</span>
+<a name="l03401"></a>03401     <span class="keywordflow">if</span> (getLexer().is(<a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>)) {
+<a name="l03402"></a>03402       <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(DirectiveLoc, <span class="stringliteral">"no matching '.endr' in definition"</span>);
+<a name="l03403"></a>03403       <span class="keywordflow">return</span> 0;
+<a name="l03404"></a>03404     }
+<a name="l03405"></a>03405 
+<a name="l03406"></a>03406     <span class="keywordflow">if</span> (Lexer.is(AsmToken::Identifier) &&
+<a name="l03407"></a>03407         (getTok().getIdentifier() == <span class="stringliteral">".rept"</span>)) {
+<a name="l03408"></a>03408       ++NestLevel;
+<a name="l03409"></a>03409     }
+<a name="l03410"></a>03410 
+<a name="l03411"></a>03411     <span class="comment">// Otherwise, check whether we have reached the .endr.</span>
+<a name="l03412"></a>03412     <span class="keywordflow">if</span> (Lexer.is(AsmToken::Identifier) &&
+<a name="l03413"></a>03413         getTok().getIdentifier() == <span class="stringliteral">".endr"</span>) {
+<a name="l03414"></a>03414       <span class="keywordflow">if</span> (NestLevel == 0) {
+<a name="l03415"></a>03415         EndToken = getTok();
+<a name="l03416"></a>03416         Lex();
+<a name="l03417"></a>03417         <span class="keywordflow">if</span> (Lexer.isNot(AsmToken::EndOfStatement)) {
+<a name="l03418"></a>03418           TokError(<span class="stringliteral">"unexpected token in '.endr' directive"</span>);
+<a name="l03419"></a>03419           <span class="keywordflow">return</span> 0;
+<a name="l03420"></a>03420         }
+<a name="l03421"></a>03421         <span class="keywordflow">break</span>;
+<a name="l03422"></a>03422       }
+<a name="l03423"></a>03423       --NestLevel;
+<a name="l03424"></a>03424     }
+<a name="l03425"></a>03425 
+<a name="l03426"></a>03426     <span class="comment">// Otherwise, scan till the end of the statement.</span>
+<a name="l03427"></a>03427     EatToEndOfStatement();
+<a name="l03428"></a>03428   }
+<a name="l03429"></a>03429 
+<a name="l03430"></a>03430   <span class="keyword">const</span> <span class="keywordtype">char</span> *BodyStart = StartToken.<a class="code" href="classllvm_1_1AsmToken.html#add7f9405ba7ad0891528a4cf5f47f45e">getLoc</a>().<a class="code" href="classllvm_1_1SMLoc.html#a57b9155169a1c2d0f2363cd4fdd97ac7">getPointer</a>();
+<a name="l03431"></a>03431   <span class="keyword">const</span> <span class="keywordtype">char</span> *BodyEnd = EndToken.<a class="code" href="classllvm_1_1AsmToken.html#add7f9405ba7ad0891528a4cf5f47f45e">getLoc</a>().<a class="code" href="classllvm_1_1SMLoc.html#a57b9155169a1c2d0f2363cd4fdd97ac7">getPointer</a>();
+<a name="l03432"></a>03432   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Body = <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(BodyStart, BodyEnd - BodyStart);
+<a name="l03433"></a>03433 
+<a name="l03434"></a>03434   <span class="comment">// We Are Anonymous.</span>
+<a name="l03435"></a>03435   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l03436"></a>03436   MacroParameters Parameters;
+<a name="l03437"></a>03437   <span class="keywordflow">return</span> <span class="keyword">new</span> Macro(Name, Body, Parameters);
+<a name="l03438"></a>03438 }
+<a name="l03439"></a>03439 
+<a name="l03440"></a>03440 <span class="keywordtype">void</span> AsmParser::InstantiateMacroLikeBody(Macro *M, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc,
+<a name="l03441"></a>03441                                          <a class="code" href="classllvm_1_1raw__svector__ostream.html">raw_svector_ostream</a> &OS) {
+<a name="l03442"></a>03442   OS << <span class="stringliteral">".endr\n"</span>;
+<a name="l03443"></a>03443 
+<a name="l03444"></a>03444   <a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *Instantiation =
+<a name="l03445"></a>03445     MemoryBuffer::getMemBufferCopy(OS.<a class="code" href="classllvm_1_1raw__svector__ostream.html#a941652907e3c1b132f86e1870bb5b291">str</a>(), <span class="stringliteral">"<instantiation>"</span>);
+<a name="l03446"></a>03446 
+<a name="l03447"></a>03447   <span class="comment">// Create the macro instantiation object and add to the current macro</span>
+<a name="l03448"></a>03448   <span class="comment">// instantiation stack.</span>
+<a name="l03449"></a>03449   MacroInstantiation *MI = <span class="keyword">new</span> MacroInstantiation(M, DirectiveLoc,
+<a name="l03450"></a>03450                                                   getTok().getLoc(),
+<a name="l03451"></a>03451                                                   Instantiation);
+<a name="l03452"></a>03452   ActiveMacros.push_back(MI);
+<a name="l03453"></a>03453 
+<a name="l03454"></a>03454   <span class="comment">// Jump to the macro instantiation and prime the lexer.</span>
+<a name="l03455"></a>03455   CurBuffer = <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#a773a3f4ecc3eb26ffb9ef9e90c99698d">AddNewSourceBuffer</a>(MI->Instantiation, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a>());
+<a name="l03456"></a>03456   Lexer.setBuffer(<a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#afea655fbbcf8d46deafb61f56eed99bd">getMemoryBuffer</a>(CurBuffer));
+<a name="l03457"></a>03457   Lex();
+<a name="l03458"></a>03458 }
+<a name="l03459"></a>03459 
+<a name="l03460"></a>03460 <span class="keywordtype">bool</span> AsmParser::ParseDirectiveRept(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03461"></a>03461   <a class="code" href="classint64__t.html">int64_t</a> Count;
+<a name="l03462"></a>03462   <span class="keywordflow">if</span> (ParseAbsoluteExpression(Count))
+<a name="l03463"></a>03463     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.rept' directive"</span>);
+<a name="l03464"></a>03464 
+<a name="l03465"></a>03465   <span class="keywordflow">if</span> (Count < 0)
+<a name="l03466"></a>03466     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"Count is negative"</span>);
+<a name="l03467"></a>03467 
+<a name="l03468"></a>03468   <span class="keywordflow">if</span> (Lexer.isNot(AsmToken::EndOfStatement))
+<a name="l03469"></a>03469     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.rept' directive"</span>);
+<a name="l03470"></a>03470 
+<a name="l03471"></a>03471   <span class="comment">// Eat the end of statement.</span>
+<a name="l03472"></a>03472   Lex();
+<a name="l03473"></a>03473 
+<a name="l03474"></a>03474   <span class="comment">// Lex the rept definition.</span>
+<a name="l03475"></a>03475   Macro *M = ParseMacroLikeBody(DirectiveLoc);
+<a name="l03476"></a>03476   <span class="keywordflow">if</span> (!M)
+<a name="l03477"></a>03477     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03478"></a>03478 
+<a name="l03479"></a>03479   <span class="comment">// Macro instantiation is lexical, unfortunately. We construct a new buffer</span>
+<a name="l03480"></a>03480   <span class="comment">// to hold the macro body with substitutions.</span>
+<a name="l03481"></a>03481   <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> Buf;
+<a name="l03482"></a>03482   MacroParameters Parameters;
+<a name="l03483"></a>03483   MacroArguments <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>;
+<a name="l03484"></a>03484   <a class="code" href="classllvm_1_1raw__svector__ostream.html">raw_svector_ostream</a> OS(Buf);
+<a name="l03485"></a>03485   <span class="keywordflow">while</span> (Count--) {
+<a name="l03486"></a>03486     <span class="keywordflow">if</span> (expandMacro(OS, M->Body, Parameters, A, getTok().getLoc()))
+<a name="l03487"></a>03487       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03488"></a>03488   }
+<a name="l03489"></a>03489   InstantiateMacroLikeBody(M, DirectiveLoc, OS);
+<a name="l03490"></a>03490 
+<a name="l03491"></a>03491   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03492"></a>03492 }
+<a name="l03493"></a>03493 <span class="comment"></span>
+<a name="l03494"></a>03494 <span class="comment">/// ParseDirectiveIrp</span>
+<a name="l03495"></a>03495 <span class="comment">/// ::= .irp symbol,values</span>
+<a name="l03496"></a>03496 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveIrp(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03497"></a>03497   MacroParameters Parameters;
+<a name="l03498"></a>03498   MacroParameter Parameter;
+<a name="l03499"></a>03499 
+<a name="l03500"></a>03500   <span class="keywordflow">if</span> (ParseIdentifier(Parameter.first))
+<a name="l03501"></a>03501     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected identifier in '.irp' directive"</span>);
+<a name="l03502"></a>03502 
+<a name="l03503"></a>03503   Parameters.push_back(Parameter);
+<a name="l03504"></a>03504 
+<a name="l03505"></a>03505   <span class="keywordflow">if</span> (Lexer.isNot(AsmToken::Comma))
+<a name="l03506"></a>03506     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected comma in '.irp' directive"</span>);
+<a name="l03507"></a>03507 
+<a name="l03508"></a>03508   Lex();
+<a name="l03509"></a>03509 
+<a name="l03510"></a>03510   MacroArguments <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>;
+<a name="l03511"></a>03511   <span class="keywordflow">if</span> (ParseMacroArguments(0, A))
+<a name="l03512"></a>03512     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03513"></a>03513 
+<a name="l03514"></a>03514   <span class="comment">// Eat the end of statement.</span>
+<a name="l03515"></a>03515   Lex();
+<a name="l03516"></a>03516 
+<a name="l03517"></a>03517   <span class="comment">// Lex the irp definition.</span>
+<a name="l03518"></a>03518   Macro *M = ParseMacroLikeBody(DirectiveLoc);
+<a name="l03519"></a>03519   <span class="keywordflow">if</span> (!M)
+<a name="l03520"></a>03520     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03521"></a>03521 
+<a name="l03522"></a>03522   <span class="comment">// Macro instantiation is lexical, unfortunately. We construct a new buffer</span>
+<a name="l03523"></a>03523   <span class="comment">// to hold the macro body with substitutions.</span>
+<a name="l03524"></a>03524   <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> Buf;
+<a name="l03525"></a>03525   <a class="code" href="classllvm_1_1raw__svector__ostream.html">raw_svector_ostream</a> OS(Buf);
+<a name="l03526"></a>03526 
+<a name="l03527"></a>03527   <span class="keywordflow">for</span> (MacroArguments::iterator i = A.begin(), e = A.end(); i != e; ++i) {
+<a name="l03528"></a>03528     MacroArguments Args;
+<a name="l03529"></a>03529     Args.push_back(*i);
+<a name="l03530"></a>03530 
+<a name="l03531"></a>03531     <span class="keywordflow">if</span> (expandMacro(OS, M->Body, Parameters, Args, getTok().getLoc()))
+<a name="l03532"></a>03532       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03533"></a>03533   }
+<a name="l03534"></a>03534 
+<a name="l03535"></a>03535   InstantiateMacroLikeBody(M, DirectiveLoc, OS);
+<a name="l03536"></a>03536 
+<a name="l03537"></a>03537   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03538"></a>03538 }
+<a name="l03539"></a>03539 <span class="comment"></span>
+<a name="l03540"></a>03540 <span class="comment">/// ParseDirectiveIrpc</span>
+<a name="l03541"></a>03541 <span class="comment">/// ::= .irpc symbol,values</span>
+<a name="l03542"></a>03542 <span class="comment"></span><span class="keywordtype">bool</span> AsmParser::ParseDirectiveIrpc(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03543"></a>03543   MacroParameters Parameters;
+<a name="l03544"></a>03544   MacroParameter Parameter;
+<a name="l03545"></a>03545 
+<a name="l03546"></a>03546   <span class="keywordflow">if</span> (ParseIdentifier(Parameter.first))
+<a name="l03547"></a>03547     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected identifier in '.irpc' directive"</span>);
+<a name="l03548"></a>03548 
+<a name="l03549"></a>03549   Parameters.push_back(Parameter);
+<a name="l03550"></a>03550 
+<a name="l03551"></a>03551   <span class="keywordflow">if</span> (Lexer.isNot(AsmToken::Comma))
+<a name="l03552"></a>03552     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"expected comma in '.irpc' directive"</span>);
+<a name="l03553"></a>03553 
+<a name="l03554"></a>03554   Lex();
+<a name="l03555"></a>03555 
+<a name="l03556"></a>03556   MacroArguments <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>;
+<a name="l03557"></a>03557   <span class="keywordflow">if</span> (ParseMacroArguments(0, A))
+<a name="l03558"></a>03558     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03559"></a>03559 
+<a name="l03560"></a>03560   <span class="keywordflow">if</span> (A.size() != 1 || A.front().size() != 1)
+<a name="l03561"></a>03561     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unexpected token in '.irpc' directive"</span>);
+<a name="l03562"></a>03562 
+<a name="l03563"></a>03563   <span class="comment">// Eat the end of statement.</span>
+<a name="l03564"></a>03564   Lex();
+<a name="l03565"></a>03565 
+<a name="l03566"></a>03566   <span class="comment">// Lex the irpc definition.</span>
+<a name="l03567"></a>03567   Macro *M = ParseMacroLikeBody(DirectiveLoc);
+<a name="l03568"></a>03568   <span class="keywordflow">if</span> (!M)
+<a name="l03569"></a>03569     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03570"></a>03570 
+<a name="l03571"></a>03571   <span class="comment">// Macro instantiation is lexical, unfortunately. We construct a new buffer</span>
+<a name="l03572"></a>03572   <span class="comment">// to hold the macro body with substitutions.</span>
+<a name="l03573"></a>03573   <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> Buf;
+<a name="l03574"></a>03574   <a class="code" href="classllvm_1_1raw__svector__ostream.html">raw_svector_ostream</a> OS(Buf);
+<a name="l03575"></a>03575 
+<a name="l03576"></a>03576   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Values = A.<a class="code" href="classllvm_1_1StringRef.html#a05b3826e64820f25495bb882b906cc0d" title="front - Get the first character in the string.">front</a>().front().getString();
+<a name="l03577"></a>03577   std::size_t <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>, End = Values.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>();
+<a name="l03578"></a>03578   <span class="keywordflow">for</span> (I = 0; I < End; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l03579"></a>03579     MacroArgument Arg;
+<a name="l03580"></a>03580     Arg.push_back(<a class="code" href="classllvm_1_1AsmToken.html" title="AsmToken - Target independent representation for an assembler token.">AsmToken</a>(AsmToken::Identifier, Values.<a class="code" href="classllvm_1_1StringRef.html#a84945a8050d1449eb630a7a1622aa76f">slice</a>(I, I+1)));
+<a name="l03581"></a>03581 
+<a name="l03582"></a>03582     MacroArguments Args;
+<a name="l03583"></a>03583     Args.push_back(Arg);
+<a name="l03584"></a>03584 
+<a name="l03585"></a>03585     <span class="keywordflow">if</span> (expandMacro(OS, M->Body, Parameters, Args, getTok().getLoc()))
+<a name="l03586"></a>03586       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03587"></a>03587   }
+<a name="l03588"></a>03588 
+<a name="l03589"></a>03589   InstantiateMacroLikeBody(M, DirectiveLoc, OS);
+<a name="l03590"></a>03590 
+<a name="l03591"></a>03591   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03592"></a>03592 }
+<a name="l03593"></a>03593 
+<a name="l03594"></a>03594 <span class="keywordtype">bool</span> AsmParser::ParseDirectiveEndr(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> DirectiveLoc) {
+<a name="l03595"></a>03595   <span class="keywordflow">if</span> (ActiveMacros.empty())
+<a name="l03596"></a>03596     <span class="keywordflow">return</span> TokError(<span class="stringliteral">"unmatched '.endr' directive"</span>);
+<a name="l03597"></a>03597 
+<a name="l03598"></a>03598   <span class="comment">// The only .repl that should get here are the ones created by</span>
+<a name="l03599"></a>03599   <span class="comment">// InstantiateMacroLikeBody.</span>
+<a name="l03600"></a>03600   assert(getLexer().is(AsmToken::EndOfStatement));
+<a name="l03601"></a>03601 
+<a name="l03602"></a>03602   HandleMacroExit();
+<a name="l03603"></a>03603   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03604"></a>03604 }
+<a name="l03605"></a>03605 
+<a name="l03606"></a>03606 <span class="keywordtype">bool</span> AsmParser::ParseDirectiveEmit(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> IDLoc, ParseStatementInfo &Info) {
+<a name="l03607"></a>03607   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Value;
+<a name="l03608"></a>03608   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> ExprLoc = getLexer().getLoc();
+<a name="l03609"></a>03609   <span class="keywordflow">if</span> (ParseExpression(Value))
+<a name="l03610"></a>03610     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03611"></a>03611   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCConstantExpr.html">MCConstantExpr</a> *MCE = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1MCConstantExpr.html">MCConstantExpr</a>>(Value);
+<a name="l03612"></a>03612   <span class="keywordflow">if</span> (!MCE)
+<a name="l03613"></a>03613     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(ExprLoc, <span class="stringliteral">"unexpected expression in _emit"</span>);
+<a name="l03614"></a>03614   uint64_t IntValue = MCE-><a class="code" href="classllvm_1_1MCConstantExpr.html#a73fc956af4f2c2228e925c0a5d25b62f">getValue</a>();
+<a name="l03615"></a>03615   <span class="keywordflow">if</span> (!<a class="code" href="namespacellvm.html#a1a995470163b6d76695cba5bc8dfb529">isUIntN</a>(8, IntValue) && !<a class="code" href="namespacellvm_1_1APIntOps.html#a01bd8f75e31e440075bf2f943b3714ff" title="Check if the specified APInt has a N-bits unsigned integer value.">isIntN</a>(8, IntValue))
+<a name="l03616"></a>03616     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(ExprLoc, <span class="stringliteral">"literal value out of range for directive"</span>);
+<a name="l03617"></a>03617 
+<a name="l03618"></a>03618   Info.AsmRewrites->push_back(<a class="code" href="structllvm_1_1AsmRewrite.html">AsmRewrite</a>(<a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda79f10173e38b98986342a2ba9fb6b2a1">AOK_Emit</a>, IDLoc, 5));
+<a name="l03619"></a>03619   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03620"></a>03620 }
+<a name="l03621"></a>03621 
+<a name="l03622"></a>03622 <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MCAsmParser.html#a96ae02688143be01f6c41df6675fdeec" title="ParseMSInlineAsm - Parse ms-style inline assembly.">AsmParser::ParseMSInlineAsm</a>(<span class="keywordtype">void</span> *AsmLoc, std::string &AsmString,
+<a name="l03623"></a>03623                                  <span class="keywordtype">unsigned</span> &NumOutputs, <span class="keywordtype">unsigned</span> &NumInputs,
+<a name="l03624"></a>03624                                  <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a><std::pair<void *, bool> > &OpDecls,
+<a name="l03625"></a>03625                                  <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<std::string></a> &Constraints,
+<a name="l03626"></a>03626                                  <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<std::string></a> &Clobbers,
+<a name="l03627"></a>03627                                  <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstrInfo.html">MCInstrInfo</a> *MII,
+<a name="l03628"></a>03628                                  <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstPrinter.html">MCInstPrinter</a> *IP,
+<a name="l03629"></a>03629                                  <a class="code" href="classllvm_1_1MCAsmParserSemaCallback.html" title="MCAsmParserSemaCallback - Generic Sema callback for assembly parser.">MCAsmParserSemaCallback</a> &SI) {
+<a name="l03630"></a>03630   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<void *, 4></a> InputDecls;
+<a name="l03631"></a>03631   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<void *, 4></a> OutputDecls;
+<a name="l03632"></a>03632   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<bool, 4></a> InputDeclsOffsetOf;
+<a name="l03633"></a>03633   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<bool, 4></a> OutputDeclsOffsetOf;
+<a name="l03634"></a>03634   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<std::string, 4></a> InputConstraints;
+<a name="l03635"></a>03635   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<std::string, 4></a> OutputConstraints;
+<a name="l03636"></a>03636   std::set<std::string> ClobberRegs;
+<a name="l03637"></a>03637 
+<a name="l03638"></a>03638   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<struct AsmRewrite, 4></a> AsmStrRewrites;
+<a name="l03639"></a>03639 
+<a name="l03640"></a>03640   <span class="comment">// Prime the lexer.</span>
+<a name="l03641"></a>03641   Lex();
+<a name="l03642"></a>03642 
+<a name="l03643"></a>03643   <span class="comment">// While we have input, parse each statement.</span>
+<a name="l03644"></a>03644   <span class="keywordtype">unsigned</span> InputIdx = 0;
+<a name="l03645"></a>03645   <span class="keywordtype">unsigned</span> OutputIdx = 0;
+<a name="l03646"></a>03646   <span class="keywordflow">while</span> (getLexer().isNot(<a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a7aeb5b2275fc35a5237b14f4967e3d8f">AsmToken::Eof</a>)) {
+<a name="l03647"></a>03647     ParseStatementInfo Info(&AsmStrRewrites);
+<a name="l03648"></a>03648     <span class="keywordflow">if</span> (ParseStatement(Info))
+<a name="l03649"></a>03649       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l03650"></a>03650 
+<a name="l03651"></a>03651     <span class="keywordflow">if</span> (Info.Opcode != ~0U) {
+<a name="l03652"></a>03652       <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstrDesc.html">MCInstrDesc</a> &Desc = MII-><a class="code" href="classllvm_1_1MCInstrInfo.html#ab16f5a81fccfe4b7f645ba5a74ffad02">get</a>(Info.Opcode);
+<a name="l03653"></a>03653 
+<a name="l03654"></a>03654       <span class="comment">// Build the list of clobbers, outputs and inputs.</span>
+<a name="l03655"></a>03655       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1, e = Info.ParsedOperands.size(); i != e; ++i) {
+<a name="l03656"></a>03656         <a class="code" href="classllvm_1_1MCParsedAsmOperand.html">MCParsedAsmOperand</a> *Operand = Info.ParsedOperands[i];
+<a name="l03657"></a>03657 
+<a name="l03658"></a>03658         <span class="comment">// Immediate.</span>
+<a name="l03659"></a>03659         <span class="keywordflow">if</span> (Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#ab4d869652f0c0d119d84f800cf49229b" title="isImm - Is this an immediate operand?">isImm</a>()) {
+<a name="l03660"></a>03660           <span class="keywordflow">if</span> (Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#ace77109b5d2e8c2a68cee91cb54de192">needAsmRewrite</a>())
+<a name="l03661"></a>03661             AsmStrRewrites.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(<a class="code" href="structllvm_1_1AsmRewrite.html">AsmRewrite</a>(<a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda3deb02026ccdf32ece89f5089babb38e">AOK_ImmPrefix</a>,
+<a name="l03662"></a>03662                                                 Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#a186b4be6127d9dc805018ece27c8b1e3" title="getStartLoc - Get the location of the first token of this operand.">getStartLoc</a>()));
+<a name="l03663"></a>03663           <span class="keywordflow">continue</span>;
+<a name="l03664"></a>03664         }
+<a name="l03665"></a>03665 
+<a name="l03666"></a>03666         <span class="comment">// Register operand.</span>
+<a name="l03667"></a>03667         <span class="keywordflow">if</span> (Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#a3212ab0fba4f46a46382c297dd7ee5f7" title="isReg - Is this a register operand?">isReg</a>() && !Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#af402da0d214b64b4d73b3cb67bb97ecc">isOffsetOf</a>()) {
+<a name="l03668"></a>03668           <span class="keywordtype">unsigned</span> NumDefs = Desc.<a class="code" href="classllvm_1_1MCInstrDesc.html#a9d472a8ee447cef18a71beb229d4d252">getNumDefs</a>();
+<a name="l03669"></a>03669           <span class="comment">// Clobber.</span>
+<a name="l03670"></a>03670           <span class="keywordflow">if</span> (NumDefs && Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#ab7825dc94141647be2917e6e410d97d0">getMCOperandNum</a>() < NumDefs) {
+<a name="l03671"></a>03671             std::string <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>;
+<a name="l03672"></a>03672             <a class="code" href="classllvm_1_1raw__string__ostream.html">raw_string_ostream</a> OS(Reg);
+<a name="l03673"></a>03673             IP-><a class="code" href="classllvm_1_1MCInstPrinter.html#a1b750be412b12c83b3ee5c6406eb2438" title="printRegName - Print the assembler register name.">printRegName</a>(OS, Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#a16e02c19a6a8c2435d210ef2799a5b7c">getReg</a>());
+<a name="l03674"></a>03674             ClobberRegs.insert(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(OS.<a class="code" href="classllvm_1_1raw__svector__ostream.html#a941652907e3c1b132f86e1870bb5b291">str</a>()));
+<a name="l03675"></a>03675           }
+<a name="l03676"></a>03676           <span class="keywordflow">continue</span>;
+<a name="l03677"></a>03677         }
+<a name="l03678"></a>03678 
+<a name="l03679"></a>03679         <span class="comment">// Expr/Input or Output.</span>
+<a name="l03680"></a>03680         <span class="keywordtype">unsigned</span> Size;
+<a name="l03681"></a>03681         <span class="keywordtype">void</span> *OpDecl = SI.<a class="code" href="classllvm_1_1MCAsmParserSemaCallback.html#ac77597a50e8f45165b98cd7c6e311034">LookupInlineAsmIdentifier</a>(Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#a39284c7500b90fef3ca2887bebc5e2a7">getName</a>(), AsmLoc,
+<a name="l03682"></a>03682                                                     Size);
+<a name="l03683"></a>03683         <span class="keywordflow">if</span> (OpDecl) {
+<a name="l03684"></a>03684           <span class="keywordtype">bool</span> isOutput = (i == 1) && Desc.<a class="code" href="classllvm_1_1MCInstrDesc.html#a7146d8440bad26a32a80ae4362298783">mayStore</a>();
+<a name="l03685"></a>03685           <span class="keywordflow">if</span> (!Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#af402da0d214b64b4d73b3cb67bb97ecc">isOffsetOf</a>() && Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#a112ebfcd0c400073ffaccf043c0eba81">needSizeDirective</a>())
+<a name="l03686"></a>03686             AsmStrRewrites.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(<a class="code" href="structllvm_1_1AsmRewrite.html">AsmRewrite</a>(<a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda533ada35f0fe9e602da710cbcd6d9430">AOK_SizeDirective</a>,
+<a name="l03687"></a>03687                                                 Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#a186b4be6127d9dc805018ece27c8b1e3" title="getStartLoc - Get the location of the first token of this operand.">getStartLoc</a>(),
+<a name="l03688"></a>03688                                                 <span class="comment">/*Len*/</span>0,
+<a name="l03689"></a>03689                                                 Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#a7e3669715ae4a52b420e783a5101b73e">getMemSize</a>()));
+<a name="l03690"></a>03690           <span class="keywordflow">if</span> (isOutput) {
+<a name="l03691"></a>03691             std::string Constraint = <span class="stringliteral">"="</span>;
+<a name="l03692"></a>03692             ++InputIdx;
+<a name="l03693"></a>03693             OutputDecls.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(OpDecl);
+<a name="l03694"></a>03694             OutputDeclsOffsetOf.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#af402da0d214b64b4d73b3cb67bb97ecc">isOffsetOf</a>());
+<a name="l03695"></a>03695             Constraint += Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#ad38a8c360d26f17718aafe2c7c5fc470">getConstraint</a>().<a class="code" href="classllvm_1_1StringRef.html#ab02cb6f4884b5c788efb97b6741dccaf" title="str - Get the contents as an std::string.">str</a>();
+<a name="l03696"></a>03696             OutputConstraints.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(Constraint);
+<a name="l03697"></a>03697             AsmStrRewrites.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(<a class="code" href="structllvm_1_1AsmRewrite.html">AsmRewrite</a>(<a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda2fdf76d69064416f4ade1f4615561e41">AOK_Output</a>,
+<a name="l03698"></a>03698                                                 Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#a186b4be6127d9dc805018ece27c8b1e3" title="getStartLoc - Get the location of the first token of this operand.">getStartLoc</a>(),
+<a name="l03699"></a>03699                                                 Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#a6978a1a8b674de51b67035616f45f58f">getNameLen</a>()));
+<a name="l03700"></a>03700           } <span class="keywordflow">else</span> {
+<a name="l03701"></a>03701             InputDecls.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(OpDecl);
+<a name="l03702"></a>03702             InputDeclsOffsetOf.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#af402da0d214b64b4d73b3cb67bb97ecc">isOffsetOf</a>());
+<a name="l03703"></a>03703             InputConstraints.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#ad38a8c360d26f17718aafe2c7c5fc470">getConstraint</a>().<a class="code" href="classllvm_1_1StringRef.html#ab02cb6f4884b5c788efb97b6741dccaf" title="str - Get the contents as an std::string.">str</a>());
+<a name="l03704"></a>03704             AsmStrRewrites.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(<a class="code" href="structllvm_1_1AsmRewrite.html">AsmRewrite</a>(<a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfdaa86669a9cc5218a2b8ea4daafd9f195e">AOK_Input</a>,
+<a name="l03705"></a>03705                                                 Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#a186b4be6127d9dc805018ece27c8b1e3" title="getStartLoc - Get the location of the first token of this operand.">getStartLoc</a>(),
+<a name="l03706"></a>03706                                                 Operand-><a class="code" href="classllvm_1_1MCParsedAsmOperand.html#a6978a1a8b674de51b67035616f45f58f">getNameLen</a>()));
+<a name="l03707"></a>03707           }
+<a name="l03708"></a>03708         }
+<a name="l03709"></a>03709       }
+<a name="l03710"></a>03710     }
+<a name="l03711"></a>03711   }
+<a name="l03712"></a>03712 
+<a name="l03713"></a>03713   <span class="comment">// Set the number of Outputs and Inputs.</span>
+<a name="l03714"></a>03714   NumOutputs = OutputDecls.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>();
+<a name="l03715"></a>03715   NumInputs = InputDecls.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>();
+<a name="l03716"></a>03716 
+<a name="l03717"></a>03717   <span class="comment">// Set the unique clobbers.</span>
+<a name="l03718"></a>03718   <span class="keywordflow">for</span> (std::set<std::string>::iterator I = ClobberRegs.begin(),
+<a name="l03719"></a>03719          E = ClobberRegs.end(); I != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)
+<a name="l03720"></a>03720     Clobbers.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(*I);
+<a name="l03721"></a>03721 
+<a name="l03722"></a>03722   <span class="comment">// Merge the various outputs and inputs.  Output are expected first.</span>
+<a name="l03723"></a>03723   <span class="keywordflow">if</span> (NumOutputs || NumInputs) {
+<a name="l03724"></a>03724     <span class="keywordtype">unsigned</span> NumExprs = NumOutputs + NumInputs;
+<a name="l03725"></a>03725     OpDecls.resize(NumExprs);
+<a name="l03726"></a>03726     Constraints.<a class="code" href="classllvm_1_1SmallVectorImpl.html#a102d0ad36060677286c3aefb812e5512">resize</a>(NumExprs);
+<a name="l03727"></a>03727     <span class="comment">// FIXME: Constraints are hard coded to 'm', but we need an 'r'</span>
+<a name="l03728"></a>03728     <span class="comment">// constraint for offsetof.  This needs to be cleaned up!</span>
+<a name="l03729"></a>03729     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < NumOutputs; ++i) {
+<a name="l03730"></a>03730       OpDecls[i] = std::make_pair(OutputDecls[i], OutputDeclsOffsetOf[i]);
+<a name="l03731"></a>03731       Constraints[i] = OutputDeclsOffsetOf[i] ? <span class="stringliteral">"=r"</span> : OutputConstraints[i];
+<a name="l03732"></a>03732     }
+<a name="l03733"></a>03733     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, j = NumOutputs; i < NumInputs; ++i, ++j) {
+<a name="l03734"></a>03734       OpDecls[j] = std::make_pair(InputDecls[i], InputDeclsOffsetOf[i]);
+<a name="l03735"></a>03735       Constraints[j] = InputDeclsOffsetOf[i] ? <span class="stringliteral">"r"</span> : InputConstraints[i];
+<a name="l03736"></a>03736     }
+<a name="l03737"></a>03737   }
+<a name="l03738"></a>03738 
+<a name="l03739"></a>03739   <span class="comment">// Build the IR assembly string.</span>
+<a name="l03740"></a>03740   std::string AsmStringIR;
+<a name="l03741"></a>03741   <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfd">AsmRewriteKind</a> PrevKind = <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda37a5657dc0fbc78b21ee98d45ecb2d87">AOK_Imm</a>;
+<a name="l03742"></a>03742   <a class="code" href="classllvm_1_1raw__string__ostream.html">raw_string_ostream</a> OS(AsmStringIR);
+<a name="l03743"></a>03743   <span class="keyword">const</span> <span class="keywordtype">char</span> *Start = <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#afea655fbbcf8d46deafb61f56eed99bd">getMemoryBuffer</a>(0)-><a class="code" href="classllvm_1_1MemoryBuffer.html#aee393164c8a4d591450d28bdd5aebfbd">getBufferStart</a>();
+<a name="l03744"></a>03744   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SmallVectorImpl.html#a16a72ecbc559627d140a2197d9f79445">SmallVectorImpl<struct AsmRewrite>::iterator</a>
+<a name="l03745"></a>03745          I = AsmStrRewrites.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a8a045d250952c0867382a9840ee18fdf">begin</a>(), E = AsmStrRewrites.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a075e34e98605d0e7c289763a104869ac">end</a>(); I != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l03746"></a>03746     <span class="keyword">const</span> <span class="keywordtype">char</span> *Loc = (*I).Loc.<a class="code" href="classllvm_1_1SMLoc.html#a57b9155169a1c2d0f2363cd4fdd97ac7">getPointer</a>();
+<a name="l03747"></a>03747 
+<a name="l03748"></a>03748     <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfd">AsmRewriteKind</a> Kind = (*I).Kind;
+<a name="l03749"></a>03749 
+<a name="l03750"></a>03750     <span class="comment">// Emit everything up to the immediate/expression.  If the previous rewrite</span>
+<a name="l03751"></a>03751     <span class="comment">// was a size directive, then this has already been done.</span>
+<a name="l03752"></a>03752     <span class="keywordflow">if</span> (PrevKind != <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda533ada35f0fe9e602da710cbcd6d9430">AOK_SizeDirective</a>)
+<a name="l03753"></a>03753       OS << <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(Start, Loc - Start);
+<a name="l03754"></a>03754     PrevKind = <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a>;
+<a name="l03755"></a>03755 
+<a name="l03756"></a>03756     <span class="comment">// Skip the original expression.</span>
+<a name="l03757"></a>03757     <span class="keywordflow">if</span> (Kind == <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda7abdec48f548b1a8b8ce59f17b52e5ec">AOK_Skip</a>) {
+<a name="l03758"></a>03758       Start = Loc + (*I).Len;
+<a name="l03759"></a>03759       <span class="keywordflow">continue</span>;
+<a name="l03760"></a>03760     }
+<a name="l03761"></a>03761 
+<a name="l03762"></a>03762     <span class="comment">// Rewrite expressions in $N notation.</span>
+<a name="l03763"></a>03763     <span class="keywordflow">switch</span> (Kind) {
+<a name="l03764"></a>03764     <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;
+<a name="l03765"></a>03765     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda37a5657dc0fbc78b21ee98d45ecb2d87">AOK_Imm</a>:
+<a name="l03766"></a>03766       OS << <a class="code" href="classllvm_1_1Twine.html">Twine</a>(<span class="stringliteral">"$$"</span>);
+<a name="l03767"></a>03767       OS << (*I).Val;
+<a name="l03768"></a>03768       <span class="keywordflow">break</span>;
+<a name="l03769"></a>03769     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda3deb02026ccdf32ece89f5089babb38e">AOK_ImmPrefix</a>:
+<a name="l03770"></a>03770       OS << <a class="code" href="classllvm_1_1Twine.html">Twine</a>(<span class="stringliteral">"$$"</span>);
+<a name="l03771"></a>03771       <span class="keywordflow">break</span>;
+<a name="l03772"></a>03772     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfdaa86669a9cc5218a2b8ea4daafd9f195e">AOK_Input</a>:
+<a name="l03773"></a>03773       OS << <span class="charliteral">'$'</span>;
+<a name="l03774"></a>03774       OS << InputIdx++;
+<a name="l03775"></a>03775       <span class="keywordflow">break</span>;
+<a name="l03776"></a>03776     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda2fdf76d69064416f4ade1f4615561e41">AOK_Output</a>:
+<a name="l03777"></a>03777       OS << <span class="charliteral">'$'</span>;
+<a name="l03778"></a>03778       OS << OutputIdx++;
+<a name="l03779"></a>03779       <span class="keywordflow">break</span>;
+<a name="l03780"></a>03780     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda533ada35f0fe9e602da710cbcd6d9430">AOK_SizeDirective</a>:
+<a name="l03781"></a>03781       <span class="keywordflow">switch</span>((*I).Val) {
+<a name="l03782"></a>03782       <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;
+<a name="l03783"></a>03783       <span class="keywordflow">case</span> 8:  OS << <span class="stringliteral">"byte ptr "</span>; <span class="keywordflow">break</span>;
+<a name="l03784"></a>03784       <span class="keywordflow">case</span> 16: OS << <span class="stringliteral">"word ptr "</span>; <span class="keywordflow">break</span>;
+<a name="l03785"></a>03785       <span class="keywordflow">case</span> 32: OS << <span class="stringliteral">"dword ptr "</span>; <span class="keywordflow">break</span>;
+<a name="l03786"></a>03786       <span class="keywordflow">case</span> 64: OS << <span class="stringliteral">"qword ptr "</span>; <span class="keywordflow">break</span>;
+<a name="l03787"></a>03787       <span class="keywordflow">case</span> 80: OS << <span class="stringliteral">"xword ptr "</span>; <span class="keywordflow">break</span>;
+<a name="l03788"></a>03788       <span class="keywordflow">case</span> 128: OS << <span class="stringliteral">"xmmword ptr "</span>; <span class="keywordflow">break</span>;
+<a name="l03789"></a>03789       <span class="keywordflow">case</span> 256: OS << <span class="stringliteral">"ymmword ptr "</span>; <span class="keywordflow">break</span>;
+<a name="l03790"></a>03790       }
+<a name="l03791"></a>03791       <span class="keywordflow">break</span>;
+<a name="l03792"></a>03792     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda79f10173e38b98986342a2ba9fb6b2a1">AOK_Emit</a>:
+<a name="l03793"></a>03793       OS << <span class="stringliteral">".byte"</span>;
+<a name="l03794"></a>03794       <span class="keywordflow">break</span>;
+<a name="l03795"></a>03795     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda06913ea73f39a19cfc8d0091f7ad6027">AOK_DotOperator</a>:
+<a name="l03796"></a>03796       OS << (*I).Val;
+<a name="l03797"></a>03797       <span class="keywordflow">break</span>;
+<a name="l03798"></a>03798     }
+<a name="l03799"></a>03799 
+<a name="l03800"></a>03800     <span class="comment">// Skip the original expression.</span>
+<a name="l03801"></a>03801     <span class="keywordflow">if</span> (Kind != <a class="code" href="namespacellvm.html#a262e7bca188555ee4b40df11450b4bfda533ada35f0fe9e602da710cbcd6d9430">AOK_SizeDirective</a>)
+<a name="l03802"></a>03802       Start = Loc + (*I).Len;
+<a name="l03803"></a>03803   }
+<a name="l03804"></a>03804 
+<a name="l03805"></a>03805   <span class="comment">// Emit the remainder of the asm string.</span>
+<a name="l03806"></a>03806   <span class="keyword">const</span> <span class="keywordtype">char</span> *AsmEnd = <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>.<a class="code" href="classllvm_1_1SourceMgr.html#afea655fbbcf8d46deafb61f56eed99bd">getMemoryBuffer</a>(0)-><a class="code" href="classllvm_1_1MemoryBuffer.html#ad7ce6a33aec86e6b2939376660ebb2e6">getBufferEnd</a>();
+<a name="l03807"></a>03807   <span class="keywordflow">if</span> (Start != AsmEnd)
+<a name="l03808"></a>03808     OS << <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(Start, AsmEnd - Start);
+<a name="l03809"></a>03809 
+<a name="l03810"></a>03810   AsmString = OS.<a class="code" href="classllvm_1_1raw__svector__ostream.html#a941652907e3c1b132f86e1870bb5b291">str</a>();
+<a name="l03811"></a>03811   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l03812"></a>03812 }
+<a name="l03813"></a>03813 <span class="comment"></span>
+<a name="l03814"></a>03814 <span class="comment">/// \brief Create an MCAsmParser instance.</span>
+<a name="l03815"></a><a class="code" href="namespacellvm.html#ac3493b71e435d58e70a92f98a6f0762f">03815</a> <span class="comment"></span><a class="code" href="classllvm_1_1MCAsmParser.html">MCAsmParser</a> *<a class="code" href="namespacellvm.html#ac3493b71e435d58e70a92f98a6f0762f" title="Create an MCAsmParser instance.">llvm::createMCAsmParser</a>(<a class="code" href="classllvm_1_1SourceMgr.html">SourceMgr</a> &SM,
+<a name="l03816"></a>03816                                      <a class="code" href="classllvm_1_1MCContext.html">MCContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <a class="code" href="classllvm_1_1MCStreamer.html">MCStreamer</a> &Out,
+<a name="l03817"></a>03817                                      <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCAsmInfo.html">MCAsmInfo</a> &MAI) {
+<a name="l03818"></a>03818   <span class="keywordflow">return</span> <span class="keyword">new</span> AsmParser(SM, C, Out, MAI);
+<a name="l03819"></a>03819 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:32:49 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/AsmPrinterInlineAsm_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/AsmPrinterInlineAsm_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/AsmPrinterInlineAsm_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/AsmPrinterInlineAsm_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,609 @@
+<!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: AsmPrinterInlineAsm.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_f2244d21cf8bec63d11bfc1ad661d96f.html">CodeGen</a>      </li>
+      <li class="navelem"><a class="el" href="dir_5f8f0bfb0fa844bddb949c179c0766c9.html">AsmPrinter</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">AsmPrinterInlineAsm.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="AsmPrinterInlineAsm_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- AsmPrinterInlineAsm.cpp - AsmPrinter Inline Asm Handling ----------===//</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 inline assembler pieces of the AsmPrinter class.</span>
+<a name="l00011"></a>00011 <span class="comment">//</span>
+<a name="l00012"></a>00012 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00013"></a>00013 
+<a name="l00014"></a><a class="code" href="AsmPrinterInlineAsm_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">00014</a> <span class="preprocessor">#define DEBUG_TYPE "asm-printer"</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="AsmPrinter_8h.html">llvm/CodeGen/AsmPrinter.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="Constants_8h.html">llvm/Constants.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="InlineAsm_8h.html">llvm/InlineAsm.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="LLVMContext_8h.html">llvm/LLVMContext.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="Module_8h.html">llvm/Module.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="MachineBasicBlock_8h.html">llvm/CodeGen/MachineBasicBlock.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="MachineModuleInfo_8h.html">llvm/CodeGen/MachineModuleInfo.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="MCAsmInfo_8h.html">llvm/MC/MCAsmInfo.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="MCStreamer_8h.html">llvm/MC/MCStreamer.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="MCSubtargetInfo_8h.html">llvm/MC/MCSubtargetInfo.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="MCSymbol_8h.html">llvm/MC/MCSymbol.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="MCTargetAsmParser_8h.html">llvm/MC/MCTargetAsmParser.h</a>"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="Target_2TargetMachine_8h.html">llvm/Target/TargetMachine.h</a>"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="OwningPtr_8h.html">llvm/ADT/OwningPtr.h</a>"</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="SmallString_8h.html">llvm/ADT/SmallString.h</a>"</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="Twine_8h.html">llvm/ADT/Twine.h</a>"</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="ErrorHandling_8h.html">llvm/Support/ErrorHandling.h</a>"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="MemoryBuffer_8h.html">llvm/Support/MemoryBuffer.h</a>"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="SourceMgr_8h.html">llvm/Support/SourceMgr.h</a>"</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="TargetRegistry_8h.html">llvm/Support/TargetRegistry.h</a>"</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00036"></a>00036 <span class="keyword">using namespace </span>llvm;
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038 <span class="keyword">namespace </span>{
+<a name="l00039"></a>00039   <span class="keyword">struct </span>SrcMgrDiagInfo {
+<a name="l00040"></a>00040     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *LocInfo;
+<a name="l00041"></a>00041     <a class="code" href="classllvm_1_1LLVMContext.html#ad7d4d06a1dd9c808ba85472daa1069ea">LLVMContext::InlineAsmDiagHandlerTy</a> DiagHandler;
+<a name="l00042"></a>00042     <span class="keywordtype">void</span> *DiagContext;
+<a name="l00043"></a>00043   };
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045 <span class="comment"></span>
+<a name="l00046"></a>00046 <span class="comment">/// srcMgrDiagHandler - This callback is invoked when the SourceMgr for an</span>
+<a name="l00047"></a>00047 <span class="comment">/// inline asm has an error in it.  diagInfo is a pointer to the SrcMgrDiagInfo</span>
+<a name="l00048"></a>00048 <span class="comment">/// struct above.</span>
+<a name="l00049"></a><a class="code" href="AsmPrinterInlineAsm_8cpp.html#afd8e9cd1a48377b0ca36df9fad98b40c">00049</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="AsmPrinterInlineAsm_8cpp.html#afd8e9cd1a48377b0ca36df9fad98b40c">srcMgrDiagHandler</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1SMDiagnostic.html">SMDiagnostic</a> &Diag, <span class="keywordtype">void</span> *diagInfo) {
+<a name="l00050"></a>00050   SrcMgrDiagInfo *DiagInfo = <span class="keyword">static_cast<</span>SrcMgrDiagInfo *<span class="keyword">></span>(diagInfo);
+<a name="l00051"></a>00051   assert(DiagInfo && <span class="stringliteral">"Diagnostic context not passed down?"</span>);
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053   <span class="comment">// If the inline asm had metadata associated with it, pull out a location</span>
+<a name="l00054"></a>00054   <span class="comment">// cookie corresponding to which line the error occurred on.</span>
+<a name="l00055"></a>00055   <span class="keywordtype">unsigned</span> LocCookie = 0;
+<a name="l00056"></a>00056   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *LocInfo = DiagInfo->LocInfo) {
+<a name="l00057"></a>00057     <span class="keywordtype">unsigned</span> ErrorLine = Diag.<a class="code" href="classllvm_1_1SMDiagnostic.html#abd3344b50f4bd29ac079944cdc66235c">getLineNo</a>()-1;
+<a name="l00058"></a>00058     <span class="keywordflow">if</span> (ErrorLine >= LocInfo->getNumOperands())
+<a name="l00059"></a>00059       ErrorLine = 0;
+<a name="l00060"></a>00060 
+<a name="l00061"></a>00061     <span class="keywordflow">if</span> (LocInfo->getNumOperands() != 0)
+<a name="l00062"></a>00062       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *CI =
+<a name="l00063"></a>00063           dyn_cast<ConstantInt>(LocInfo->getOperand(ErrorLine)))
+<a name="l00064"></a>00064         LocCookie = CI->getZExtValue();
+<a name="l00065"></a>00065   }
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067   DiagInfo->DiagHandler(Diag, DiagInfo->DiagContext, LocCookie);
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069 <span class="comment"></span>
+<a name="l00070"></a>00070 <span class="comment">/// EmitInlineAsm - Emit a blob of inline asm to the output streamer.</span>
+<a name="l00071"></a>00071 <span class="comment"></span><span class="keywordtype">void</span> AsmPrinter::EmitInlineAsm(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Str, <span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *LocMDNode,
+<a name="l00072"></a>00072                                <a class="code" href="classllvm_1_1InlineAsm.html#a2c0e1ae3b31928af2e0a390bbc2ea9b8">InlineAsm::AsmDialect</a> Dialect)<span class="keyword"> const </span>{
+<a name="l00073"></a>00073   assert(!Str.<a class="code" href="classllvm_1_1StringRef.html#ad7e292682516000f8b472f4510a2acf7" title="empty - Check if the string is empty.">empty</a>() && <span class="stringliteral">"Can't emit empty inline asm block"</span>);
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075   <span class="comment">// Remember if the buffer is nul terminated or not so we can avoid a copy.</span>
+<a name="l00076"></a>00076   <span class="keywordtype">bool</span> isNullTerminated = Str.<a class="code" href="classllvm_1_1StringRef.html#a9904c6e695f8ac00208d00663040c173" title="back - Get the last character in the string.">back</a>() == 0;
+<a name="l00077"></a>00077   <span class="keywordflow">if</span> (isNullTerminated)
+<a name="l00078"></a>00078     Str = Str.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(0, Str.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>()-1);
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080   <span class="comment">// If the output streamer is actually a .s file, just emit the blob textually.</span>
+<a name="l00081"></a>00081   <span class="comment">// This is useful in case the asm parser doesn't handle something but the</span>
+<a name="l00082"></a>00082   <span class="comment">// system assembler does.</span>
+<a name="l00083"></a>00083   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1AsmPrinter.html#a32ad5336c0020843cbb5a982c0f1a708">OutStreamer</a>.<a class="code" href="classllvm_1_1MCStreamer.html#a957d3d6304f9d576600e4b6d04937cf6">hasRawTextSupport</a>()) {
+<a name="l00084"></a>00084     <a class="code" href="classllvm_1_1AsmPrinter.html#a32ad5336c0020843cbb5a982c0f1a708">OutStreamer</a>.<a class="code" href="classllvm_1_1MCStreamer.html#a6e649d2c2b28e53d4e3296e3d57fc5fa">EmitRawText</a>(Str);
+<a name="l00085"></a>00085     <span class="keywordflow">return</span>;
+<a name="l00086"></a>00086   }
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088   <a class="code" href="classllvm_1_1SourceMgr.html">SourceMgr</a> <a class="code" href="namespacellvm.html#a5f3f23062c5d5636bee27c54f4a407f0">SrcMgr</a>;
+<a name="l00089"></a>00089   SrcMgrDiagInfo DiagInfo;
+<a name="l00090"></a>00090 
+<a name="l00091"></a>00091   <span class="comment">// If the current LLVMContext has an inline asm handler, set it in SourceMgr.</span>
+<a name="l00092"></a>00092   <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &LLVMCtx = <a class="code" href="classllvm_1_1AsmPrinter.html#aa1316da87e093c08b6657877572b19a4" title="MMI - This is a pointer to the current MachineModuleInfo.">MMI</a>-><a class="code" href="classllvm_1_1MachineModuleInfo.html#a598aa3cb9841cd86396b69a6e3066fdc">getModule</a>()-><a class="code" href="classllvm_1_1Module.html#a0e74af4b7c739f3a14e737c3042b6617">getContext</a>();
+<a name="l00093"></a>00093   <span class="keywordtype">bool</span> HasDiagHandler = <span class="keyword">false</span>;
+<a name="l00094"></a>00094   <span class="keywordflow">if</span> (LLVMCtx.<a class="code" href="classllvm_1_1LLVMContext.html#abfaa2b5c3f52a7634d3a61d742f03792">getInlineAsmDiagnosticHandler</a>() != 0) {
+<a name="l00095"></a>00095     <span class="comment">// If the source manager has an issue, we arrange for srcMgrDiagHandler</span>
+<a name="l00096"></a>00096     <span class="comment">// to be invoked, getting DiagInfo passed into it.</span>
+<a name="l00097"></a>00097     DiagInfo.LocInfo = LocMDNode;
+<a name="l00098"></a>00098     DiagInfo.DiagHandler = LLVMCtx.<a class="code" href="classllvm_1_1LLVMContext.html#abfaa2b5c3f52a7634d3a61d742f03792">getInlineAsmDiagnosticHandler</a>();
+<a name="l00099"></a>00099     DiagInfo.DiagContext = LLVMCtx.<a class="code" href="classllvm_1_1LLVMContext.html#a9285be6710e1ebcc25ac32f7dc4d7972">getInlineAsmDiagnosticContext</a>();
+<a name="l00100"></a>00100     SrcMgr.<a class="code" href="classllvm_1_1SourceMgr.html#ab51c12f6fb0a4034cf6437208b072759">setDiagHandler</a>(<a class="code" href="AsmPrinterInlineAsm_8cpp.html#afd8e9cd1a48377b0ca36df9fad98b40c">srcMgrDiagHandler</a>, &DiagInfo);
+<a name="l00101"></a>00101     HasDiagHandler = <span class="keyword">true</span>;
+<a name="l00102"></a>00102   }
+<a name="l00103"></a>00103 
+<a name="l00104"></a>00104   <a class="code" href="classllvm_1_1MemoryBuffer.html">MemoryBuffer</a> *Buffer;
+<a name="l00105"></a>00105   <span class="keywordflow">if</span> (isNullTerminated)
+<a name="l00106"></a>00106     Buffer = <a class="code" href="classllvm_1_1MemoryBuffer.html#ad8f9be47d83e0deeaf8668f37fadb896">MemoryBuffer::getMemBuffer</a>(Str, <span class="stringliteral">"<inline asm>"</span>);
+<a name="l00107"></a>00107   <span class="keywordflow">else</span>
+<a name="l00108"></a>00108     Buffer = <a class="code" href="classllvm_1_1MemoryBuffer.html#ae73588815c1ba2a28f95472e566f5d4a">MemoryBuffer::getMemBufferCopy</a>(Str, <span class="stringliteral">"<inline asm>"</span>);
+<a name="l00109"></a>00109 
+<a name="l00110"></a>00110   <span class="comment">// Tell SrcMgr about this buffer, it takes ownership of the buffer.</span>
+<a name="l00111"></a>00111   SrcMgr.<a class="code" href="classllvm_1_1SourceMgr.html#a773a3f4ecc3eb26ffb9ef9e90c99698d">AddNewSourceBuffer</a>(Buffer, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a>());
+<a name="l00112"></a>00112 
+<a name="l00113"></a>00113   <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<MCAsmParser></a> Parser(<a class="code" href="namespacellvm.html#ac3493b71e435d58e70a92f98a6f0762f" title="Create an MCAsmParser instance.">createMCAsmParser</a>(SrcMgr,
+<a name="l00114"></a>00114                                                   <a class="code" href="classllvm_1_1AsmPrinter.html#aa7625af893e242d33b9f182066f59310">OutContext</a>, <a class="code" href="classllvm_1_1AsmPrinter.html#a32ad5336c0020843cbb5a982c0f1a708">OutStreamer</a>,
+<a name="l00115"></a>00115                                                   *<a class="code" href="classllvm_1_1AsmPrinter.html#a47692fd7344d1adc2916ad4cc31d26c8">MAI</a>));
+<a name="l00116"></a>00116 
+<a name="l00117"></a>00117   <span class="comment">// FIXME: It would be nice if we can avoid createing a new instance of</span>
+<a name="l00118"></a>00118   <span class="comment">// MCSubtargetInfo here given TargetSubtargetInfo is available. However,</span>
+<a name="l00119"></a>00119   <span class="comment">// we have to watch out for asm directives which can change subtarget</span>
+<a name="l00120"></a>00120   <span class="comment">// state. e.g. .code 16, .code 32.</span>
+<a name="l00121"></a>00121   <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<MCSubtargetInfo></a>
+<a name="l00122"></a>00122     STI(<a class="code" href="classllvm_1_1AsmPrinter.html#a25657a51f99b0a2819bdc54d3e31b813">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#a73cf44ee4d4ae263d8251a0b0daa06a6">getTarget</a>().<a class="code" href="classllvm_1_1Target.html#a7ef74ad29c4e3c57fd69ecd1c8081ca8">createMCSubtargetInfo</a>(<a class="code" href="classllvm_1_1AsmPrinter.html#a25657a51f99b0a2819bdc54d3e31b813">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#a2358a0c569fba82526d8b8a98143eb08">getTargetTriple</a>(),
+<a name="l00123"></a>00123                                              <a class="code" href="classllvm_1_1AsmPrinter.html#a25657a51f99b0a2819bdc54d3e31b813">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#a89e97fa082268d5c77ccf9addb86672f">getTargetCPU</a>(),
+<a name="l00124"></a>00124                                              <a class="code" href="classllvm_1_1AsmPrinter.html#a25657a51f99b0a2819bdc54d3e31b813">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#a67fca271c86ff87b5007e6f29ddc5feb">getTargetFeatureString</a>()));
+<a name="l00125"></a>00125   <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<MCTargetAsmParser></a>
+<a name="l00126"></a>00126     TAP(<a class="code" href="classllvm_1_1AsmPrinter.html#a25657a51f99b0a2819bdc54d3e31b813">TM</a>.<a class="code" href="classllvm_1_1TargetMachine.html#a73cf44ee4d4ae263d8251a0b0daa06a6">getTarget</a>().<a class="code" href="classllvm_1_1Target.html#ab4e95a62a42b4d20a6fe9d92ee8ac7d5">createMCAsmParser</a>(*STI, *Parser));
+<a name="l00127"></a>00127   <span class="keywordflow">if</span> (!TAP)
+<a name="l00128"></a>00128     <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(<span class="stringliteral">"Inline asm not supported by this streamer because"</span>
+<a name="l00129"></a>00129                        <span class="stringliteral">" we don't have an asm parser for this target\n"</span>);
+<a name="l00130"></a>00130   Parser->setAssemblerDialect(Dialect);
+<a name="l00131"></a>00131   Parser->setTargetParser(*TAP.get());
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133   <span class="comment">// Don't implicitly switch to the text section before the asm.</span>
+<a name="l00134"></a>00134   <span class="keywordtype">int</span> Res = Parser->Run(<span class="comment">/*NoInitialTextSection*/</span> <span class="keyword">true</span>,
+<a name="l00135"></a>00135                         <span class="comment">/*NoFinalize*/</span> <span class="keyword">true</span>);
+<a name="l00136"></a>00136   <span class="keywordflow">if</span> (Res && !HasDiagHandler)
+<a name="l00137"></a>00137     <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(<span class="stringliteral">"Error parsing inline asm\n"</span>);
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 
+<a name="l00140"></a><a class="code" href="AsmPrinterInlineAsm_8cpp.html#a93a3c3d4226d05db67f7abdc1a90e7e1">00140</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="AsmPrinterInlineAsm_8cpp.html#a93a3c3d4226d05db67f7abdc1a90e7e1">EmitMSInlineAsmStr</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *AsmStr, <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="l00141"></a>00141                                <a class="code" href="classllvm_1_1MachineModuleInfo.html">MachineModuleInfo</a> *MMI, <span class="keywordtype">int</span> InlineAsmVariant,
+<a name="l00142"></a>00142                                <a class="code" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> *AP, <span class="keywordtype">unsigned</span> LocCookie,
+<a name="l00143"></a>00143                                <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &OS) {
+<a name="l00144"></a>00144   <span class="comment">// Switch to the inline assembly variant.</span>
+<a name="l00145"></a>00145   OS << <span class="stringliteral">"\t.intel_syntax\n\t"</span>;
+<a name="l00146"></a>00146 
+<a name="l00147"></a>00147   <span class="keyword">const</span> <span class="keywordtype">char</span> *LastEmitted = AsmStr; <span class="comment">// One past the last character emitted.</span>
+<a name="l00148"></a>00148   <span class="keywordtype">unsigned</span> NumOperands = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>();
+<a name="l00149"></a>00149 
+<a name="l00150"></a>00150   <span class="keywordflow">while</span> (*LastEmitted) {
+<a name="l00151"></a>00151     <span class="keywordflow">switch</span> (*LastEmitted) {
+<a name="l00152"></a>00152     <span class="keywordflow">default</span>: {
+<a name="l00153"></a>00153       <span class="comment">// Not a special case, emit the string section literally.</span>
+<a name="l00154"></a>00154       <span class="keyword">const</span> <span class="keywordtype">char</span> *LiteralEnd = LastEmitted+1;
+<a name="l00155"></a>00155       <span class="keywordflow">while</span> (*LiteralEnd && *LiteralEnd != <span class="charliteral">'{'</span> && *LiteralEnd != <span class="charliteral">'|'</span> &&
+<a name="l00156"></a>00156              *LiteralEnd != <span class="charliteral">'}'</span> && *LiteralEnd != <span class="charliteral">'$'</span> && *LiteralEnd != <span class="charliteral">'\n'</span>)
+<a name="l00157"></a>00157         ++LiteralEnd;
+<a name="l00158"></a>00158 
+<a name="l00159"></a>00159       OS.<a class="code" href="classllvm_1_1raw__ostream.html#a6e0cbc5c8568d8446c284c8538b2c9f1">write</a>(LastEmitted, LiteralEnd-LastEmitted);
+<a name="l00160"></a>00160       LastEmitted = LiteralEnd;
+<a name="l00161"></a>00161       <span class="keywordflow">break</span>;
+<a name="l00162"></a>00162     }
+<a name="l00163"></a>00163     <span class="keywordflow">case</span> <span class="charliteral">'\n'</span>:
+<a name="l00164"></a>00164       ++LastEmitted;   <span class="comment">// Consume newline character.</span>
+<a name="l00165"></a>00165       OS << <span class="charliteral">'\n'</span>;      <span class="comment">// Indent code with newline.</span>
+<a name="l00166"></a>00166       <span class="keywordflow">break</span>;
+<a name="l00167"></a>00167     <span class="keywordflow">case</span> <span class="charliteral">'$'</span>: {
+<a name="l00168"></a>00168       ++LastEmitted;   <span class="comment">// Consume '$' character.</span>
+<a name="l00169"></a>00169       <span class="keywordtype">bool</span> Done = <span class="keyword">true</span>;
+<a name="l00170"></a>00170 
+<a name="l00171"></a>00171       <span class="comment">// Handle escapes.</span>
+<a name="l00172"></a>00172       <span class="keywordflow">switch</span> (*LastEmitted) {
+<a name="l00173"></a>00173       <span class="keywordflow">default</span>: Done = <span class="keyword">false</span>; <span class="keywordflow">break</span>;
+<a name="l00174"></a>00174       <span class="keywordflow">case</span> <span class="charliteral">'$'</span>:
+<a name="l00175"></a>00175         ++LastEmitted;  <span class="comment">// Consume second '$' character.</span>
+<a name="l00176"></a>00176         <span class="keywordflow">break</span>;
+<a name="l00177"></a>00177       }
+<a name="l00178"></a>00178       <span class="keywordflow">if</span> (Done) <span class="keywordflow">break</span>;
+<a name="l00179"></a>00179 
+<a name="l00180"></a>00180       <span class="keyword">const</span> <span class="keywordtype">char</span> *IDStart = LastEmitted;
+<a name="l00181"></a>00181       <span class="keyword">const</span> <span class="keywordtype">char</span> *IDEnd = IDStart;
+<a name="l00182"></a>00182       <span class="keywordflow">while</span> (*IDEnd >= <span class="charliteral">'0'</span> && *IDEnd <= <span class="charliteral">'9'</span>) ++IDEnd;
+<a name="l00183"></a>00183 
+<a name="l00184"></a>00184       <span class="keywordtype">unsigned</span> Val;
+<a name="l00185"></a>00185       <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(IDStart, IDEnd-IDStart).getAsInteger(10, Val))
+<a name="l00186"></a>00186         <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(<span class="stringliteral">"Bad $ operand number in inline asm string: '"</span> +
+<a name="l00187"></a>00187                            <a class="code" href="classllvm_1_1Twine.html">Twine</a>(AsmStr) + <span class="stringliteral">"'"</span>);
+<a name="l00188"></a>00188       LastEmitted = IDEnd;
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190       <span class="keywordflow">if</span> (Val >= NumOperands-1)
+<a name="l00191"></a>00191         <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(<span class="stringliteral">"Invalid $ operand number in inline asm string: '"</span> +
+<a name="l00192"></a>00192                            <a class="code" href="classllvm_1_1Twine.html">Twine</a>(AsmStr) + <span class="stringliteral">"'"</span>);
+<a name="l00193"></a>00193 
+<a name="l00194"></a>00194       <span class="comment">// Okay, we finally have a value number.  Ask the target to print this</span>
+<a name="l00195"></a>00195       <span class="comment">// operand!</span>
+<a name="l00196"></a>00196       <span class="keywordtype">unsigned</span> OpNo = <a class="code" href="classllvm_1_1InlineAsm.html#a25464ee25a64b02cb48356ca2284dab5ad8e4e0d44daebe8c07cf5d6d60a4fc30">InlineAsm::MIOp_FirstOperand</a>;
+<a name="l00197"></a>00197 
+<a name="l00198"></a>00198       <span class="keywordtype">bool</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a> = <span class="keyword">false</span>;
+<a name="l00199"></a>00199 
+<a name="l00200"></a>00200       <span class="comment">// Scan to find the machine operand number for the operand.</span>
+<a name="l00201"></a>00201       <span class="keywordflow">for</span> (; Val; --Val) {
+<a name="l00202"></a>00202         <span class="keywordflow">if</span> (OpNo >= MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>()) <span class="keywordflow">break</span>;
+<a name="l00203"></a>00203         <span class="keywordtype">unsigned</span> OpFlags = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(OpNo).<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l00204"></a>00204         OpNo += <a class="code" href="classllvm_1_1InlineAsm.html#a4437506c56127755bed59ee1b30e95b9">InlineAsm::getNumOperandRegisters</a>(OpFlags) + 1;
+<a name="l00205"></a>00205       }
+<a name="l00206"></a>00206 
+<a name="l00207"></a>00207       <span class="comment">// We may have a location metadata attached to the end of the</span>
+<a name="l00208"></a>00208       <span class="comment">// instruction, and at no point should see metadata at any</span>
+<a name="l00209"></a>00209       <span class="comment">// other point while processing. It's an error if so.</span>
+<a name="l00210"></a>00210       <span class="keywordflow">if</span> (OpNo >= MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>() ||
+<a name="l00211"></a>00211           MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(OpNo).<a class="code" href="classllvm_1_1MachineOperand.html#a0e2df00699ee7519edd1a7075feb11d9" title="isMetadata - Tests if this is a MO_Metadata operand.">isMetadata</a>()) {
+<a name="l00212"></a>00212         Error = <span class="keyword">true</span>;
+<a name="l00213"></a>00213       } <span class="keywordflow">else</span> {
+<a name="l00214"></a>00214         <span class="keywordtype">unsigned</span> OpFlags = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(OpNo).<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l00215"></a>00215         ++OpNo;  <span class="comment">// Skip over the ID number.</span>
+<a name="l00216"></a>00216         
+<a name="l00217"></a>00217         <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1InlineAsm.html#a20a6d489de78da41c6032c7651f405a6">InlineAsm::isMemKind</a>(OpFlags)) {
+<a name="l00218"></a>00218           Error = AP-><a class="code" href="classllvm_1_1AsmPrinter.html#a8ebe14186b99562a5e5780963c21bade">PrintAsmMemoryOperand</a>(MI, OpNo, InlineAsmVariant,
+<a name="l00219"></a>00219                                             <span class="comment">/*Modifier*/</span> 0, OS);
+<a name="l00220"></a>00220         } <span class="keywordflow">else</span> {
+<a name="l00221"></a>00221           Error = AP-><a class="code" href="classllvm_1_1AsmPrinter.html#a7447ee883681c6e7d788d685c65ac47f">PrintAsmOperand</a>(MI, OpNo, InlineAsmVariant,
+<a name="l00222"></a>00222                                       <span class="comment">/*Modifier*/</span> 0, OS);
+<a name="l00223"></a>00223         }
+<a name="l00224"></a>00224       }
+<a name="l00225"></a>00225       <span class="keywordflow">if</span> (Error) {
+<a name="l00226"></a>00226         std::string msg;
+<a name="l00227"></a>00227         <a class="code" href="classllvm_1_1raw__string__ostream.html">raw_string_ostream</a> Msg(msg);
+<a name="l00228"></a>00228         Msg << <span class="stringliteral">"invalid operand in inline asm: '"</span> << AsmStr << <span class="stringliteral">"'"</span>;
+<a name="l00229"></a>00229         MMI-><a class="code" href="classllvm_1_1MachineModuleInfo.html#a598aa3cb9841cd86396b69a6e3066fdc">getModule</a>()-><a class="code" href="classllvm_1_1Module.html#a0e74af4b7c739f3a14e737c3042b6617">getContext</a>().<a class="code" href="classllvm_1_1LLVMContext.html#acff246b19234d38be83663af581f05ac">emitError</a>(LocCookie, Msg.<a class="code" href="classllvm_1_1raw__string__ostream.html#ae086260f8c216554ff46dcd96e171459">str</a>());
+<a name="l00230"></a>00230       }
+<a name="l00231"></a>00231       <span class="keywordflow">break</span>;
+<a name="l00232"></a>00232     }
+<a name="l00233"></a>00233     }
+<a name="l00234"></a>00234   }
+<a name="l00235"></a>00235   OS << <span class="stringliteral">"\n\t.att_syntax\n"</span> << (<a class="code" href="classchar.html">char</a>)0;  <span class="comment">// null terminate string.</span>
+<a name="l00236"></a>00236 }
+<a name="l00237"></a>00237 
+<a name="l00238"></a><a class="code" href="AsmPrinterInlineAsm_8cpp.html#a0554c1eb1906e40d61253d9c60ef412d">00238</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="AsmPrinterInlineAsm_8cpp.html#a0554c1eb1906e40d61253d9c60ef412d">EmitGCCInlineAsmStr</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *AsmStr, <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="l00239"></a>00239                                 <a class="code" href="classllvm_1_1MachineModuleInfo.html">MachineModuleInfo</a> *MMI, <span class="keywordtype">int</span> InlineAsmVariant,
+<a name="l00240"></a>00240                                 <span class="keywordtype">int</span> AsmPrinterVariant, <a class="code" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> *AP,
+<a name="l00241"></a>00241                                 <span class="keywordtype">unsigned</span> LocCookie, <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &OS) {
+<a name="l00242"></a>00242   <span class="keywordtype">int</span> CurVariant = -1;            <span class="comment">// The number of the {.|.|.} region we are in.</span>
+<a name="l00243"></a>00243   <span class="keyword">const</span> <span class="keywordtype">char</span> *LastEmitted = AsmStr; <span class="comment">// One past the last character emitted.</span>
+<a name="l00244"></a>00244   <span class="keywordtype">unsigned</span> NumOperands = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>();
+<a name="l00245"></a>00245 
+<a name="l00246"></a>00246   OS << <span class="charliteral">'\t'</span>;
+<a name="l00247"></a>00247 
+<a name="l00248"></a>00248   <span class="keywordflow">while</span> (*LastEmitted) {
+<a name="l00249"></a>00249     <span class="keywordflow">switch</span> (*LastEmitted) {
+<a name="l00250"></a>00250     <span class="keywordflow">default</span>: {
+<a name="l00251"></a>00251       <span class="comment">// Not a special case, emit the string section literally.</span>
+<a name="l00252"></a>00252       <span class="keyword">const</span> <span class="keywordtype">char</span> *LiteralEnd = LastEmitted+1;
+<a name="l00253"></a>00253       <span class="keywordflow">while</span> (*LiteralEnd && *LiteralEnd != <span class="charliteral">'{'</span> && *LiteralEnd != <span class="charliteral">'|'</span> &&
+<a name="l00254"></a>00254              *LiteralEnd != <span class="charliteral">'}'</span> && *LiteralEnd != <span class="charliteral">'$'</span> && *LiteralEnd != <span class="charliteral">'\n'</span>)
+<a name="l00255"></a>00255         ++LiteralEnd;
+<a name="l00256"></a>00256       <span class="keywordflow">if</span> (CurVariant == -1 || CurVariant == AsmPrinterVariant)
+<a name="l00257"></a>00257         OS.<a class="code" href="classllvm_1_1raw__ostream.html#a6e0cbc5c8568d8446c284c8538b2c9f1">write</a>(LastEmitted, LiteralEnd-LastEmitted);
+<a name="l00258"></a>00258       LastEmitted = LiteralEnd;
+<a name="l00259"></a>00259       <span class="keywordflow">break</span>;
+<a name="l00260"></a>00260     }
+<a name="l00261"></a>00261     <span class="keywordflow">case</span> <span class="charliteral">'\n'</span>:
+<a name="l00262"></a>00262       ++LastEmitted;   <span class="comment">// Consume newline character.</span>
+<a name="l00263"></a>00263       OS << <span class="charliteral">'\n'</span>;      <span class="comment">// Indent code with newline.</span>
+<a name="l00264"></a>00264       <span class="keywordflow">break</span>;
+<a name="l00265"></a>00265     <span class="keywordflow">case</span> <span class="charliteral">'$'</span>: {
+<a name="l00266"></a>00266       ++LastEmitted;   <span class="comment">// Consume '$' character.</span>
+<a name="l00267"></a>00267       <span class="keywordtype">bool</span> Done = <span class="keyword">true</span>;
+<a name="l00268"></a>00268 
+<a name="l00269"></a>00269       <span class="comment">// Handle escapes.</span>
+<a name="l00270"></a>00270       <span class="keywordflow">switch</span> (*LastEmitted) {
+<a name="l00271"></a>00271       <span class="keywordflow">default</span>: Done = <span class="keyword">false</span>; <span class="keywordflow">break</span>;
+<a name="l00272"></a>00272       <span class="keywordflow">case</span> <span class="charliteral">'$'</span>:     <span class="comment">// $$ -> $</span>
+<a name="l00273"></a>00273         <span class="keywordflow">if</span> (CurVariant == -1 || CurVariant == AsmPrinterVariant)
+<a name="l00274"></a>00274           OS << <span class="charliteral">'$'</span>;
+<a name="l00275"></a>00275         ++LastEmitted;  <span class="comment">// Consume second '$' character.</span>
+<a name="l00276"></a>00276         <span class="keywordflow">break</span>;
+<a name="l00277"></a>00277       <span class="keywordflow">case</span> <span class="charliteral">'('</span>:             <span class="comment">// $( -> same as GCC's { character.</span>
+<a name="l00278"></a>00278         ++LastEmitted;      <span class="comment">// Consume '(' character.</span>
+<a name="l00279"></a>00279         <span class="keywordflow">if</span> (CurVariant != -1)
+<a name="l00280"></a>00280           <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(<span class="stringliteral">"Nested variants found in inline asm string: '"</span> +
+<a name="l00281"></a>00281                              <a class="code" href="classllvm_1_1Twine.html">Twine</a>(AsmStr) + <span class="stringliteral">"'"</span>);
+<a name="l00282"></a>00282         CurVariant = 0;     <span class="comment">// We're in the first variant now.</span>
+<a name="l00283"></a>00283         <span class="keywordflow">break</span>;
+<a name="l00284"></a>00284       <span class="keywordflow">case</span> <span class="charliteral">'|'</span>:
+<a name="l00285"></a>00285         ++LastEmitted;  <span class="comment">// consume '|' character.</span>
+<a name="l00286"></a>00286         <span class="keywordflow">if</span> (CurVariant == -1)
+<a name="l00287"></a>00287           OS << <span class="charliteral">'|'</span>;       <span class="comment">// this is gcc's behavior for | outside a variant</span>
+<a name="l00288"></a>00288         <span class="keywordflow">else</span>
+<a name="l00289"></a>00289           ++CurVariant;   <span class="comment">// We're in the next variant.</span>
+<a name="l00290"></a>00290         <span class="keywordflow">break</span>;
+<a name="l00291"></a>00291       <span class="keywordflow">case</span> <span class="charliteral">')'</span>:         <span class="comment">// $) -> same as GCC's } char.</span>
+<a name="l00292"></a>00292         ++LastEmitted;  <span class="comment">// consume ')' character.</span>
+<a name="l00293"></a>00293         <span class="keywordflow">if</span> (CurVariant == -1)
+<a name="l00294"></a>00294           OS << <span class="charliteral">'}'</span>;     <span class="comment">// this is gcc's behavior for } outside a variant</span>
+<a name="l00295"></a>00295         <span class="keywordflow">else</span>
+<a name="l00296"></a>00296           CurVariant = -1;
+<a name="l00297"></a>00297         <span class="keywordflow">break</span>;
+<a name="l00298"></a>00298       }
+<a name="l00299"></a>00299       <span class="keywordflow">if</span> (Done) <span class="keywordflow">break</span>;
+<a name="l00300"></a>00300 
+<a name="l00301"></a>00301       <span class="keywordtype">bool</span> HasCurlyBraces = <span class="keyword">false</span>;
+<a name="l00302"></a>00302       <span class="keywordflow">if</span> (*LastEmitted == <span class="charliteral">'{'</span>) {     <span class="comment">// ${variable}</span>
+<a name="l00303"></a>00303         ++LastEmitted;               <span class="comment">// Consume '{' character.</span>
+<a name="l00304"></a>00304         HasCurlyBraces = <span class="keyword">true</span>;
+<a name="l00305"></a>00305       }
+<a name="l00306"></a>00306 
+<a name="l00307"></a>00307       <span class="comment">// If we have ${:foo}, then this is not a real operand reference, it is a</span>
+<a name="l00308"></a>00308       <span class="comment">// "magic" string reference, just like in .td files.  Arrange to call</span>
+<a name="l00309"></a>00309       <span class="comment">// PrintSpecial.</span>
+<a name="l00310"></a>00310       <span class="keywordflow">if</span> (HasCurlyBraces && *LastEmitted == <span class="charliteral">':'</span>) {
+<a name="l00311"></a>00311         ++LastEmitted;
+<a name="l00312"></a>00312         <span class="keyword">const</span> <span class="keywordtype">char</span> *StrStart = LastEmitted;
+<a name="l00313"></a>00313         <span class="keyword">const</span> <span class="keywordtype">char</span> *StrEnd = <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fade48d0dc69a747ba01fc3c12f01653cd" title="char *strchr(const char *s, int c);">strchr</a>(StrStart, <span class="charliteral">'}'</span>);
+<a name="l00314"></a>00314         <span class="keywordflow">if</span> (StrEnd == 0)
+<a name="l00315"></a>00315           <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(<span class="stringliteral">"Unterminated ${:foo} operand in inline asm"</span>
+<a name="l00316"></a>00316                              <span class="stringliteral">" string: '"</span> + <a class="code" href="classllvm_1_1Twine.html">Twine</a>(AsmStr) + <span class="stringliteral">"'"</span>);
+<a name="l00317"></a>00317 
+<a name="l00318"></a>00318         std::string Val(StrStart, StrEnd);
+<a name="l00319"></a>00319         AP-><a class="code" href="classllvm_1_1AsmPrinter.html#a750b45b73f9002263925639aab2cbe07">PrintSpecial</a>(MI, OS, Val.c_str());
+<a name="l00320"></a>00320         LastEmitted = StrEnd+1;
+<a name="l00321"></a>00321         <span class="keywordflow">break</span>;
+<a name="l00322"></a>00322       }
+<a name="l00323"></a>00323 
+<a name="l00324"></a>00324       <span class="keyword">const</span> <span class="keywordtype">char</span> *IDStart = LastEmitted;
+<a name="l00325"></a>00325       <span class="keyword">const</span> <span class="keywordtype">char</span> *IDEnd = IDStart;
+<a name="l00326"></a>00326       <span class="keywordflow">while</span> (*IDEnd >= <span class="charliteral">'0'</span> && *IDEnd <= <span class="charliteral">'9'</span>) ++IDEnd;
+<a name="l00327"></a>00327 
+<a name="l00328"></a>00328       <span class="keywordtype">unsigned</span> Val;
+<a name="l00329"></a>00329       <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(IDStart, IDEnd-IDStart).<a class="code" href="classllvm_1_1StringRef.html#adabdc95b17da88a726555e8718151ac8">getAsInteger</a>(10, Val))
+<a name="l00330"></a>00330         <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(<span class="stringliteral">"Bad $ operand number in inline asm string: '"</span> +
+<a name="l00331"></a>00331                            <a class="code" href="classllvm_1_1Twine.html">Twine</a>(AsmStr) + <span class="stringliteral">"'"</span>);
+<a name="l00332"></a>00332       LastEmitted = IDEnd;
+<a name="l00333"></a>00333 
+<a name="l00334"></a>00334       <span class="keywordtype">char</span> Modifier[2] = { 0, 0 };
+<a name="l00335"></a>00335 
+<a name="l00336"></a>00336       <span class="keywordflow">if</span> (HasCurlyBraces) {
+<a name="l00337"></a>00337         <span class="comment">// If we have curly braces, check for a modifier character.  This</span>
+<a name="l00338"></a>00338         <span class="comment">// supports syntax like ${0:u}, which correspond to "%u0" in GCC asm.</span>
+<a name="l00339"></a>00339         <span class="keywordflow">if</span> (*LastEmitted == <span class="charliteral">':'</span>) {
+<a name="l00340"></a>00340           ++LastEmitted;    <span class="comment">// Consume ':' character.</span>
+<a name="l00341"></a>00341           <span class="keywordflow">if</span> (*LastEmitted == 0)
+<a name="l00342"></a>00342             <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(<span class="stringliteral">"Bad ${:} expression in inline asm string: '"</span> +
+<a name="l00343"></a>00343                                <a class="code" href="classllvm_1_1Twine.html">Twine</a>(AsmStr) + <span class="stringliteral">"'"</span>);
+<a name="l00344"></a>00344 
+<a name="l00345"></a>00345           Modifier[0] = *LastEmitted;
+<a name="l00346"></a>00346           ++LastEmitted;    <span class="comment">// Consume modifier character.</span>
+<a name="l00347"></a>00347         }
+<a name="l00348"></a>00348 
+<a name="l00349"></a>00349         <span class="keywordflow">if</span> (*LastEmitted != <span class="charliteral">'}'</span>)
+<a name="l00350"></a>00350           <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(<span class="stringliteral">"Bad ${} expression in inline asm string: '"</span> +
+<a name="l00351"></a>00351                              <a class="code" href="classllvm_1_1Twine.html">Twine</a>(AsmStr) + <span class="stringliteral">"'"</span>);
+<a name="l00352"></a>00352         ++LastEmitted;    <span class="comment">// Consume '}' character.</span>
+<a name="l00353"></a>00353       }
+<a name="l00354"></a>00354 
+<a name="l00355"></a>00355       <span class="keywordflow">if</span> (Val >= NumOperands-1)
+<a name="l00356"></a>00356         <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(<span class="stringliteral">"Invalid $ operand number in inline asm string: '"</span> +
+<a name="l00357"></a>00357                            <a class="code" href="classllvm_1_1Twine.html">Twine</a>(AsmStr) + <span class="stringliteral">"'"</span>);
+<a name="l00358"></a>00358 
+<a name="l00359"></a>00359       <span class="comment">// Okay, we finally have a value number.  Ask the target to print this</span>
+<a name="l00360"></a>00360       <span class="comment">// operand!</span>
+<a name="l00361"></a>00361       <span class="keywordflow">if</span> (CurVariant == -1 || CurVariant == AsmPrinterVariant) {
+<a name="l00362"></a>00362         <span class="keywordtype">unsigned</span> OpNo = <a class="code" href="classllvm_1_1InlineAsm.html#a25464ee25a64b02cb48356ca2284dab5ad8e4e0d44daebe8c07cf5d6d60a4fc30">InlineAsm::MIOp_FirstOperand</a>;
+<a name="l00363"></a>00363 
+<a name="l00364"></a>00364         <span class="keywordtype">bool</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a> = <span class="keyword">false</span>;
+<a name="l00365"></a>00365 
+<a name="l00366"></a>00366         <span class="comment">// Scan to find the machine operand number for the operand.</span>
+<a name="l00367"></a>00367         <span class="keywordflow">for</span> (; Val; --Val) {
+<a name="l00368"></a>00368           <span class="keywordflow">if</span> (OpNo >= MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>()) <span class="keywordflow">break</span>;
+<a name="l00369"></a>00369           <span class="keywordtype">unsigned</span> OpFlags = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(OpNo).<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l00370"></a>00370           OpNo += <a class="code" href="classllvm_1_1InlineAsm.html#a4437506c56127755bed59ee1b30e95b9">InlineAsm::getNumOperandRegisters</a>(OpFlags) + 1;
+<a name="l00371"></a>00371         }
+<a name="l00372"></a>00372 
+<a name="l00373"></a>00373         <span class="comment">// We may have a location metadata attached to the end of the</span>
+<a name="l00374"></a>00374         <span class="comment">// instruction, and at no point should see metadata at any</span>
+<a name="l00375"></a>00375         <span class="comment">// other point while processing. It's an error if so.</span>
+<a name="l00376"></a>00376         <span class="keywordflow">if</span> (OpNo >= MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>() ||
+<a name="l00377"></a>00377             MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(OpNo).<a class="code" href="classllvm_1_1MachineOperand.html#a0e2df00699ee7519edd1a7075feb11d9" title="isMetadata - Tests if this is a MO_Metadata operand.">isMetadata</a>()) {
+<a name="l00378"></a>00378           Error = <span class="keyword">true</span>;
+<a name="l00379"></a>00379         } <span class="keywordflow">else</span> {
+<a name="l00380"></a>00380           <span class="keywordtype">unsigned</span> OpFlags = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(OpNo).<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l00381"></a>00381           ++OpNo;  <span class="comment">// Skip over the ID number.</span>
+<a name="l00382"></a>00382 
+<a name="l00383"></a>00383           <span class="keywordflow">if</span> (Modifier[0] == <span class="charliteral">'l'</span>)  <span class="comment">// labels are target independent</span>
+<a name="l00384"></a>00384             <span class="comment">// FIXME: What if the operand isn't an MBB, report error?</span>
+<a name="l00385"></a>00385             OS << *MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(OpNo).<a class="code" href="classllvm_1_1MachineOperand.html#a3350f7760c4eec67ea7d8f3063c3d748">getMBB</a>()-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a24d0da534c4fb156547a04749b9f6468">getSymbol</a>();
+<a name="l00386"></a>00386           <span class="keywordflow">else</span> {
+<a name="l00387"></a>00387             <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1InlineAsm.html#a20a6d489de78da41c6032c7651f405a6">InlineAsm::isMemKind</a>(OpFlags)) {
+<a name="l00388"></a>00388               Error = AP-><a class="code" href="classllvm_1_1AsmPrinter.html#a8ebe14186b99562a5e5780963c21bade">PrintAsmMemoryOperand</a>(MI, OpNo, InlineAsmVariant,
+<a name="l00389"></a>00389                                                 Modifier[0] ? Modifier : 0,
+<a name="l00390"></a>00390                                                 OS);
+<a name="l00391"></a>00391             } <span class="keywordflow">else</span> {
+<a name="l00392"></a>00392               Error = AP-><a class="code" href="classllvm_1_1AsmPrinter.html#a7447ee883681c6e7d788d685c65ac47f">PrintAsmOperand</a>(MI, OpNo, InlineAsmVariant,
+<a name="l00393"></a>00393                                           Modifier[0] ? Modifier : 0, OS);
+<a name="l00394"></a>00394             }
+<a name="l00395"></a>00395           }
+<a name="l00396"></a>00396         }
+<a name="l00397"></a>00397         <span class="keywordflow">if</span> (Error) {
+<a name="l00398"></a>00398           std::string msg;
+<a name="l00399"></a>00399           <a class="code" href="classllvm_1_1raw__string__ostream.html">raw_string_ostream</a> Msg(msg);
+<a name="l00400"></a>00400           Msg << <span class="stringliteral">"invalid operand in inline asm: '"</span> << AsmStr << <span class="stringliteral">"'"</span>;
+<a name="l00401"></a>00401           MMI-><a class="code" href="classllvm_1_1MachineModuleInfo.html#a598aa3cb9841cd86396b69a6e3066fdc">getModule</a>()-><a class="code" href="classllvm_1_1Module.html#a0e74af4b7c739f3a14e737c3042b6617">getContext</a>().<a class="code" href="classllvm_1_1LLVMContext.html#acff246b19234d38be83663af581f05ac">emitError</a>(LocCookie, Msg.<a class="code" href="classllvm_1_1raw__string__ostream.html#ae086260f8c216554ff46dcd96e171459">str</a>());
+<a name="l00402"></a>00402         }
+<a name="l00403"></a>00403       }
+<a name="l00404"></a>00404       <span class="keywordflow">break</span>;
+<a name="l00405"></a>00405     }
+<a name="l00406"></a>00406     }
+<a name="l00407"></a>00407   }
+<a name="l00408"></a>00408   OS << <span class="charliteral">'\n'</span> << (<a class="code" href="classchar.html">char</a>)0;  <span class="comment">// null terminate string.</span>
+<a name="l00409"></a>00409 }
+<a name="l00410"></a>00410 <span class="comment"></span>
+<a name="l00411"></a>00411 <span class="comment">/// EmitInlineAsm - This method formats and emits the specified machine</span>
+<a name="l00412"></a>00412 <span class="comment">/// instruction that is an inline asm.</span>
+<a name="l00413"></a>00413 <span class="comment"></span><span class="keywordtype">void</span> AsmPrinter::EmitInlineAsm(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>)<span class="keyword"> const </span>{
+<a name="l00414"></a>00414   assert(MI-><a class="code" href="classllvm_1_1MachineInstr.html#acd9af7d3f8a155c4356edccbc0522c8e">isInlineAsm</a>() && <span class="stringliteral">"printInlineAsm only works on inline asms"</span>);
+<a name="l00415"></a>00415 
+<a name="l00416"></a>00416   <span class="comment">// Count the number of register definitions to find the asm string.</span>
+<a name="l00417"></a>00417   <span class="keywordtype">unsigned</span> NumDefs = 0;
+<a name="l00418"></a>00418   <span class="keywordflow">for</span> (; MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(NumDefs).<a class="code" href="classllvm_1_1MachineOperand.html#ad8198d6d83af9410d867136e33fbf4b2" title="isReg - Tests if this is a MO_Register operand.">isReg</a>() && MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(NumDefs).<a class="code" href="classllvm_1_1MachineOperand.html#a8de7d5cf38939044471c6ee60a01a3df">isDef</a>();
+<a name="l00419"></a>00419        ++NumDefs)
+<a name="l00420"></a>00420     assert(NumDefs != MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>()-2 && <span class="stringliteral">"No asm string?"</span>);
+<a name="l00421"></a>00421 
+<a name="l00422"></a>00422   assert(MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(NumDefs).<a class="code" href="classllvm_1_1MachineOperand.html#a312ddf2fd2162ef0c552d913369cd57f" title="isSymbol - Tests if this is a MO_ExternalSymbol operand.">isSymbol</a>() && <span class="stringliteral">"No asm string?"</span>);
+<a name="l00423"></a>00423 
+<a name="l00424"></a>00424   <span class="comment">// Disassemble the AsmStr, printing out the literal pieces, the operands, etc.</span>
+<a name="l00425"></a>00425   <span class="keyword">const</span> <span class="keywordtype">char</span> *AsmStr = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(NumDefs).<a class="code" href="classllvm_1_1MachineOperand.html#ad9456ef14a72da4e4def5d8747c41a09">getSymbolName</a>();
+<a name="l00426"></a>00426 
+<a name="l00427"></a>00427   <span class="comment">// If this asmstr is empty, just print the #APP/#NOAPP markers.</span>
+<a name="l00428"></a>00428   <span class="comment">// These are useful to see where empty asm's wound up.</span>
+<a name="l00429"></a>00429   <span class="keywordflow">if</span> (AsmStr[0] == 0) {
+<a name="l00430"></a>00430     <span class="comment">// Don't emit the comments if writing to a .o file.</span>
+<a name="l00431"></a>00431     <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1AsmPrinter.html#a32ad5336c0020843cbb5a982c0f1a708">OutStreamer</a>.<a class="code" href="classllvm_1_1MCStreamer.html#a957d3d6304f9d576600e4b6d04937cf6">hasRawTextSupport</a>()) <span class="keywordflow">return</span>;
+<a name="l00432"></a>00432 
+<a name="l00433"></a>00433     <a class="code" href="classllvm_1_1AsmPrinter.html#a32ad5336c0020843cbb5a982c0f1a708">OutStreamer</a>.<a class="code" href="classllvm_1_1MCStreamer.html#a6e649d2c2b28e53d4e3296e3d57fc5fa">EmitRawText</a>(<a class="code" href="classllvm_1_1Twine.html">Twine</a>(<span class="stringliteral">"\t"</span>)+<a class="code" href="classllvm_1_1AsmPrinter.html#a47692fd7344d1adc2916ad4cc31d26c8">MAI</a>-><a class="code" href="classllvm_1_1MCAsmInfo.html#a076a9d9d3ff46dfc9aa36de94a1ff351">getCommentString</a>()+
+<a name="l00434"></a>00434                             <a class="code" href="classllvm_1_1AsmPrinter.html#a47692fd7344d1adc2916ad4cc31d26c8">MAI</a>-><a class="code" href="classllvm_1_1MCAsmInfo.html#af60d07d8b4826f36303e2acfd034ad39">getInlineAsmStart</a>());
+<a name="l00435"></a>00435     <a class="code" href="classllvm_1_1AsmPrinter.html#a32ad5336c0020843cbb5a982c0f1a708">OutStreamer</a>.<a class="code" href="classllvm_1_1MCStreamer.html#a6e649d2c2b28e53d4e3296e3d57fc5fa">EmitRawText</a>(<a class="code" href="classllvm_1_1Twine.html">Twine</a>(<span class="stringliteral">"\t"</span>)+<a class="code" href="classllvm_1_1AsmPrinter.html#a47692fd7344d1adc2916ad4cc31d26c8">MAI</a>-><a class="code" href="classllvm_1_1MCAsmInfo.html#a076a9d9d3ff46dfc9aa36de94a1ff351">getCommentString</a>()+
+<a name="l00436"></a>00436                             <a class="code" href="classllvm_1_1AsmPrinter.html#a47692fd7344d1adc2916ad4cc31d26c8">MAI</a>-><a class="code" href="classllvm_1_1MCAsmInfo.html#a2ccb142bee8a34dbc18c9d9bba3e6c8e">getInlineAsmEnd</a>());
+<a name="l00437"></a>00437     <span class="keywordflow">return</span>;
+<a name="l00438"></a>00438   }
+<a name="l00439"></a>00439 
+<a name="l00440"></a>00440   <span class="comment">// Emit the #APP start marker.  This has to happen even if verbose-asm isn't</span>
+<a name="l00441"></a>00441   <span class="comment">// enabled, so we use EmitRawText.</span>
+<a name="l00442"></a>00442   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1AsmPrinter.html#a32ad5336c0020843cbb5a982c0f1a708">OutStreamer</a>.<a class="code" href="classllvm_1_1MCStreamer.html#a957d3d6304f9d576600e4b6d04937cf6">hasRawTextSupport</a>())
+<a name="l00443"></a>00443     <a class="code" href="classllvm_1_1AsmPrinter.html#a32ad5336c0020843cbb5a982c0f1a708">OutStreamer</a>.<a class="code" href="classllvm_1_1MCStreamer.html#a6e649d2c2b28e53d4e3296e3d57fc5fa">EmitRawText</a>(<a class="code" href="classllvm_1_1Twine.html">Twine</a>(<span class="stringliteral">"\t"</span>)+<a class="code" href="classllvm_1_1AsmPrinter.html#a47692fd7344d1adc2916ad4cc31d26c8">MAI</a>-><a class="code" href="classllvm_1_1MCAsmInfo.html#a076a9d9d3ff46dfc9aa36de94a1ff351">getCommentString</a>()+
+<a name="l00444"></a>00444                             <a class="code" href="classllvm_1_1AsmPrinter.html#a47692fd7344d1adc2916ad4cc31d26c8">MAI</a>-><a class="code" href="classllvm_1_1MCAsmInfo.html#af60d07d8b4826f36303e2acfd034ad39">getInlineAsmStart</a>());
+<a name="l00445"></a>00445 
+<a name="l00446"></a>00446   <span class="comment">// Get the !srcloc metadata node if we have it, and decode the loc cookie from</span>
+<a name="l00447"></a>00447   <span class="comment">// it.</span>
+<a name="l00448"></a>00448   <span class="keywordtype">unsigned</span> LocCookie = 0;
+<a name="l00449"></a>00449   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *LocMD = 0;
+<a name="l00450"></a>00450   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a7b5fe96d88954efc855e6c466207e535">getNumOperands</a>(); i != 0; --i) {
+<a name="l00451"></a>00451     <span class="keywordflow">if</span> (MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i-1).<a class="code" href="classllvm_1_1MachineOperand.html#a0e2df00699ee7519edd1a7075feb11d9" title="isMetadata - Tests if this is a MO_Metadata operand.">isMetadata</a>() &&
+<a name="l00452"></a>00452         (LocMD = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(i-1).<a class="code" href="classllvm_1_1MachineOperand.html#afd78a2f55a6c4914e7e9cf442a0dabe8">getMetadata</a>()) &&
+<a name="l00453"></a>00453         LocMD-><a class="code" href="classllvm_1_1MDNode.html#ade17b50e4f0b835cd9eb58dffe12a90d" title="getNumOperands - Return number of MDNode operands.">getNumOperands</a>() != 0) {
+<a name="l00454"></a>00454       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *CI = dyn_cast<ConstantInt>(LocMD-><a class="code" href="classllvm_1_1MDNode.html#aec4493a96aeff35ad170efd346dc5e14" title="getOperand - Return specified operand.">getOperand</a>(0))) {
+<a name="l00455"></a>00455         LocCookie = CI->getZExtValue();
+<a name="l00456"></a>00456         <span class="keywordflow">break</span>;
+<a name="l00457"></a>00457       }
+<a name="l00458"></a>00458     }
+<a name="l00459"></a>00459   }
+<a name="l00460"></a>00460 
+<a name="l00461"></a>00461   <span class="comment">// Emit the inline asm to a temporary string so we can emit it through</span>
+<a name="l00462"></a>00462   <span class="comment">// EmitInlineAsm.</span>
+<a name="l00463"></a>00463   <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> StringData;
+<a name="l00464"></a>00464   <a class="code" href="classllvm_1_1raw__svector__ostream.html">raw_svector_ostream</a> OS(StringData);
+<a name="l00465"></a>00465 
+<a name="l00466"></a>00466   <span class="comment">// The variant of the current asmprinter.</span>
+<a name="l00467"></a>00467   <span class="keywordtype">int</span> AsmPrinterVariant = <a class="code" href="classllvm_1_1AsmPrinter.html#a47692fd7344d1adc2916ad4cc31d26c8">MAI</a>-><a class="code" href="classllvm_1_1MCAsmInfo.html#a4acff421486995ccf24709d1add534ad">getAssemblerDialect</a>();
+<a name="l00468"></a>00468   <a class="code" href="classllvm_1_1InlineAsm.html#a2c0e1ae3b31928af2e0a390bbc2ea9b8">InlineAsm::AsmDialect</a> InlineAsmVariant = MI-><a class="code" href="classllvm_1_1MachineInstr.html#ab56cefa86f221d8f50895a39ab9fcc0d">getInlineAsmDialect</a>();
+<a name="l00469"></a>00469   <a class="code" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> *AP = <span class="keyword">const_cast<</span><a class="code" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a>*<span class="keyword">></span>(<span class="keyword">this</span>);
+<a name="l00470"></a>00470   <span class="keywordflow">if</span> (InlineAsmVariant == <a class="code" href="classllvm_1_1InlineAsm.html#a2c0e1ae3b31928af2e0a390bbc2ea9b8ae46075a65afe271f3d7f91e1243aacca">InlineAsm::AD_ATT</a>)
+<a name="l00471"></a>00471     <a class="code" href="AsmPrinterInlineAsm_8cpp.html#a0554c1eb1906e40d61253d9c60ef412d">EmitGCCInlineAsmStr</a>(AsmStr, MI, <a class="code" href="classllvm_1_1AsmPrinter.html#aa1316da87e093c08b6657877572b19a4" title="MMI - This is a pointer to the current MachineModuleInfo.">MMI</a>, InlineAsmVariant, AsmPrinterVariant,
+<a name="l00472"></a>00472                         AP, LocCookie, OS);
+<a name="l00473"></a>00473   <span class="keywordflow">else</span>
+<a name="l00474"></a>00474     <a class="code" href="AsmPrinterInlineAsm_8cpp.html#a93a3c3d4226d05db67f7abdc1a90e7e1">EmitMSInlineAsmStr</a>(AsmStr, MI, <a class="code" href="classllvm_1_1AsmPrinter.html#aa1316da87e093c08b6657877572b19a4" title="MMI - This is a pointer to the current MachineModuleInfo.">MMI</a>, InlineAsmVariant, AP, LocCookie, OS);
+<a name="l00475"></a>00475 
+<a name="l00476"></a>00476   EmitInlineAsm(OS.str(), LocMD, MI-><a class="code" href="classllvm_1_1MachineInstr.html#ab56cefa86f221d8f50895a39ab9fcc0d">getInlineAsmDialect</a>());
+<a name="l00477"></a>00477 
+<a name="l00478"></a>00478   <span class="comment">// Emit the #NOAPP end marker.  This has to happen even if verbose-asm isn't</span>
+<a name="l00479"></a>00479   <span class="comment">// enabled, so we use EmitRawText.</span>
+<a name="l00480"></a>00480   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1AsmPrinter.html#a32ad5336c0020843cbb5a982c0f1a708">OutStreamer</a>.<a class="code" href="classllvm_1_1MCStreamer.html#a957d3d6304f9d576600e4b6d04937cf6">hasRawTextSupport</a>())
+<a name="l00481"></a>00481     <a class="code" href="classllvm_1_1AsmPrinter.html#a32ad5336c0020843cbb5a982c0f1a708">OutStreamer</a>.<a class="code" href="classllvm_1_1MCStreamer.html#a6e649d2c2b28e53d4e3296e3d57fc5fa">EmitRawText</a>(<a class="code" href="classllvm_1_1Twine.html">Twine</a>(<span class="stringliteral">"\t"</span>)+<a class="code" href="classllvm_1_1AsmPrinter.html#a47692fd7344d1adc2916ad4cc31d26c8">MAI</a>-><a class="code" href="classllvm_1_1MCAsmInfo.html#a076a9d9d3ff46dfc9aa36de94a1ff351">getCommentString</a>()+
+<a name="l00482"></a>00482                             <a class="code" href="classllvm_1_1AsmPrinter.html#a47692fd7344d1adc2916ad4cc31d26c8">MAI</a>-><a class="code" href="classllvm_1_1MCAsmInfo.html#a2ccb142bee8a34dbc18c9d9bba3e6c8e">getInlineAsmEnd</a>());
+<a name="l00483"></a>00483 }
+<a name="l00484"></a>00484 
+<a name="l00485"></a>00485 <span class="comment"></span>
+<a name="l00486"></a>00486 <span class="comment">/// PrintSpecial - Print information related to the specified machine instr</span>
+<a name="l00487"></a>00487 <span class="comment">/// that is independent of the operand, and may be independent of the instr</span>
+<a name="l00488"></a>00488 <span class="comment">/// itself.  This can be useful for portably encoding the comment character</span>
+<a name="l00489"></a>00489 <span class="comment">/// or other bits of target-specific knowledge into the asmstrings.  The</span>
+<a name="l00490"></a>00490 <span class="comment">/// syntax used is ${:comment}.  Targets can override this to add support</span>
+<a name="l00491"></a>00491 <span class="comment">/// for their own strange codes.</span>
+<a name="l00492"></a><a class="code" href="classllvm_1_1AsmPrinter.html#a750b45b73f9002263925639aab2cbe07">00492</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1AsmPrinter.html#a750b45b73f9002263925639aab2cbe07">AsmPrinter::PrintSpecial</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &OS,
+<a name="l00493"></a>00493                               <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a4a6621856674f376740a1ba6efd809e3">Code</a>)<span class="keyword"> const </span>{
+<a name="l00494"></a>00494   <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>(Code, <span class="stringliteral">"private"</span>)) {
+<a name="l00495"></a>00495     OS << <a class="code" href="classllvm_1_1AsmPrinter.html#a47692fd7344d1adc2916ad4cc31d26c8">MAI</a>-><a class="code" href="classllvm_1_1MCAsmInfo.html#aeb8bf8ab4f7e80a32279218f53ac0fdc">getPrivateGlobalPrefix</a>();
+<a name="l00496"></a>00496   } <span class="keywordflow">else</span> <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>(Code, <span class="stringliteral">"comment"</span>)) {
+<a name="l00497"></a>00497     OS << <a class="code" href="classllvm_1_1AsmPrinter.html#a47692fd7344d1adc2916ad4cc31d26c8">MAI</a>-><a class="code" href="classllvm_1_1MCAsmInfo.html#a076a9d9d3ff46dfc9aa36de94a1ff351">getCommentString</a>();
+<a name="l00498"></a>00498   } <span class="keywordflow">else</span> <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>(Code, <span class="stringliteral">"uid"</span>)) {
+<a name="l00499"></a>00499     <span class="comment">// Comparing the address of MI isn't sufficient, because machineinstrs may</span>
+<a name="l00500"></a>00500     <span class="comment">// be allocated to the same address across functions.</span>
+<a name="l00501"></a>00501 
+<a name="l00502"></a>00502     <span class="comment">// If this is a new LastFn instruction, bump the counter.</span>
+<a name="l00503"></a>00503     <span class="keywordflow">if</span> (LastMI != MI || LastFn != <a class="code" href="classllvm_1_1AsmPrinter.html#a62339c2afaafed394a2f7c44a830c2cd">getFunctionNumber</a>()) {
+<a name="l00504"></a>00504       ++Counter;
+<a name="l00505"></a>00505       LastMI = <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>;
+<a name="l00506"></a>00506       LastFn = <a class="code" href="classllvm_1_1AsmPrinter.html#a62339c2afaafed394a2f7c44a830c2cd">getFunctionNumber</a>();
+<a name="l00507"></a>00507     }
+<a name="l00508"></a>00508     OS << Counter;
+<a name="l00509"></a>00509   } <span class="keywordflow">else</span> {
+<a name="l00510"></a>00510     std::string msg;
+<a name="l00511"></a>00511     <a class="code" href="classllvm_1_1raw__string__ostream.html">raw_string_ostream</a> Msg(msg);
+<a name="l00512"></a>00512     Msg << <span class="stringliteral">"Unknown special formatter '"</span> << Code
+<a name="l00513"></a>00513          << <span class="stringliteral">"' for machine instr: "</span> << *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>;
+<a name="l00514"></a>00514     <a class="code" href="namespacellvm.html#af9521f126aaffcc4bbe06c554b8b4bc1">report_fatal_error</a>(Msg.<a class="code" href="classllvm_1_1raw__string__ostream.html#ae086260f8c216554ff46dcd96e171459">str</a>());
+<a name="l00515"></a>00515   }
+<a name="l00516"></a>00516 }
+<a name="l00517"></a>00517 <span class="comment"></span>
+<a name="l00518"></a>00518 <span class="comment">/// PrintAsmOperand - Print the specified operand of MI, an INLINEASM</span>
+<a name="l00519"></a>00519 <span class="comment">/// instruction, using the specified assembler variant.  Targets should</span>
+<a name="l00520"></a>00520 <span class="comment">/// override this to format as appropriate.</span>
+<a name="l00521"></a><a class="code" href="classllvm_1_1AsmPrinter.html#a7447ee883681c6e7d788d685c65ac47f">00521</a> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AsmPrinter.html#a7447ee883681c6e7d788d685c65ac47f">AsmPrinter::PrintAsmOperand</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <span class="keywordtype">unsigned</span> OpNo,
+<a name="l00522"></a>00522                                  <span class="keywordtype">unsigned</span> AsmVariant, <span class="keyword">const</span> <span class="keywordtype">char</span> *ExtraCode,
+<a name="l00523"></a>00523                                  <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O) {
+<a name="l00524"></a>00524   <span class="comment">// Does this asm operand have a single letter operand modifier?</span>
+<a name="l00525"></a>00525   <span class="keywordflow">if</span> (ExtraCode && ExtraCode[0]) {
+<a name="l00526"></a>00526     <span class="keywordflow">if</span> (ExtraCode[1] != 0) <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// Unknown modifier.</span>
+<a name="l00527"></a>00527 
+<a name="l00528"></a>00528     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(OpNo);
+<a name="l00529"></a>00529     <span class="keywordflow">switch</span> (ExtraCode[0]) {
+<a name="l00530"></a>00530     <span class="keywordflow">default</span>:
+<a name="l00531"></a>00531       <span class="keywordflow">return</span> <span class="keyword">true</span>;  <span class="comment">// Unknown modifier.</span>
+<a name="l00532"></a>00532     <span class="keywordflow">case</span> <span class="charliteral">'c'</span>: <span class="comment">// Substitute immediate value without immediate syntax</span>
+<a name="l00533"></a>00533       <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a1b63a086907e5b144612bb4266b713d6">getType</a>() != <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da066f84460d9f7b61d54b187555756ef6" title="Immediate operand.">MachineOperand::MO_Immediate</a>)
+<a name="l00534"></a>00534         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00535"></a>00535       O << MO.<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l00536"></a>00536       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00537"></a>00537     <span class="keywordflow">case</span> <span class="charliteral">'n'</span>:  <span class="comment">// Negate the immediate constant.</span>
+<a name="l00538"></a>00538       <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a1b63a086907e5b144612bb4266b713d6">getType</a>() != <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da066f84460d9f7b61d54b187555756ef6" title="Immediate operand.">MachineOperand::MO_Immediate</a>)
+<a name="l00539"></a>00539         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00540"></a>00540       O << -MO.<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l00541"></a>00541       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00542"></a>00542     }
+<a name="l00543"></a>00543   }
+<a name="l00544"></a>00544   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00545"></a>00545 }
+<a name="l00546"></a>00546 
+<a name="l00547"></a><a class="code" href="classllvm_1_1AsmPrinter.html#a8ebe14186b99562a5e5780963c21bade">00547</a> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AsmPrinter.html#a8ebe14186b99562a5e5780963c21bade">AsmPrinter::PrintAsmMemoryOperand</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <span class="keywordtype">unsigned</span> OpNo,
+<a name="l00548"></a>00548                                        <span class="keywordtype">unsigned</span> AsmVariant,
+<a name="l00549"></a>00549                                        <span class="keyword">const</span> <span class="keywordtype">char</span> *ExtraCode, <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O) {
+<a name="l00550"></a>00550   <span class="comment">// Target doesn't support this yet!</span>
+<a name="l00551"></a>00551   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00552"></a>00552 }
+<a name="l00553"></a>00553 
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:32:49 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/AsmPrinter_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/AsmPrinter_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/AsmPrinter_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/AsmPrinter_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,982 @@
+<!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: AsmPrinter.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>
+      <li class="navelem"><a class="el" href="dir_5f8f0bfb0fa844bddb949c179c0766c9.html">AsmPrinter</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Defines</a> |
+<a href="#typedef-members">Typedefs</a> |
+<a href="#func-members">Functions</a> |
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">AsmPrinter.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="AsmPrinter_8h_source.html">llvm/CodeGen/AsmPrinter.h</a>"</code><br/>
+<code>#include "<a class="el" href="DwarfDebug_8h_source.html">DwarfDebug.h</a>"</code><br/>
+<code>#include "<a class="el" href="DwarfException_8h_source.html">DwarfException.h</a>"</code><br/>
+<code>#include "<a class="el" href="DebugInfo_8h_source.html">llvm/DebugInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="Module_8h_source.html">llvm/Module.h</a>"</code><br/>
+<code>#include "<a class="el" href="GCMetadataPrinter_8h_source.html">llvm/CodeGen/GCMetadataPrinter.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineConstantPool_8h_source.html">llvm/CodeGen/MachineConstantPool.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineFrameInfo_8h_source.html">llvm/CodeGen/MachineFrameInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineFunction_8h_source.html">llvm/CodeGen/MachineFunction.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineJumpTableInfo_8h_source.html">llvm/CodeGen/MachineJumpTableInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineLoopInfo_8h_source.html">llvm/CodeGen/MachineLoopInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineModuleInfo_8h_source.html">llvm/CodeGen/MachineModuleInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="ConstantFolding_8h_source.html">llvm/Analysis/ConstantFolding.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCAsmInfo_8h_source.html">llvm/MC/MCAsmInfo.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="MCExpr_8h_source.html">llvm/MC/MCExpr.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCInst_8h_source.html">llvm/MC/MCInst.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCSection_8h_source.html">llvm/MC/MCSection.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCStreamer_8h_source.html">llvm/MC/MCStreamer.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCSymbol_8h_source.html">llvm/MC/MCSymbol.h</a>"</code><br/>
+<code>#include "<a class="el" href="Mangler_8h_source.html">llvm/Target/Mangler.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="TargetInstrInfo_8h_source.html">llvm/Target/TargetInstrInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetLowering_8h_source.html">llvm/Target/TargetLowering.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetLoweringObjectFile_8h_source.html">llvm/Target/TargetLoweringObjectFile.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetOptions_8h_source.html">llvm/Target/TargetOptions.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetRegisterInfo_8h_source.html">llvm/Target/TargetRegisterInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="Writer_8h_source.html">llvm/Assembly/Writer.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallString_8h_source.html">llvm/ADT/SmallString.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="ErrorHandling_8h_source.html">llvm/Support/ErrorHandling.h</a>"</code><br/>
+<code>#include "<a class="el" href="Format_8h_source.html">llvm/Support/Format.h</a>"</code><br/>
+<code>#include "<a class="el" href="MathExtras_8h_source.html">llvm/Support/MathExtras.h</a>"</code><br/>
+<code>#include "<a class="el" href="Timer_8h_source.html">llvm/Support/Timer.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for AsmPrinter.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="AsmPrinter_8cpp__incl.png" border="0" usemap="#AsmPrinter_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="AsmPrinter_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="AsmPrinter_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "asm-printer"</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="classllvm_1_1DenseMap.html">DenseMap</a>< <a class="el" href="classllvm_1_1GCStrategy.html">GCStrategy</a> <br class="typebreak"/>
+*, <a class="el" href="classllvm_1_1GCMetadataPrinter.html">GCMetadataPrinter</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#aad452a994d36a20bd719b346a5e54657">gcp_map_type</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef std::pair< <a class="el" href="classunsigned.html">unsigned</a>, <br class="typebreak"/>
+<a class="el" href="classllvm_1_1Constant.html">Constant</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#aa72c548afdc114a13ef9c191c2870761">Structor</a></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#aaabcf60d3682e28e74a3843f55e9e304">STATISTIC</a> (EmittedInsts,"Number of machine instrs printed")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="AsmPrinter_8cpp.html#aad452a994d36a20bd719b346a5e54657">gcp_map_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#aaf077eb783af067b882ad1b06cbf6845">getGCMap</a> (void *&P)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classunsigned.html">unsigned</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a0102f8afc12377980aadfc8f1e77f94f">getGVAlignmentLog2</a> (const <a class="el" href="classllvm_1_1GlobalValue.html">GlobalValue</a> *GV, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD, <a class="el" href="classunsigned.html">unsigned</a> InBits=0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#acc7c8cecc9ea5502d746c44f5fe38058">emitComments</a> (const <a class="el" href="classllvm_1_1MachineInstr.html">MachineInstr</a> &MI, <a class="el" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &CommentOS)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">emitComments - Pretty-print comments for instructions.  <a href="#acc7c8cecc9ea5502d746c44f5fe38058"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a69ab60df8e545bb5f168170638c740c8">emitImplicitDef</a> (const <a class="el" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> &AP)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#aa0d00a1b6833bc76147cf38dd23ecf97">emitKill</a> (const <a class="el" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> &AP)</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="AsmPrinter_8cpp.html#a0207059cc31ba2a73d1d7bc1ce62663f">emitDebugValueComment</a> (const <a class="el" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> &AP)</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="AsmPrinter_8cpp.html#a76457a770a420a47f99494962855ea1f">priority_order</a> (const <a class="el" href="AsmPrinter_8cpp.html#aa72c548afdc114a13ef9c191c2870761">Structor</a> &lhs, const <a class="el" href="AsmPrinter_8cpp.html#aa72c548afdc114a13ef9c191c2870761">Structor</a> &rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classllvm_1_1MCExpr.html">MCExpr</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a94a7b150c8f7db1546562dc81b45710f">lowerConstant</a> (const <a class="el" href="classllvm_1_1Constant.html">Constant</a> *CV, <a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> &AP)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a8b0b04b9e20337d0d97103285cfacf11">emitGlobalConstantImpl</a> (const <a class="el" href="classllvm_1_1Constant.html">Constant</a> *C, <a class="el" href="classunsigned.html">unsigned</a> AddrSpace, <a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> &AP)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a6265f694484b32f6b1b0bc8872d5046e">isRepeatedByteSequence</a> (const <a class="el" href="classllvm_1_1ConstantDataSequential.html">ConstantDataSequential</a> *V)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#af87079afb6e1968191a0997358a25e79">isRepeatedByteSequence</a> (const <a class="el" href="classllvm_1_1Value.html">Value</a> *V, <a class="el" href="classllvm_1_1TargetMachine.html">TargetMachine</a> &TM)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a1f45cdc25a8a80bdb7fc4f53c16eab69">emitGlobalConstantDataSequential</a> (const <a class="el" href="classllvm_1_1ConstantDataSequential.html">ConstantDataSequential</a> *CDS, <a class="el" href="classunsigned.html">unsigned</a> AddrSpace, <a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> &AP)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a96bcb4098973a489e013a64db717755c">emitGlobalConstantArray</a> (const <a class="el" href="classllvm_1_1ConstantArray.html">ConstantArray</a> *CA, <a class="el" href="classunsigned.html">unsigned</a> AddrSpace, <a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> &AP)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#ac436e227d899b13b511592e05f54224a">emitGlobalConstantVector</a> (const <a class="el" href="classllvm_1_1ConstantVector.html">ConstantVector</a> *CV, <a class="el" href="classunsigned.html">unsigned</a> AddrSpace, <a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> &AP)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a3271cb54d5b09fc9c97820b0a4ac44fe">emitGlobalConstantStruct</a> (const <a class="el" href="classllvm_1_1ConstantStruct.html">ConstantStruct</a> *CS, <a class="el" href="classunsigned.html">unsigned</a> AddrSpace, <a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> &AP)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a9fbf87582834c668a6c006cd0cfa9b2a">emitGlobalConstantFP</a> (const <a class="el" href="classllvm_1_1ConstantFP.html">ConstantFP</a> *CFP, <a class="el" href="classunsigned.html">unsigned</a> AddrSpace, <a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> &AP)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a3760fb0949d9f5cbd8f8fb8bda2dbbc7">emitGlobalConstantLargeInt</a> (const <a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a> *CI, <a class="el" href="classunsigned.html">unsigned</a> AddrSpace, <a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> &AP)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a9e656ca6880429c47f777ef0d06ac030">PrintParentLoopComment</a> (<a class="el" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &OS, const <a class="el" href="classllvm_1_1MachineLoop.html">MachineLoop</a> *<a class="el" href="classllvm_1_1Loop.html">Loop</a>, <a class="el" href="classunsigned.html">unsigned</a> FunctionNumber)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">PrintParentLoopComment - Print comments about parent loops of this one.  <a href="#a9e656ca6880429c47f777ef0d06ac030"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a8e071196c041b94cb39ea3ff6a5aa654">PrintChildLoopComment</a> (<a class="el" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &OS, const <a class="el" href="classllvm_1_1MachineLoop.html">MachineLoop</a> *<a class="el" href="classllvm_1_1Loop.html">Loop</a>, <a class="el" href="classunsigned.html">unsigned</a> FunctionNumber)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a5a05fbafdbe696de6c83937542acc38e">emitBasicBlockLoopComments</a> (const <a class="el" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> &MBB, const <a class="el" href="classllvm_1_1MachineLoopInfo.html">MachineLoopInfo</a> *<a class="el" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>, const <a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> &AP)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">emitBasicBlockLoopComments - Pretty-print comments for basic blocks.  <a href="#a5a05fbafdbe696de6c83937542acc38e"></a><br/></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 <a class="el" href="classchar.html">char</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a8e4bcdab567a4cda65858b8b7c9ee122">DWARFGroupName</a> = "DWARF Emission"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classchar.html">char</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#aaf3544b39d5e2148f058e4481e0b7266">DbgTimerName</a> = "DWARF <a class="el" href="NVPTXMCAsmInfo_8cpp.html#a89f8ea6224778c95b7b429aeb9c0cedd">Debug</a> Writer"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classchar.html">char</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="AsmPrinter_8cpp.html#a33b09bce7c68b41e8b3807afa3a29af5">EHTimerName</a> = "DWARF Exception Writer"</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="AsmPrinter.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "asm-printer"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l00014">14</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="aad452a994d36a20bd719b346a5e54657"></a><!-- doxytag: member="AsmPrinter.cpp::gcp_map_type" ref="aad452a994d36a20bd719b346a5e54657" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="classllvm_1_1DenseMap.html">DenseMap</a><<a class="el" href="classllvm_1_1GCStrategy.html">GCStrategy</a>*,<a class="el" href="classllvm_1_1GCMetadataPrinter.html">GCMetadataPrinter</a>*> <a class="el" href="AsmPrinter_8cpp.html#aad452a994d36a20bd719b346a5e54657">gcp_map_type</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l00059">59</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa72c548afdc114a13ef9c191c2870761"></a><!-- doxytag: member="AsmPrinter.cpp::Structor" ref="aa72c548afdc114a13ef9c191c2870761" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef std::pair<<a class="el" href="classunsigned.html">unsigned</a>, <a class="el" href="classllvm_1_1Constant.html">Constant</a>*> <a class="el" href="AsmPrinter_8cpp.html#aa72c548afdc114a13ef9c191c2870761">Structor</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l01266">1266</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a5a05fbafdbe696de6c83937542acc38e"></a><!-- doxytag: member="AsmPrinter.cpp::emitBasicBlockLoopComments" ref="a5a05fbafdbe696de6c83937542acc38e" args="(const MachineBasicBlock &MBB, const MachineLoopInfo *LI, const AsmPrinter &AP)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void emitBasicBlockLoopComments </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> & </td>
+          <td class="paramname"><em>MBB</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MachineLoopInfo.html">MachineLoopInfo</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_1AsmPrinter.html">AsmPrinter</a> & </td>
+          <td class="paramname"><em>AP</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>emitBasicBlockLoopComments - Pretty-print comments for basic blocks. </p>
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l02032">2032</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="MCStreamer_8h_source.html#l00132">llvm::MCStreamer::AddComment()</a>, <a class="el" href="LoopInfo_8h_source.html#l00135">llvm::LoopBase< BlockT, LoopT >::empty()</a>, <a class="el" href="MCStreamer_8cpp_source.html#l00059">llvm::MCStreamer::GetCommentOS()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l00125">llvm::AsmPrinter::getFunctionNumber()</a>, <a class="el" href="LoopInfo_8h_source.html#l00096">llvm::LoopBase< BlockT, LoopT >::getHeader()</a>, <a class="el" href="LoopInfo_8h_source.html#l00089">llvm::LoopBase< BlockT, LoopT >::getLoopDepth()</a>, <a class="el" href="MachineLoopInfo_8h_source.html#l00099">llvm::MachineLoopInfo::getLoopFor()</a>, <a class="el" href="MachineBasicBlock_8h_source.html#l00580">llvm::MachineBasicBlock::getNumber()</a>, <a class="el" href="LoopInfo_8h_source.html#l00097">llvm::LoopBase< BlockT, LoopT >::getParentLoop()</a>, <a class="el" href="raw__ostream_8cpp_source.html#l003
 85">llvm::raw_ostream::indent()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00075">llvm::AsmPrinter::OutStreamer</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l02019">PrintChildLoopComment()</a>, and <a class="el" href="AsmPrinter_8cpp_source.html#l02006">PrintParentLoopComment()</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l02073">llvm::AsmPrinter::EmitBasicBlockStart()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acc7c8cecc9ea5502d746c44f5fe38058"></a><!-- doxytag: member="AsmPrinter.cpp::emitComments" ref="acc7c8cecc9ea5502d746c44f5fe38058" args="(const MachineInstr &MI, raw_ostream &CommentOS)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void emitComments </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MachineInstr.html">MachineInstr</a> & </td>
+          <td class="paramname"><em>MI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1raw__ostream.html">raw_ostream</a> & </td>
+          <td class="paramname"><em>CommentOS</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>emitComments - Pretty-print comments for instructions. </p>
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l00486">486</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="MachineInstr_8h_source.html#l00131">llvm::MachineInstr::getAsmPrinterFlag()</a>, <a class="el" href="MachineFunction_8h_source.html#l00167">llvm::MachineFunction::getFrameInfo()</a>, <a class="el" href="Target_2TargetMachine_8h_source.html#l00106">llvm::TargetMachine::getInstrInfo()</a>, <a class="el" href="MachineInstr_8h_source.html#l00118">llvm::MachineInstr::getParent()</a>, <a class="el" href="MachineBasicBlock_8h_source.html#l00134">llvm::MachineBasicBlock::getParent()</a>, <a class="el" href="MachineMemOperand_8h_source.html#l00132">llvm::MachineMemOperand::getSize()</a>, <a class="el" href="MachineFunction_8h_source.html#l00156">llvm::MachineFunction::getTarget()</a>, <a class="el" href="TargetInstrInfo_8h_source.html#l00144">llvm::TargetInstrInfo::hasLoadFromStackSlot()</a>, <a class="el" href="TargetInstrInfo_8h_source.html#l00174">llvm::TargetInstrInfo::hasStoreToStackSlot()</a>, <a class="el" href="TargetInstrInfo_8h_source.html#
 l00132">llvm::TargetInstrInfo::isLoadFromStackSlotPostFE()</a>, <a class="el" href="MachineFrameInfo_8h_source.html#l00481">llvm::MachineFrameInfo::isSpillSlotObjectIndex()</a>, <a class="el" href="TargetInstrInfo_8h_source.html#l00163">llvm::TargetInstrInfo::isStoreToStackSlotPostFE()</a>, <a class="el" href="MachineInstr_8h_source.html#l00273">llvm::MachineInstr::memoperands_begin()</a>, and <a class="el" href="MachineInstr_8h_source.html#l00054">llvm::MachineInstr::ReloadReuse</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l00646">llvm::AsmPrinter::EmitFunctionBody()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0207059cc31ba2a73d1d7bc1ce62663f"></a><!-- doxytag: member="AsmPrinter.cpp::emitDebugValueComment" ref="a0207059cc31ba2a73d1d7bc1ce62663f" args="(const MachineInstr *MI, AsmPrinter &AP)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> emitDebugValueComment </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MachineInstr.html">MachineInstr</a> * </td>
+          <td class="paramname"><em>MI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> & </td>
+          <td class="paramname"><em>AP</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>emitDebugValueComment - This method handles the target-independent form of DBG_VALUE, returning true if it was able to do so. A false return means the target will need to handle MI in EmitInstruction. </p>
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l00546">546</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="LLToken_8h_source.html#l00161">llvm::lltok::APFloat</a>, <a class="el" href="APFloat_8cpp_source.html#l01868">llvm::APFloat::convert()</a>, <a class="el" href="APFloat_8cpp_source.html#l02960">llvm::APFloat::convertToDouble()</a>, <a class="el" href="APFloat_8cpp_source.html#l02951">llvm::APFloat::convertToFloat()</a>, <a class="el" href="MCStreamer_8cpp_source.html#l00571">llvm::MCStreamer::EmitRawText()</a>, <a class="el" href="MachineOperand_8h_source.html#l00404">llvm::MachineOperand::getCImm()</a>, <a class="el" href="MCAsmInfo_8h_source.html#l00423">llvm::MCAsmInfo::getCommentString()</a>, <a class="el" href="DebugInfo_8h_source.html#l00627">llvm::DIVariable::getContext()</a>, <a class="el" href="MachineOperand_8h_source.html#l00409">llvm::MachineOperand::getFPImm()</a>, <a class="el" href="MachineOperand_8h_source.html#l00399">llvm::MachineOperand::getImm()</a>, <a class="el" href="MachineOperand_8h_source.html#l00476">llvm::MachineOp
 erand::getMetadata()</a>, <a class="el" href="MCRegisterInfo_8h_source.html#l00326">llvm::MCRegisterInfo::getName()</a>, <a class="el" href="DebugInfo_8h_source.html#l00628">llvm::DIVariable::getName()</a>, <a class="el" href="MachineInstr_8h_source.html#l00247">llvm::MachineInstr::getNumOperands()</a>, <a class="el" href="MachineInstr_8h_source.html#l00249">llvm::MachineInstr::getOperand()</a>, <a class="el" href="MachineOperand_8h_source.html#l00257">llvm::MachineOperand::getReg()</a>, <a class="el" href="Target_2TargetMachine_8h_source.html#l00131">llvm::TargetMachine::getRegisterInfo()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="Constants_8h_source.html#l00104">llvm::ConstantInt::getValue()</a>, <a class="el" href="Constants_8h_source.html#l00264">llvm::ConstantFP::getValueAPF()</a>, <a class="el" href="APFloat_8h_source.html#l00131">llvm::APFloat::IEEEdouble</a>, <a class="el" href="MachineOperand_8h_source.html#
 l00226">llvm::MachineOperand::isCImm()</a>, <a class="el" href="Type_8h_source.html#l00145">llvm::Type::isDoubleTy()</a>, <a class="el" href="Type_8h_source.html#l00142">llvm::Type::isFloatTy()</a>, <a class="el" href="MachineOperand_8h_source.html#l00228">llvm::MachineOperand::isFPImm()</a>, <a class="el" href="MachineOperand_8h_source.html#l00224">llvm::MachineOperand::isImm()</a>, <a class="el" href="MachineOperand_8h_source.html#l00222">llvm::MachineOperand::isReg()</a>, <a class="el" href="DebugInfo_8cpp_source.html#l00215">llvm::DIDescriptor::isSubprogram()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00064">llvm::AsmPrinter::MAI</a>, <a class="el" href="AsmPrinter_8h_source.html#l00075">llvm::AsmPrinter::OutStreamer</a>, <a class="el" href="APInt_8cpp_source.html#l02221">llvm::APInt::print()</a>, <a class="el" href="APFloat_8h_source.html#l00151">llvm::APFloat::rmNearestTiesToEven</a>, <a class="el" href="raw__ostream_8cpp_source.html#l00760">llvm::raw_svector_
 ostream::str()</a>, and <a class="el" href="AsmPrinter_8h_source.html#l00060">llvm::AsmPrinter::TM</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l00646">llvm::AsmPrinter::EmitFunctionBody()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a96bcb4098973a489e013a64db717755c"></a><!-- doxytag: member="AsmPrinter.cpp::emitGlobalConstantArray" ref="a96bcb4098973a489e013a64db717755c" args="(const ConstantArray *CA, unsigned AddrSpace, AsmPrinter &AP)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void emitGlobalConstantArray </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1ConstantArray.html">ConstantArray</a> * </td>
+          <td class="paramname"><em>CA</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>AddrSpace</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> & </td>
+          <td class="paramname"><em>AP</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="AsmPrinter_8cpp_source.html#l01689">1689</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="MCStreamer_8cpp_source.html#l00139">llvm::MCStreamer::EmitFill()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01847">emitGlobalConstantImpl()</a>, <a class="el" href="Target_2TargetMachine_8h_source.html#l00110">llvm::TargetMachine::getDataLayout()</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#l00356">llvm::ConstantArray::getType()</a>, <a class="el" href="DataLayout_8h_source.html#l00308">llvm::DataLayout::getTypeAllocSize()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01568">isRepeatedByteSequence()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00075">llvm::AsmPrinter::OutStreamer</a>, and <a class="el" href="AsmPrinter_8h_source.html#l00060">llvm::AsmPrinter::TM</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l01847">emitGlobalConstantImpl()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1f45cdc25a8a80bdb7fc4f53c16eab69"></a><!-- doxytag: member="AsmPrinter.cpp::emitGlobalConstantDataSequential" ref="a1f45cdc25a8a80bdb7fc4f53c16eab69" args="(const ConstantDataSequential *CDS, unsigned AddrSpace, AsmPrinter &AP)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void emitGlobalConstantDataSequential </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1ConstantDataSequential.html">ConstantDataSequential</a> * </td>
+          <td class="paramname"><em>CDS</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>AddrSpace</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> & </td>
+          <td class="paramname"><em>AP</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="AsmPrinter_8cpp_source.html#l01624">1624</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="classllvm_1_1MCStreamer.html#a53548b7afec1f8a005bd51256127fd3b">llvm::MCStreamer::EmitBytes()</a>, <a class="el" href="MCStreamer_8cpp_source.html#l00139">llvm::MCStreamer::EmitFill()</a>, <a class="el" href="MCStreamer_8cpp_source.html#l00078">llvm::MCStreamer::EmitIntValue()</a>, <a class="el" href="MCStreamer_8h_source.html#l00416">llvm::MCStreamer::EmitZeros()</a>, <a class="el" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F()</a>, <a class="el" href="Format_8h_source.html#l00180">llvm::format()</a>, <a class="el" href="Constants_8h_source.html#l00608">llvm::ConstantDataSequential::getAsString()</a>, <a class="el" href="MCStreamer_8cpp_source.html#l00059">llvm::MCStreamer::GetCommentOS()</a>, <a class="el" href="Target_2TargetMachine_8h_source.html#l00110">llvm::TargetMachine::getDataLayout()</a>, <a class="el" href="Constants_8cpp_source.html#l02413">llvm::ConstantDataSequential::getElementAsDouble()</a>, <a class="el" hr
 ef="Constants_8cpp_source.html#l02404">llvm::ConstantDataSequential::getElementAsFloat()</a>, <a class="el" href="Constants_8cpp_source.html#l02363">llvm::ConstantDataSequential::getElementAsInteger()</a>, <a class="el" href="Constants_8cpp_source.html#l02145">llvm::ConstantDataSequential::getElementByteSize()</a>, <a class="el" href="DerivedTypes_8h_source.html#l00319">llvm::SequentialType::getElementType()</a>, <a class="el" href="Constants_8cpp_source.html#l02109">llvm::ConstantDataSequential::getElementType()</a>, <a class="el" href="Constants_8cpp_source.html#l02137">llvm::ConstantDataSequential::getNumElements()</a>, <a class="el" href="Constants_8h_source.html#l00582">llvm::ConstantDataSequential::getType()</a>, <a class="el" href="DataLayout_8h_source.html#l00308">llvm::DataLayout::getTypeAllocSize()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="Type_8h_source.html#l00145">llvm::Type::isDoubleTy()</a>, <a class
 ="el" href="Type_8h_source.html#l00142">llvm::Type::isFloatTy()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01568">isRepeatedByteSequence()</a>, <a class="el" href="Constants_8cpp_source.html#l02432">llvm::ConstantDataSequential::isString()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00125">llvm::AsmPrinter::isVerbose()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00075">llvm::AsmPrinter::OutStreamer</a>, and <a class="el" href="AsmPrinter_8h_source.html#l00060">llvm::AsmPrinter::TM</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l01847">emitGlobalConstantImpl()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9fbf87582834c668a6c006cd0cfa9b2a"></a><!-- doxytag: member="AsmPrinter.cpp::emitGlobalConstantFP" ref="a9fbf87582834c668a6c006cd0cfa9b2a" args="(const ConstantFP *CFP, unsigned AddrSpace, AsmPrinter &AP)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void emitGlobalConstantFP </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1ConstantFP.html">ConstantFP</a> * </td>
+          <td class="paramname"><em>CFP</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>AddrSpace</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> & </td>
+          <td class="paramname"><em>AP</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="AsmPrinter_8cpp_source.html#l01746">1746</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="APFloat_8cpp_source.html#l02928">llvm::APFloat::bitcastToAPInt()</a>, <a class="el" href="APFloat_8cpp_source.html#l01868">llvm::APFloat::convert()</a>, <a class="el" href="APFloat_8cpp_source.html#l02960">llvm::APFloat::convertToDouble()</a>, <a class="el" href="APFloat_8cpp_source.html#l02951">llvm::APFloat::convertToFloat()</a>, <a class="el" href="MCStreamer_8cpp_source.html#l00078">llvm::MCStreamer::EmitIntValue()</a>, <a class="el" href="MCStreamer_8h_source.html#l00416">llvm::MCStreamer::EmitZeros()</a>, <a class="el" href="Format_8h_source.html#l00180">llvm::format()</a>, <a class="el" href="MCStreamer_8cpp_source.html#l00059">llvm::MCStreamer::GetCommentOS()</a>, <a class="el" href="Target_2TargetMachine_8h_source.html#l00110">llvm::TargetMachine::getDataLayout()</a>, <a class="el" href="APInt_8h_source.html#l00526">llvm::APInt::getRawData()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="
 el" href="DataLayout_8h_source.html#l00308">llvm::DataLayout::getTypeAllocSize()</a>, <a class="el" href="DataLayout_8h_source.html#l00293">llvm::DataLayout::getTypeStoreSize()</a>, <a class="el" href="Constants_8h_source.html#l00264">llvm::ConstantFP::getValueAPF()</a>, <a class="el" href="APInt_8h_source.html#l01214">llvm::APInt::getZExtValue()</a>, <a class="el" href="APFloat_8h_source.html#l00131">llvm::APFloat::IEEEdouble</a>, <a class="el" href="TGLexer_8h_source.html#l00053">llvm::tgtok::IntVal</a>, <a class="el" href="DataLayout_8h_source.html#l00192">llvm::DataLayout::isBigEndian()</a>, <a class="el" href="Type_8h_source.html#l00145">llvm::Type::isDoubleTy()</a>, <a class="el" href="Type_8h_source.html#l00142">llvm::Type::isFloatTy()</a>, <a class="el" href="Type_8h_source.html#l00139">llvm::Type::isHalfTy()</a>, <a class="el" href="Type_8h_source.html#l00154">llvm::Type::isPPC_FP128Ty()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00125">llvm::AsmPrinter::is
 Verbose()</a>, <a class="el" href="Type_8h_source.html#l00148">llvm::Type::isX86_FP80Ty()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00075">llvm::AsmPrinter::OutStreamer</a>, <a class="el" href="APFloat_8h_source.html#l00151">llvm::APFloat::rmNearestTiesToEven</a>, <a class="el" href="AsmPrinter_8h_source.html#l00060">llvm::AsmPrinter::TM</a>, and <a class="el" href="APFloat_8cpp_source.html#l03355">llvm::APFloat::toString()</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l01847">emitGlobalConstantImpl()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8b0b04b9e20337d0d97103285cfacf11"></a><!-- doxytag: member="AsmPrinter.cpp::emitGlobalConstantImpl" ref="a8b0b04b9e20337d0d97103285cfacf11" args="(const Constant *C, unsigned AddrSpace, AsmPrinter &AP)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void emitGlobalConstantImpl </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Constant.html">Constant</a> * </td>
+          <td class="paramname"><em>C</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>AddrSpace</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> & </td>
+          <td class="paramname"><em>AP</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="AsmPrinter_8cpp_source.html#l01847">1847</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="ConstantFolding_8cpp_source.html#l00871">llvm::ConstantFoldConstantExpression()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01689">emitGlobalConstantArray()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01624">emitGlobalConstantDataSequential()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01746">emitGlobalConstantFP()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01831">emitGlobalConstantLargeInt()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01718">emitGlobalConstantStruct()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01705">emitGlobalConstantVector()</a>, <a class="el" href="MCStreamer_8cpp_source.html#l00078">llvm::MCStreamer::EmitIntValue()</a>, <a class="el" href="MCStreamer_8cpp_source.html#l00118">llvm::MCStreamer::EmitValue()</a>, <a class="el" href="MCStreamer_8h_source.html#l00416">llvm::MCStreamer::EmitZeros()</a>, <a class="el" href="Format_8h_source.html#l00180">llvm::format(
 )</a>, <a class="el" href="MCStreamer_8cpp_source.html#l00059">llvm::MCStreamer::GetCommentOS()</a>, <a class="el" href="Target_2TargetMachine_8h_source.html#l00110">llvm::TargetMachine::getDataLayout()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="DataLayout_8h_source.html#l00308">llvm::DataLayout::getTypeAllocSize()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00125">llvm::AsmPrinter::isVerbose()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01433">lowerConstant()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00075">llvm::AsmPrinter::OutStreamer</a>, and <a class="el" href="AsmPrinter_8h_source.html#l00060">llvm::AsmPrinter::TM</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l01913">llvm::AsmPrinter::EmitGlobalConstant()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01689">emitGlobalConstantArray()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01718">emitGlobalConstantStruct()</a>, and <a class="el" href="AsmPrinter_8cpp_source.html#l01705">emitGlobalConstantVector()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3760fb0949d9f5cbd8f8fb8bda2dbbc7"></a><!-- doxytag: member="AsmPrinter.cpp::emitGlobalConstantLargeInt" ref="a3760fb0949d9f5cbd8f8fb8bda2dbbc7" args="(const ConstantInt *CI, unsigned AddrSpace, AsmPrinter &AP)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void emitGlobalConstantLargeInt </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a> * </td>
+          <td class="paramname"><em>CI</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>AddrSpace</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> & </td>
+          <td class="paramname"><em>AP</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="AsmPrinter_8cpp_source.html#l01831">1831</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="MCStreamer_8cpp_source.html#l00078">llvm::MCStreamer::EmitIntValue()</a>, <a class="el" href="Constants_8h_source.html#l00109">llvm::ConstantInt::getBitWidth()</a>, <a class="el" href="Target_2TargetMachine_8h_source.html#l00110">llvm::TargetMachine::getDataLayout()</a>, <a class="el" href="APInt_8h_source.html#l00526">llvm::APInt::getRawData()</a>, <a class="el" href="Constants_8h_source.html#l00104">llvm::ConstantInt::getValue()</a>, <a class="el" href="DataLayout_8h_source.html#l00192">llvm::DataLayout::isBigEndian()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00075">llvm::AsmPrinter::OutStreamer</a>, and <a class="el" href="AsmPrinter_8h_source.html#l00060">llvm::AsmPrinter::TM</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l01847">emitGlobalConstantImpl()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3271cb54d5b09fc9c97820b0a4ac44fe"></a><!-- doxytag: member="AsmPrinter.cpp::emitGlobalConstantStruct" ref="a3271cb54d5b09fc9c97820b0a4ac44fe" args="(const ConstantStruct *CS, unsigned AddrSpace, AsmPrinter &AP)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void emitGlobalConstantStruct </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1ConstantStruct.html">ConstantStruct</a> * </td>
+          <td class="paramname"><em>CS</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>AddrSpace</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> & </td>
+          <td class="paramname"><em>AP</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="AsmPrinter_8cpp_source.html#l01718">1718</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="AsmPrinter_8cpp_source.html#l01847">emitGlobalConstantImpl()</a>, <a class="el" href="MCStreamer_8h_source.html#l00416">llvm::MCStreamer::EmitZeros()</a>, <a class="el" href="TGLexer_8h_source.html#l00045">llvm::tgtok::Field</a>, <a class="el" href="Target_2TargetMachine_8h_source.html#l00110">llvm::TargetMachine::getDataLayout()</a>, <a class="el" href="DataLayout_8h_source.html#l00413">llvm::StructLayout::getElementOffset()</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="DataLayout_8h_source.html#l00396">llvm::StructLayout::getSizeInBytes()</a>, <a class="el" href="DataLayout_8cpp_source.html#l00462">llvm::DataLayout::getStructLayout()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="Constants_8h_source.html#l00414">llvm::ConstantStruct::getType()</a>, 
 <a class="el" href="DataLayout_8h_source.html#l00308">llvm::DataLayout::getTypeAllocSize()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00075">llvm::AsmPrinter::OutStreamer</a>, and <a class="el" href="AsmPrinter_8h_source.html#l00060">llvm::AsmPrinter::TM</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l01847">emitGlobalConstantImpl()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac436e227d899b13b511592e05f54224a"></a><!-- doxytag: member="AsmPrinter.cpp::emitGlobalConstantVector" ref="ac436e227d899b13b511592e05f54224a" args="(const ConstantVector *CV, unsigned AddrSpace, AsmPrinter &AP)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void emitGlobalConstantVector </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1ConstantVector.html">ConstantVector</a> * </td>
+          <td class="paramname"><em>CV</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>AddrSpace</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> & </td>
+          <td class="paramname"><em>AP</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="AsmPrinter_8cpp_source.html#l01705">1705</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="AsmPrinter_8cpp_source.html#l01847">emitGlobalConstantImpl()</a>, <a class="el" href="MCStreamer_8h_source.html#l00416">llvm::MCStreamer::EmitZeros()</a>, <a class="el" href="Target_2TargetMachine_8h_source.html#l00110">llvm::TargetMachine::getDataLayout()</a>, <a class="el" href="DerivedTypes_8h_source.html#l00319">llvm::SequentialType::getElementType()</a>, <a class="el" href="DerivedTypes_8h_source.html#l00408">llvm::VectorType::getNumElements()</a>, <a class="el" href="User_8h_source.html#l00088">llvm::User::getOperand()</a>, <a class="el" href="Constants_8h_source.html#l00457">llvm::ConstantVector::getType()</a>, <a class="el" href="DataLayout_8h_source.html#l00308">llvm::DataLayout::getTypeAllocSize()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00075">llvm::AsmPrinter::OutStreamer</a>, and <a class="el" href="AsmPrinter_8h_source.html#l00060">llvm::AsmPrinter::TM</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l01847">emitGlobalConstantImpl()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a69ab60df8e545bb5f168170638c740c8"></a><!-- doxytag: member="AsmPrinter.cpp::emitImplicitDef" ref="a69ab60df8e545bb5f168170638c740c8" args="(const MachineInstr *MI, AsmPrinter &AP)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void emitImplicitDef </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MachineInstr.html">MachineInstr</a> * </td>
+          <td class="paramname"><em>MI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> & </td>
+          <td class="paramname"><em>AP</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>emitImplicitDef - This method emits the specified machine instruction that is an implicit def. </p>
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l00523">523</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="MCStreamer_8h_source.html#l00140">llvm::MCStreamer::AddBlankLine()</a>, <a class="el" href="MCStreamer_8h_source.html#l00132">llvm::MCStreamer::AddComment()</a>, <a class="el" href="MCRegisterInfo_8h_source.html#l00326">llvm::MCRegisterInfo::getName()</a>, <a class="el" href="MachineInstr_8h_source.html#l00249">llvm::MachineInstr::getOperand()</a>, <a class="el" href="MachineOperand_8h_source.html#l00257">llvm::MachineOperand::getReg()</a>, <a class="el" href="Target_2TargetMachine_8h_source.html#l00131">llvm::TargetMachine::getRegisterInfo()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00075">llvm::AsmPrinter::OutStreamer</a>, and <a class="el" href="AsmPrinter_8h_source.html#l00060">llvm::AsmPrinter::TM</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l00646">llvm::AsmPrinter::EmitFunctionBody()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa0d00a1b6833bc76147cf38dd23ecf97"></a><!-- doxytag: member="AsmPrinter.cpp::emitKill" ref="aa0d00a1b6833bc76147cf38dd23ecf97" args="(const MachineInstr *MI, AsmPrinter &AP)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void emitKill </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MachineInstr.html">MachineInstr</a> * </td>
+          <td class="paramname"><em>MI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> & </td>
+          <td class="paramname"><em>AP</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="AsmPrinter_8cpp_source.html#l00530">530</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="MCStreamer_8h_source.html#l00140">llvm::MCStreamer::AddBlankLine()</a>, <a class="el" href="MCStreamer_8h_source.html#l00132">llvm::MCStreamer::AddComment()</a>, <a class="el" href="MCRegisterInfo_8h_source.html#l00326">llvm::MCRegisterInfo::getName()</a>, <a class="el" href="MachineInstr_8h_source.html#l00247">llvm::MachineInstr::getNumOperands()</a>, <a class="el" href="MachineInstr_8h_source.html#l00249">llvm::MachineInstr::getOperand()</a>, <a class="el" href="MachineOperand_8h_source.html#l00257">llvm::MachineOperand::getReg()</a>, <a class="el" href="Target_2TargetMachine_8h_source.html#l00131">llvm::TargetMachine::getRegisterInfo()</a>, <a class="el" href="MachineOperand_8h_source.html#l00272">llvm::MachineOperand::isDef()</a>, <a class="el" href="MachineOperand_8h_source.html#l00222">llvm::MachineOperand::isReg()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00075">llvm::AsmPrinter::OutStreamer</a>, and <a class="el" href="AsmP
 rinter_8h_source.html#l00060">llvm::AsmPrinter::TM</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l00646">llvm::AsmPrinter::EmitFunctionBody()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaf077eb783af067b882ad1b06cbf6845"></a><!-- doxytag: member="AsmPrinter.cpp::getGCMap" ref="aaf077eb783af067b882ad1b06cbf6845" args="(void *&P)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="AsmPrinter_8cpp.html#aad452a994d36a20bd719b346a5e54657">gcp_map_type</a>& getGCMap </td>
+          <td>(</td>
+          <td class="paramtype">void *& </td>
+          <td class="paramname"><em>P</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l00060">60</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l00108">llvm::AsmPrinter::~AsmPrinter()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0102f8afc12377980aadfc8f1e77f94f"></a><!-- doxytag: member="AsmPrinter.cpp::getGVAlignmentLog2" ref="a0102f8afc12377980aadfc8f1e77f94f" args="(const GlobalValue *GV, const DataLayout &TD, unsigned InBits=0)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classunsigned.html">unsigned</a> getGVAlignmentLog2 </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1GlobalValue.html">GlobalValue</a> * </td>
+          <td class="paramname"><em>GV</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> & </td>
+          <td class="paramname"><em>TD</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>InBits</em> = <code>0</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>getGVAlignmentLog2 - Return the alignment to use for the specified global value in log2 form. This rounds up to the preferred alignment if possible and legal. </p>
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l00070">70</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="GlobalValue_8h_source.html#l00079">llvm::GlobalValue::getAlignment()</a>, <a class="el" href="DataLayout_8cpp_source.html#l00747">llvm::DataLayout::getPreferredAlignmentLog()</a>, <a class="el" href="GlobalValue_8h_source.html#l00095">llvm::GlobalValue::hasSection()</a>, and <a class="el" href="MathExtras_8h_source.html#l00325">llvm::Log2_32()</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l01416">llvm::AsmPrinter::EmitAlignment()</a>, and <a class="el" href="AsmPrinter_8cpp_source.html#l00259">llvm::AsmPrinter::EmitGlobalVariable()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6265f694484b32f6b1b0bc8872d5046e"></a><!-- doxytag: member="AsmPrinter.cpp::isRepeatedByteSequence" ref="a6265f694484b32f6b1b0bc8872d5046e" args="(const ConstantDataSequential *V)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static int isRepeatedByteSequence </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1ConstantDataSequential.html">ConstantDataSequential</a> * </td>
+          <td class="paramname"><em>V</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>isRepeatedByteSequence - Determine whether the given value is composed of a repeated sequence of identical bytes and return the byte value. If it is not a repeated sequence, return -1. </p>
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l01568">1568</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="CallingConv_8h_source.html#l00031">llvm::CallingConv::C</a>, <a class="el" href="MachOFormat_8h_source.html#l00297">llvm::object::macho::Data</a>, <a class="el" href="StringRef_8h_source.html#l00111">llvm::StringRef::empty()</a>, <a class="el" href="Constants_8cpp_source.html#l02113">llvm::ConstantDataSequential::getRawDataValues()</a>, and <a class="el" href="StringRef_8h_source.html#l00114">llvm::StringRef::size()</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l01689">emitGlobalConstantArray()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01624">emitGlobalConstantDataSequential()</a>, and <a class="el" href="AsmPrinter_8cpp_source.html#l01581">isRepeatedByteSequence()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af87079afb6e1968191a0997358a25e79"></a><!-- doxytag: member="AsmPrinter.cpp::isRepeatedByteSequence" ref="af87079afb6e1968191a0997358a25e79" args="(const Value *V, TargetMachine &TM)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static int isRepeatedByteSequence </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1TargetMachine.html">TargetMachine</a> & </td>
+          <td class="paramname"><em>TM</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>isRepeatedByteSequence - Determine whether the given value is composed of a repeated sequence of identical bytes and return the byte value. If it is not a repeated sequence, return -1. </p>
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l01581">1581</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="Target_2TargetMachine_8h_source.html#l00110">llvm::TargetMachine::getDataLayout()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="DataLayout_8h_source.html#l00308">llvm::DataLayout::getTypeAllocSize()</a>, <a class="el" href="MathExtras_8h_source.html#l00134">llvm::isPowerOf2_64()</a>, and <a class="el" href="AsmPrinter_8cpp_source.html#l01568">isRepeatedByteSequence()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a94a7b150c8f7db1546562dc81b45710f"></a><!-- doxytag: member="AsmPrinter.cpp::lowerConstant" ref="a94a7b150c8f7db1546562dc81b45710f" args="(const Constant *CV, AsmPrinter &AP)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static const <a class="el" href="classllvm_1_1MCExpr.html">MCExpr</a>* lowerConstant </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Constant.html">Constant</a> * </td>
+          <td class="paramname"><em>CV</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> & </td>
+          <td class="paramname"><em>AP</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>lowerConstant - Lower the specified LLVM Constant to an MCExpr. </p>
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l01433">1433</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="APInt_8h_source.html#l01759">llvm::APIntOps::And()</a>, <a class="el" href="CallingConv_8h_source.html#l00031">llvm::CallingConv::C</a>, <a class="el" href="ConstantFolding_8cpp_source.html#l00871">llvm::ConstantFoldConstantExpression()</a>, <a class="el" href="MCExpr_8cpp_source.html#l00159">llvm::MCConstantExpr::Create()</a>, <a class="el" href="MCExpr_8h_source.html#l00223">llvm::MCSymbolRefExpr::Create()</a>, <a class="el" href="MCExpr_8h_source.html#l00349">llvm::MCBinaryExpr::CreateAdd()</a>, <a class="el" href="MCExpr_8h_source.html#l00353">llvm::MCBinaryExpr::CreateAnd()</a>, <a class="el" href="MCExpr_8h_source.html#l00357">llvm::MCBinaryExpr::CreateDiv()</a>, <a class="el" href="MCExpr_8h_source.html#l00389">llvm::MCBinaryExpr::CreateMod()</a>, <a class="el" href="MCExpr_8h_source.html#l00393">llvm::MCBinaryExpr::CreateMul()</a>, <a class="el" href="MCExpr_8h_source.html#l00401">llvm::MCBinaryExpr::CreateOr()</a>, <a class="el" hre
 f="MCExpr_8h_source.html#l00405">llvm::MCBinaryExpr::CreateShl()</a>, <a class="el" href="MCExpr_8h_source.html#l00413">llvm::MCBinaryExpr::CreateSub()</a>, <a class="el" href="MCExpr_8h_source.html#l00417">llvm::MCBinaryExpr::CreateXor()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l01955">llvm::AsmPrinter::GetBlockAddressSymbol()</a>, <a class="el" href="Value_8cpp_source.html#l00468">llvm::Value::getContext()</a>, <a class="el" href="Target_2TargetMachine_8h_source.html#l00110">llvm::TargetMachine::getDataLayout()</a>, <a class="el" href="MachineFunction_8h_source.html#l00144">llvm::MachineFunction::getFunction()</a>, <a class="el" href="DataLayout_8cpp_source.html#l00683">llvm::DataLayout::getIndexedOffset()</a>, <a class="el" href="Constants_8cpp_source.html#l01440">llvm::ConstantExpr::getIntegerCast()</a>, <a class="el" href="DataLayout_8cpp_source.html#l00665">llvm::DataLayout::getIntPtrT
 ype()</a>, <a class="el" href="Constants_8h_source.html#l01049">llvm::ConstantExpr::getOpcode()</a>, <a class="el" href="User_8h_source.html#l00088">llvm::User::getOperand()</a>, <a class="el" href="GlobalValue_8h_source.html#l00286">llvm::GlobalValue::getParent()</a>, <a class="el" href="DataLayout_8h_source.html#l00266">llvm::DataLayout::getPointerSizeInBits()</a>, <a class="el" href="Mangler_8cpp_source.html#l00231">llvm::Mangler::getSymbol()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="DataLayout_8h_source.html#l00308">llvm::DataLayout::getTypeAllocSize()</a>, <a class="el" href="DataLayout_8h_source.html#l00317">llvm::DataLayout::getTypeAllocSizeInBits()</a>, <a class="el" href="InstVisitor_8h_source.html#l00156">llvm::IntToPtr</a>, <a class="el" href="Constants_8cpp_source.html#l00054">llvm::Constant::isNullValue()</a>, <a class="el" href="ErrorHandling_8h_source.html#l00098">llvm_unreachable</a>, <a class="el" h
 ref="AsmPrinter_8h_source.html#l00085">llvm::AsmPrinter::Mang</a>, <a class="el" href="AsmPrinter_8h_source.html#l00078">llvm::AsmPrinter::MF</a>, <a class="el" href="User_8h_source.html#l00116">llvm::User::op_begin()</a>, <a class="el" href="User_8h_source.html#l00118">llvm::User::op_end()</a>, <a class="el" href="APInt_8h_source.html#l01765">llvm::APIntOps::Or()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00069">llvm::AsmPrinter::OutContext</a>, <a class="el" href="ErrorHandling_8cpp_source.html#l00052">llvm::report_fatal_error()</a>, <a class="el" href="MathExtras_8h_source.html#l00475">llvm::SignExtend64()</a>, <a class="el" href="raw__ostream_8h_source.html#l00457">llvm::raw_string_ostream::str()</a>, <a class="el" href="AsmPrinter_8h_source.html#l00060">llvm::AsmPrinter::TM</a>, <a class="el" href="InstVisitor_8h_source.html#l00146">llvm::Trunc</a>, <a class="el" href="AsmWriter_8cpp_source.html#l01135">llvm::WriteAsOperand()</a>, and <a class="el" href="APInt_
 8h_source.html#l01771">llvm::APIntOps::Xor()</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l01847">emitGlobalConstantImpl()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8e071196c041b94cb39ea3ff6a5aa654"></a><!-- doxytag: member="AsmPrinter.cpp::PrintChildLoopComment" ref="a8e071196c041b94cb39ea3ff6a5aa654" args="(raw_ostream &OS, const MachineLoop *Loop, unsigned FunctionNumber)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void PrintChildLoopComment </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1raw__ostream.html">raw_ostream</a> & </td>
+          <td class="paramname"><em>OS</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MachineLoop.html">MachineLoop</a> * </td>
+          <td class="paramname"><em>Loop</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>FunctionNumber</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>PrintChildLoopComment - Print comments about child loops within the loop for this basic block, with nesting. </p>
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l02019">2019</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="LoopInfo_8h_source.html#l00131">llvm::LoopBase< BlockT, LoopT >::begin()</a>, <a class="el" href="LoopInfo_8h_source.html#l00132">llvm::LoopBase< BlockT, LoopT >::end()</a>, and <a class="el" href="raw__ostream_8cpp_source.html#l00385">llvm::raw_ostream::indent()</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l02032">emitBasicBlockLoopComments()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9e656ca6880429c47f777ef0d06ac030"></a><!-- doxytag: member="AsmPrinter.cpp::PrintParentLoopComment" ref="a9e656ca6880429c47f777ef0d06ac030" args="(raw_ostream &OS, const MachineLoop *Loop, unsigned FunctionNumber)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void PrintParentLoopComment </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1raw__ostream.html">raw_ostream</a> & </td>
+          <td class="paramname"><em>OS</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MachineLoop.html">MachineLoop</a> * </td>
+          <td class="paramname"><em>Loop</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>FunctionNumber</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>PrintParentLoopComment - Print comments about parent loops of this one. </p>
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l02006">2006</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="LLParser_8cpp_source.html#l01719">FunctionNumber()</a>, <a class="el" href="LoopInfo_8h_source.html#l00096">llvm::LoopBase< BlockT, LoopT >::getHeader()</a>, <a class="el" href="LoopInfo_8h_source.html#l00089">llvm::LoopBase< BlockT, LoopT >::getLoopDepth()</a>, <a class="el" href="MachineBasicBlock_8h_source.html#l00580">llvm::MachineBasicBlock::getNumber()</a>, <a class="el" href="LoopInfo_8h_source.html#l00097">llvm::LoopBase< BlockT, LoopT >::getParentLoop()</a>, and <a class="el" href="raw__ostream_8cpp_source.html#l00385">llvm::raw_ostream::indent()</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l02032">emitBasicBlockLoopComments()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a76457a770a420a47f99494962855ea1f"></a><!-- doxytag: member="AsmPrinter.cpp::priority_order" ref="a76457a770a420a47f99494962855ea1f" args="(const Structor &lhs, const Structor &rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> priority_order </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="AsmPrinter_8cpp.html#aa72c548afdc114a13ef9c191c2870761">Structor</a> & </td>
+          <td class="paramname"><em>lhs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="AsmPrinter_8cpp.html#aa72c548afdc114a13ef9c191c2870761">Structor</a> & </td>
+          <td class="paramname"><em>rhs</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="AsmPrinter_8cpp_source.html#l01268">1268</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaabcf60d3682e28e74a3843f55e9e304"></a><!-- doxytag: member="AsmPrinter.cpp::STATISTIC" ref="aaabcf60d3682e28e74a3843f55e9e304" args="(EmittedInsts,"Number of machine instrs printed")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">EmittedInsts </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of machine instrs printed" </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="aaf3544b39d5e2148f058e4481e0b7266"></a><!-- doxytag: member="AsmPrinter.cpp::DbgTimerName" ref="aaf3544b39d5e2148f058e4481e0b7266" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="classchar.html">char</a>* <a class="el" href="AsmPrinter_8cpp.html#aaf3544b39d5e2148f058e4481e0b7266">DbgTimerName</a> = "DWARF <a class="el" href="NVPTXMCAsmInfo_8cpp.html#a89f8ea6224778c95b7b429aeb9c0cedd">Debug</a> Writer"<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l00052">52</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l00840">llvm::AsmPrinter::doFinalization()</a>, <a class="el" href="DwarfDebug_8cpp_source.html#l00146">llvm::DwarfDebug::DwarfDebug()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l00646">llvm::AsmPrinter::EmitFunctionBody()</a>, and <a class="el" href="AsmPrinter_8cpp_source.html#l00416">llvm::AsmPrinter::EmitFunctionHeader()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8e4bcdab567a4cda65858b8b7c9ee122"></a><!-- doxytag: member="AsmPrinter.cpp::DWARFGroupName" ref="a8e4bcdab567a4cda65858b8b7c9ee122" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="classchar.html">char</a>* <a class="el" href="AsmPrinter_8cpp.html#a8e4bcdab567a4cda65858b8b7c9ee122">DWARFGroupName</a> = "DWARF Emission"<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l00051">51</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l00840">llvm::AsmPrinter::doFinalization()</a>, <a class="el" href="DwarfDebug_8cpp_source.html#l00146">llvm::DwarfDebug::DwarfDebug()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l00646">llvm::AsmPrinter::EmitFunctionBody()</a>, and <a class="el" href="AsmPrinter_8cpp_source.html#l00416">llvm::AsmPrinter::EmitFunctionHeader()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a33b09bce7c68b41e8b3807afa3a29af5"></a><!-- doxytag: member="AsmPrinter.cpp::EHTimerName" ref="a33b09bce7c68b41e8b3807afa3a29af5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="classchar.html">char</a>* <a class="el" href="AsmPrinter_8cpp.html#a33b09bce7c68b41e8b3807afa3a29af5">EHTimerName</a> = "DWARF Exception Writer"<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="AsmPrinter_8cpp_source.html#l00053">53</a> of file <a class="el" href="AsmPrinter_8cpp_source.html">AsmPrinter.cpp</a>.</p>
+
+<p>Referenced by <a class="el" href="AsmPrinter_8cpp_source.html#l00840">llvm::AsmPrinter::doFinalization()</a>, <a class="el" href="AsmPrinter_8cpp_source.html#l00646">llvm::AsmPrinter::EmitFunctionBody()</a>, and <a class="el" href="AsmPrinter_8cpp_source.html#l00416">llvm::AsmPrinter::EmitFunctionHeader()</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:27 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/AsmPrinter_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/AsmPrinter_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/AsmPrinter_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/AsmPrinter_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,113 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="AsmPrinter.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="black",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="llvm/PassRegistry.h",height=0.2,width=0.4,color="black",URL="$PassRegistry_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="black",URL="$StringRef_8h.html"];
+  Node8 -> 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 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="limits",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/InitializePasses.h",height=0.2,width=0.4,color="black",URL="$InitializePasses_8h.html"];
+  Node6 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/Support/Atomic.h",height=0.2,width=0.4,color="black",URL="$Atomic_8h.html"];
+  Node22 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/Support/Valgrind.h",height=0.2,width=0.4,color="black",URL="$Valgrind_8h.html"];
+  Node23 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/Config/llvm-config.h",height=0.2,width=0.4,color="black",URL="$llvm-config_8h.html"];
+  Node23 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="stddef.h",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/PassAnalysisSupport.h",height=0.2,width=0.4,color="black",URL="$PassAnalysisSupport_8h.html"];
+  Node27 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="black",URL="$SmallVector_8h.html"];
+  Node28 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_8h.html"];
+  Node29 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node28 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node28 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="memory",height=0.2,width=0.4,color="grey75"];
+  Node27 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/InlineAsm.h",height=0.2,width=0.4,color="black",URL="$InlineAsm_8h.html"];
+  Node33 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Value.h",height=0.2,width=0.4,color="black",URL="$Value_8h.html"];
+  Node34 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/Use.h",height=0.2,width=0.4,color="black",URL="$Use_8h.html"];
+  Node35 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/ADT/PointerIntPair.h",height=0.2,width=0.4,color="black",URL="$PointerIntPair_8h.html"];
+  Node36 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/Support/PointerLikeTypeTraits.h",height=0.2,width=0.4,color="black",URL="$PointerLikeTypeTraits_8h.html"];
+  Node37 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/Support/Casting.h",height=0.2,width=0.4,color="black",URL="$Casting_8h.html"];
+  Node38 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8h.html"];
+  Node39 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/AsmWriter_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/AsmWriter_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/AsmWriter_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/AsmWriter_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,47 @@
+<map id="G" name="G">
+<area shape="rect" href="$Writer_8h.html" title="llvm/Assembly/Writer.h" alt="" coords="5,84,168,111"/>
+<area shape="rect" href="$PrintModulePass_8h.html" title="llvm/Assembly/PrintModulePass.h" alt="" coords="2017,161,2249,188"/>
+<area shape="rect" href="$AssemblyAnnotationWriter_8h.html" title="llvm/Assembly/AssemblyAnnotationWriter.h" alt="" coords="243,84,539,111"/>
+<area shape="rect" href="$LLVMContext_8h.html" title="llvm/LLVMContext.h" alt="" coords="224,471,371,497"/>
+<area shape="rect" href="$CallingConv_8h.html" title="llvm/CallingConv.h" alt="" coords="1701,239,1837,265"/>
+<area shape="rect" href="$Constants_8h.html" title="llvm/Constants.h" alt="" coords="1339,161,1467,188"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="536,393,725,420"/>
+<area shape="rect" href="$DebugInfo_8h.html" title="llvm/DebugInfo.h" alt="" coords="2443,239,2571,265"/>
+<area shape="rect" href="$Dwarf_8h.html" title="llvm/Support/Dwarf.h" alt="" coords="2329,316,2481,343"/>
+<area shape="rect" href="$DerivedTypes_8h.html" title="llvm/DerivedTypes.h" alt="" coords="3235,239,3381,265"/>
+<area shape="rect" href="$InlineAsm_8h.html" title="llvm/InlineAsm.h" alt="" coords="2243,239,2368,265"/>
+<area shape="rect" href="$IntrinsicInst_8h.html" title="llvm/IntrinsicInst.h" alt="" coords="1512,84,1648,111"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="2013,239,2219,265"/>
+<area shape="rect" href="$Operator_8h.html" title="llvm/Operator.h" alt="" coords="2933,84,3053,111"/>
+<area shape="rect" href="$Module_8h.html" title="llvm/Module.h" alt="" coords="1059,84,1168,111"/>
+<area shape="rect" href="$TypeFinder_8h.html" title="llvm/TypeFinder.h" alt="" coords="499,161,627,188"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="551,316,711,343"/>
+<area shape="rect" href="$ValueSymbolTable_8h.html" title="llvm/ValueSymbolTable.h" alt="" coords="2595,239,2773,265"/>
+<area shape="rect" href="$SmallString_8h.html" title="llvm/ADT/SmallString.h" alt="" coords="2797,239,2965,265"/>
+<area shape="rect" href="$StringExtras_8h.html" title="llvm/ADT/StringExtras.h" alt="" coords="2989,239,3160,265"/>
+<area shape="rect" href="$STLExtras_8h.html" title="llvm/ADT/STLExtras.h" alt="" coords="3227,84,3381,111"/>
+<area shape="rect" href="$CFG_8h.html" title="llvm/Support/CFG.h" alt="" coords="1672,84,1816,111"/>
+<area shape="rect" href="$Debug_8h.html" title="llvm/Support/Debug.h" alt="" coords="3456,84,3616,111"/>
+<area shape="rect" href="$FormattedStream_8h.html" title="llvm/Support/FormattedStream.h" alt="" coords="3640,84,3872,111"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="1904,548,2077,575"/>
+<area shape="rect" href="$Constant_8h.html" title="llvm/Constant.h" alt="" coords="1405,239,1525,265"/>
+<area shape="rect" href="$OperandTraits_8h.html" title="llvm/OperandTraits.h" alt="" coords="816,239,968,265"/>
+<area shape="rect" href="$APInt_8h.html" title="llvm/ADT/APInt.h" alt="" coords="1205,316,1331,343"/>
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="1305,393,1449,420"/>
+<area shape="rect" href="$APFloat_8h.html" title="llvm/ADT/APFloat.h" alt="" coords="1139,239,1280,265"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="2441,471,2609,497"/>
+<area shape="rect" href="$SmallPtrSet_8h.html" title="llvm/ADT/SmallPtrSet.h" alt="" coords="2780,316,2948,343"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="2505,316,2655,343"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="2923,393,3107,420"/>
+<area shape="rect" href="$Type_8h.html" title="llvm/Type.h" alt="" coords="3073,316,3164,343"/>
+<area shape="rect" href="$Value_8h.html" title="llvm/Value.h" alt="" coords="2207,316,2305,343"/>
+<area shape="rect" href="$Function_8h.html" title="llvm/Function.h" alt="" coords="1651,161,1765,188"/>
+<area shape="rect" href="$Instructions_8h.html" title="llvm/Instructions.h" alt="" coords="1857,161,1993,188"/>
+<area shape="rect" href="$Intrinsics_8h.html" title="llvm/Intrinsics.h" alt="" coords="1553,316,1673,343"/>
+<area shape="rect" href="$Instruction_8h.html" title="llvm/Instruction.h" alt="" coords="3031,161,3161,188"/>
+<area shape="rect" href="$GlobalVariable_8h.html" title="llvm/GlobalVariable.h" alt="" coords="979,161,1133,188"/>
+<area shape="rect" href="$GlobalAlias_8h.html" title="llvm/GlobalAlias.h" alt="" coords="821,161,955,188"/>
+<area shape="rect" href="$Metadata_8h.html" title="llvm/Metadata.h" alt="" coords="992,239,1115,265"/>
+<area shape="rect" href="$OwningPtr_8h.html" title="llvm/ADT/OwningPtr.h" alt="" coords="848,471,1003,497"/>
+<area shape="rect" href="$DenseSet_8h.html" title="llvm/ADT/DenseSet.h" alt="" coords="485,239,640,265"/>
+</map>

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

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

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Atomic_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Atomic_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Atomic_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Atomic_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,94 @@
+<!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: Atomic.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+      <li class="navelem"><a class="el" href="dir_b423301f639fc46b24b2c9f122fcaff7.html">Support</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> |
+<a href="#typedef-members">Typedefs</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Atomic.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="DataTypes_8h_source.html">llvm/Support/DataTypes.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Atomic.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="Atomic_8h__incl.png" border="0" usemap="#Atomic_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="Atomic_8h__dep__incl.png" border="0" usemap="#Atomic_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="Atomic_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html">llvm::sys</a></td></tr>
+<tr><td colspan="2"><h2><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#a2311d06f966c58f271076e6b262fa092">llvm::sys::cas_flag</a></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#a96357e03675b273feb2112dabb891ada">llvm::sys::MemoryFence</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">cas_flag </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#a728ca13e78236719aa981c2294d3f8cb">llvm::sys::CompareAndSwap</a> (volatile cas_flag *ptr, cas_flag new_value, cas_flag old_value)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">cas_flag </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#a40e1bab8b13b891dfb830c16c58a44cb">llvm::sys::AtomicIncrement</a> (volatile cas_flag *ptr)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">cas_flag </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#ad0c3608353ae5e94389381f2060ea764">llvm::sys::AtomicDecrement</a> (volatile cas_flag *ptr)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">cas_flag </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#a1c7e8cb8c508eb3afaa0a0bb399abbbf">llvm::sys::AtomicAdd</a> (volatile cas_flag *ptr, cas_flag val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">cas_flag </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#a8a326ce25571322408105507dfb28352">llvm::sys::AtomicMul</a> (volatile cas_flag *ptr, cas_flag val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">cas_flag </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#ab94ebc9417c4236ed8c433d75f20bfb3">llvm::sys::AtomicDiv</a> (volatile cas_flag *ptr, cas_flag val)</td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:27 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/Atomic_8h__dep__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Atomic_8h__dep__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Atomic_8h__dep__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Atomic_8h__dep__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,51 @@
+<map id="G" name="G">
+<area shape="rect" href="$Statistic_8h.html" title="Statistic.h" alt="" coords="3831,84,3916,111"/>
+<area shape="rect" href="$PassSupport_8h.html" title="PassSupport.h" alt="" coords="7397,84,7509,111"/>
+<area shape="rect" href="$ManagedStatic_8h.html" title="ManagedStatic.h" alt="" coords="7584,84,7712,111"/>
+<area shape="rect" href="$ManagedStatic_8cpp.html" title="ManagedStatic.cpp" alt="" coords="7525,161,7669,188"/>
+<area shape="rect" href="$Attributes_8cpp.html" title="Attributes.cpp" alt="" coords="7693,161,7805,188"/>
+<area shape="rect" href="$Atomic_8cpp.html" title="Atomic.cpp" alt="" coords="7787,84,7880,111"/>
+<area shape="rect" href="$Threading_8cpp.html" title="Threading.cpp" alt="" coords="7904,84,8016,111"/>
+<area shape="rect" href="$DependenceAnalysis_8cpp.html" title="DependenceAnalysis.cpp" alt="" coords="5,161,187,188"/>
+<area shape="rect" href="$InlineCost_8cpp.html" title="InlineCost.cpp" alt="" coords="211,161,320,188"/>
+<area shape="rect" href="$InstCount_8cpp.html" title="InstCount.cpp" alt="" coords="344,161,453,188"/>
+<area shape="rect" href="$InstructionSimplify_8cpp.html" title="InstructionSimplify.cpp" alt="" coords="477,161,640,188"/>
+<area shape="rect" href="$CallGraphSCCPass_8cpp.html" title="CallGraphSCCPass.cpp" alt="" coords="664,161,829,188"/>
+<area shape="rect" href="$GlobalsModRef_8cpp.html" title="GlobalsModRef.cpp" alt="" coords="853,161,992,188"/>
+<area shape="rect" href="$MemoryBuiltins_8cpp.html" title="MemoryBuiltins.cpp" alt="" coords="1016,161,1163,188"/>
+<area shape="rect" href="$MemoryDependenceAnalysis_8cpp.html" title="MemoryDependenceAnalysis.cpp" alt="" coords="1187,161,1419,188"/>
+<area shape="rect" href="$ModuleDebugInfoPrinter_8cpp.html" title="ModuleDebugInfoPrinter.cpp" alt="" coords="1443,161,1643,188"/>
+<area shape="rect" href="$ProfileDataLoaderPass_8cpp.html" title="ProfileDataLoaderPass.cpp" alt="" coords="1667,161,1859,188"/>
+<area shape="rect" href="$ProfileInfoLoaderPass_8cpp.html" title="ProfileInfoLoaderPass.cpp" alt="" coords="1883,161,2067,188"/>
+<area shape="rect" href="$RegionInfo_8cpp.html" title="RegionInfo.cpp" alt="" coords="2091,161,2203,188"/>
+<area shape="rect" href="$RegionPrinter_8cpp.html" title="RegionPrinter.cpp" alt="" coords="2227,161,2357,188"/>
+<area shape="rect" href="$ScalarEvolution_8cpp.html" title="ScalarEvolution.cpp" alt="" coords="2381,161,2528,188"/>
+<area shape="rect" href="$AsmPrinter_8cpp.html" title="AsmPrinter.cpp" alt="" coords="2552,161,2669,188"/>
+<area shape="rect" href="$DwarfDebug_8cpp.html" title="DwarfDebug.cpp" alt="" coords="2693,161,2819,188"/>
+<area shape="rect" href="$BranchFolding_8cpp.html" title="BranchFolding.cpp" alt="" coords="2843,161,2981,188"/>
+<area shape="rect" href="$CodePlacementOpt_8cpp.html" title="CodePlacementOpt.cpp" alt="" coords="3005,161,3176,188"/>
+<area shape="rect" href="$DeadMachineInstructionElim_8cpp.html" title="DeadMachineInstructionElim.cpp" alt="" coords="3200,161,3429,188"/>
+<area shape="rect" href="$DwarfEHPrepare_8cpp.html" title="DwarfEHPrepare.cpp" alt="" coords="3453,161,3605,188"/>
+<area shape="rect" href="$EarlyIfConversion_8cpp.html" title="EarlyIfConversion.cpp" alt="" coords="3629,161,3787,188"/>
+<area shape="rect" href="$IfConversion_8cpp.html" title="IfConversion.cpp" alt="" coords="3811,161,3936,188"/>
+<area shape="rect" href="$InlineSpiller_8cpp.html" title="InlineSpiller.cpp" alt="" coords="3960,161,4080,188"/>
+<area shape="rect" href="$LiveDebugVariables_8cpp.html" title="LiveDebugVariables.cpp" alt="" coords="4104,161,4277,188"/>
+<area shape="rect" href="$LiveRangeEdit_8cpp.html" title="LiveRangeEdit.cpp" alt="" coords="4301,161,4437,188"/>
+<area shape="rect" href="$LiveRegMatrix_8cpp.html" title="LiveRegMatrix.cpp" alt="" coords="4461,161,4597,188"/>
+<area shape="rect" href="$LiveStackAnalysis_8cpp.html" title="LiveStackAnalysis.cpp" alt="" coords="4621,161,4781,188"/>
+<area shape="rect" href="$LocalStackSlotAllocation_8cpp.html" title="LocalStackSlotAllocation.cpp" alt="" coords="4805,161,5008,188"/>
+<area shape="rect" href="$MachineBlockPlacement_8cpp.html" title="MachineBlockPlacement.cpp" alt="" coords="5032,161,5235,188"/>
+<area shape="rect" href="$MachineCopyPropagation_8cpp.html" title="MachineCopyPropagation.cpp" alt="" coords="5259,161,5469,188"/>
+<area shape="rect" href="$MachineCSE_8cpp.html" title="MachineCSE.cpp" alt="" coords="5493,161,5621,188"/>
+<area shape="rect" href="$MachineLICM_8cpp.html" title="MachineLICM.cpp" alt="" coords="5645,161,5776,188"/>
+<area shape="rect" href="$MachineSink_8cpp.html" title="MachineSink.cpp" alt="" coords="5800,161,5928,188"/>
+<area shape="rect" href="$OptimizePHIs_8cpp.html" title="OptimizePHIs.cpp" alt="" coords="5952,161,6085,188"/>
+<area shape="rect" href="$PeepholeOptimizer_8cpp.html" title="PeepholeOptimizer.cpp" alt="" coords="6109,161,6277,188"/>
+<area shape="rect" href="$PHIElimination_8cpp.html" title="PHIElimination.cpp" alt="" coords="6301,161,6440,188"/>
+<area shape="rect" href="$PostRASchedulerList_8cpp.html" title="PostRASchedulerList.cpp" alt="" coords="6464,161,6643,188"/>
+<area shape="rect" href="$PrologEpilogInserter_8cpp.html" title="PrologEpilogInserter.cpp" alt="" coords="6667,161,6840,188"/>
+<area shape="rect" href="$RegAllocBase_8cpp.html" title="RegAllocBase.cpp" alt="" coords="6864,161,6997,188"/>
+<area shape="rect" href="$RegAllocFast_8cpp.html" title="RegAllocFast.cpp" alt="" coords="7021,161,7149,188"/>
+<area shape="rect" href="$RegAllocGreedy_8cpp.html" title="RegAllocGreedy.cpp" alt="" coords="7173,161,7317,188"/>
+<area shape="rect" href="$RegisterCoalescer_8cpp.html" title="RegisterCoalescer.cpp" alt="" coords="7341,161,7501,188"/>
+</map>

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

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

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

Added: www-releases/trunk/3.2/docs/doxygen/html/AttributesImpl_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/AttributesImpl_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/AttributesImpl_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/AttributesImpl_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,126 @@
+<!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: AttributesImpl.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_83e3867971eec972e26e5b2c6ac80c1f.html">VMCore</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">AttributesImpl.h</div>  </div>
+</div>
+<div class="contents">
+<a href="AttributesImpl_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- AttributesImpl.h - Attributes Internals -----------------*- 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 various helper methods and classes used by LLVMContextImpl</span>
+<a name="l00011"></a>00011 <span class="comment">// for creating and managing attributes.</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_ATTRIBUTESIMPL_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_ATTRIBUTESIMPL_H</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="Attributes_8h.html">llvm/Attributes.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="FoldingSet_8h.html">llvm/ADT/FoldingSet.h</a>"</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>llvm {
+<a name="l00022"></a>00022 
+<a name="l00023"></a><a class="code" href="classllvm_1_1AttributesImpl.html">00023</a> <span class="keyword">class </span><a class="code" href="classllvm_1_1AttributesImpl.html">AttributesImpl</a> : <span class="keyword">public</span> <a class="code" href="classllvm_1_1FoldingSetImpl_1_1Node.html">FoldingSetNode</a> {
+<a name="l00024"></a>00024   uint64_t Bits;                <span class="comment">// FIXME: We will be expanding this.</span>
+<a name="l00025"></a>00025 <span class="keyword">public</span>:
+<a name="l00026"></a><a class="code" href="classllvm_1_1AttributesImpl.html#a3d5a19f4f8d3795ce9678d11b9700fb4">00026</a>   <a class="code" href="classllvm_1_1AttributesImpl.html#a3d5a19f4f8d3795ce9678d11b9700fb4">AttributesImpl</a>(uint64_t bits) : Bits(bits) {}
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttributesImpl.html#ab40f729cddb4ef1c42beca8ebefaf686">hasAttribute</a>(uint64_t <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>) <span class="keyword">const</span>;
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttributesImpl.html#abae349d771c63955ff3fe384c25498b0">hasAttributes</a>() <span class="keyword">const</span>;
+<a name="l00031"></a>00031   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttributesImpl.html#abae349d771c63955ff3fe384c25498b0">hasAttributes</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>) <span class="keyword">const</span>;
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033   uint64_t <a class="code" href="classllvm_1_1AttributesImpl.html#ab67c48b958144368159d37d65569df0d">getAlignment</a>() <span class="keyword">const</span>;
+<a name="l00034"></a>00034   uint64_t <a class="code" href="classllvm_1_1AttributesImpl.html#a29ca905f4b7bcc48d248a410ee1a0e7f">getStackAlignment</a>() <span class="keyword">const</span>;
+<a name="l00035"></a>00035 
+<a name="l00036"></a><a class="code" href="classllvm_1_1AttributesImpl.html#ab3a4e3bf99ea77f9c613e278a8d988c3">00036</a>   uint64_t <a class="code" href="classllvm_1_1AttributesImpl.html#ab3a4e3bf99ea77f9c613e278a8d988c3">Raw</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Bits; } <span class="comment">// FIXME: Remove.</span>
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038   <span class="keyword">static</span> uint64_t <a class="code" href="classllvm_1_1AttributesImpl.html#a4a6f7fa09703d2f5ddd29d360e2873ff">getAttrMask</a>(uint64_t Val);
+<a name="l00039"></a>00039 
+<a name="l00040"></a><a class="code" href="classllvm_1_1AttributesImpl.html#a9f520c47e781a6cbe9f0aaac19c3db6d">00040</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1AttributesImpl.html#a9f520c47e781a6cbe9f0aaac19c3db6d">Profile</a>(<a class="code" href="classllvm_1_1FoldingSetNodeID.html">FoldingSetNodeID</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>)<span class="keyword"> const </span>{
+<a name="l00041"></a>00041     <a class="code" href="classllvm_1_1AttributesImpl.html#a9f520c47e781a6cbe9f0aaac19c3db6d">Profile</a>(ID, Bits);
+<a name="l00042"></a>00042   }
+<a name="l00043"></a><a class="code" href="classllvm_1_1AttributesImpl.html#a5cd69f7a124e5e4053f5a0fcf59c2db6">00043</a>   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1AttributesImpl.html#a5cd69f7a124e5e4053f5a0fcf59c2db6">Profile</a>(<a class="code" href="classllvm_1_1FoldingSetNodeID.html">FoldingSetNodeID</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>, uint64_t Bits) {
+<a name="l00044"></a>00044     ID.<a class="code" href="classllvm_1_1FoldingSetNodeID.html#a1012a025613336baf7ad36a46d18ac36">AddInteger</a>(Bits);
+<a name="l00045"></a>00045   }
+<a name="l00046"></a>00046 };
+<a name="l00047"></a>00047 
+<a name="l00048"></a><a class="code" href="classllvm_1_1AttributeListImpl.html">00048</a> <span class="keyword">class </span><a class="code" href="classllvm_1_1AttributeListImpl.html">AttributeListImpl</a> : <span class="keyword">public</span> <a class="code" href="classllvm_1_1FoldingSetImpl_1_1Node.html">FoldingSetNode</a> {
+<a name="l00049"></a>00049   <span class="comment">// AttributesList is uniqued, these should not be publicly available.</span>
+<a name="l00050"></a>00050   <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classllvm_1_1AttributeListImpl.html">AttributeListImpl</a> &) <a class="code" href="Compiler_8h.html#aacca75352b8e153274310c374564eb01">LLVM_DELETED_FUNCTION</a>;
+<a name="l00051"></a>00051   <a class="code" href="classllvm_1_1AttributeListImpl.html">AttributeListImpl</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1AttributeListImpl.html">AttributeListImpl</a> &) <a class="code" href="Compiler_8h.html#aacca75352b8e153274310c374564eb01">LLVM_DELETED_FUNCTION</a>;
+<a name="l00052"></a>00052 <span class="keyword">public</span>:
+<a name="l00053"></a><a class="code" href="classllvm_1_1AttributeListImpl.html#a1ab8983345ec3bc79914d0093c0be4b7">00053</a>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<AttributeWithIndex, 4></a> <a class="code" href="classllvm_1_1AttributeListImpl.html#a1ab8983345ec3bc79914d0093c0be4b7">Attrs</a>;
+<a name="l00054"></a>00054 
+<a name="l00055"></a><a class="code" href="classllvm_1_1AttributeListImpl.html#a2ac3aab60c03dcec728df5ea5b4696df">00055</a>   <a class="code" href="classllvm_1_1AttributeListImpl.html">AttributeListImpl</a>(<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<AttributeWithIndex></a> attrs)
+<a name="l00056"></a>00056     : <a class="code" href="classllvm_1_1AttributeListImpl.html#a1ab8983345ec3bc79914d0093c0be4b7">Attrs</a>(attrs.<a class="code" href="namespacellvm_1_1sys_1_1path.html#a33706aab89e700b8f79e1fa6f4f0e3ee" title="Get begin iterator over path.">begin</a>(), attrs.<a class="code" href="namespacellvm_1_1sys_1_1path.html#a214ec2f04ffd92636ed4bd2717607a1d" title="Get end iterator over path.">end</a>()) {}
+<a name="l00057"></a>00057 
+<a name="l00058"></a><a class="code" href="classllvm_1_1AttributeListImpl.html#a71754e91e19599756fa393f9a0909daf">00058</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1AttributeListImpl.html#a71754e91e19599756fa393f9a0909daf">Profile</a>(<a class="code" href="classllvm_1_1FoldingSetNodeID.html">FoldingSetNodeID</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>)<span class="keyword"> const </span>{
+<a name="l00059"></a>00059     <a class="code" href="classllvm_1_1AttributeListImpl.html#a71754e91e19599756fa393f9a0909daf">Profile</a>(ID, <a class="code" href="classllvm_1_1AttributeListImpl.html#a1ab8983345ec3bc79914d0093c0be4b7">Attrs</a>);
+<a name="l00060"></a>00060   }
+<a name="l00061"></a><a class="code" href="classllvm_1_1AttributeListImpl.html#a311f3641bf93d8380048514531b78fe7">00061</a>   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1AttributeListImpl.html#a311f3641bf93d8380048514531b78fe7">Profile</a>(<a class="code" href="classllvm_1_1FoldingSetNodeID.html">FoldingSetNodeID</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<AttributeWithIndex></a> <a class="code" href="classllvm_1_1AttributeListImpl.html#a1ab8983345ec3bc79914d0093c0be4b7">Attrs</a>){
+<a name="l00062"></a>00062     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Attrs.<a class="code" href="classllvm_1_1ArrayRef.html#a76878250107ee24ef7339870bdda4bcf" title="size - Get the array size.">size</a>(); i != e; ++i) {
+<a name="l00063"></a>00063       ID.<a class="code" href="classllvm_1_1FoldingSetNodeID.html#a1012a025613336baf7ad36a46d18ac36">AddInteger</a>(Attrs[i].Attrs.Raw());
+<a name="l00064"></a>00064       ID.<a class="code" href="classllvm_1_1FoldingSetNodeID.html#a1012a025613336baf7ad36a46d18ac36">AddInteger</a>(Attrs[i].Index);
+<a name="l00065"></a>00065     }
+<a name="l00066"></a>00066   }
+<a name="l00067"></a>00067 };
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069 } <span class="comment">// end llvm namespace</span>
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:32:50 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

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

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Attributes_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Attributes_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Attributes_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Attributes_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,169 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="Attributes.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="CallSite.h",height=0.2,width=0.4,color="red",URL="$CallSite_8h.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="AliasAnalysis.h",height=0.2,width=0.4,color="red",URL="$AliasAnalysis_8h.html"];
+  Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="CaptureTracking.h",height=0.2,width=0.4,color="red",URL="$CaptureTracking_8h.html"];
+  Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="Lint.cpp",height=0.2,width=0.4,color="black",URL="$Lint_8cpp.html"];
+  Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="ArgumentPromotion.cpp",height=0.2,width=0.4,color="black",URL="$ArgumentPromotion_8cpp.html"];
+  Node2 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="AliasSetTracker.h",height=0.2,width=0.4,color="red",URL="$AliasSetTracker_8h.html"];
+  Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="CallGraph.h",height=0.2,width=0.4,color="red",URL="$CallGraph_8h.html"];
+  Node8 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="CallGraph.cpp",height=0.2,width=0.4,color="black",URL="$CallGraph_8cpp.html"];
+  Node8 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="InlineAlways.cpp",height=0.2,width=0.4,color="black",URL="$InlineAlways_8cpp.html"];
+  Node8 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="Inliner.cpp",height=0.2,width=0.4,color="black",URL="$Inliner_8cpp.html"];
+  Node8 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="InlineSimple.cpp",height=0.2,width=0.4,color="black",URL="$InlineSimple_8cpp.html"];
+  Node8 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="InlineFunction.cpp",height=0.2,width=0.4,color="black",URL="$InlineFunction_8cpp.html"];
+  Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="CodeMetrics.h",height=0.2,width=0.4,color="red",URL="$CodeMetrics_8h.html"];
+  Node14 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="CodeMetrics.cpp",height=0.2,width=0.4,color="black",URL="$CodeMetrics_8cpp.html"];
+  Node2 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="InstVisitor.h",height=0.2,width=0.4,color="red",URL="$InstVisitor_8h.html"];
+  Node16 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="InlineCost.cpp",height=0.2,width=0.4,color="black",URL="$InlineCost_8cpp.html"];
+  Node16 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="Interpreter.h",height=0.2,width=0.4,color="red",URL="$lib_2ExecutionEngine_2Interpreter_2Interpreter_8h.html"];
+  Node2 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="Analysis.h",height=0.2,width=0.4,color="red",URL="$CodeGen_2Analysis_8h.html"];
+  Node19 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="ARMFastISel.cpp",height=0.2,width=0.4,color="black",URL="$ARMFastISel_8cpp.html"];
+  Node19 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="NVPTXISelLowering.cpp",height=0.2,width=0.4,color="black",URL="$NVPTXISelLowering_8cpp.html"];
+  Node19 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="X86FastISel.cpp",height=0.2,width=0.4,color="black",URL="$X86FastISel_8cpp.html"];
+  Node2 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="FunctionLoweringInfo.h",height=0.2,width=0.4,color="red",URL="$FunctionLoweringInfo_8h.html"];
+  Node23 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="TargetLowering.h",height=0.2,width=0.4,color="red",URL="$TargetLowering_8h.html"];
+  Node24 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="DwarfEHPrepare.cpp",height=0.2,width=0.4,color="black",URL="$DwarfEHPrepare_8cpp.html"];
+  Node24 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="StackProtector.cpp",height=0.2,width=0.4,color="black",URL="$StackProtector_8cpp.html"];
+  Node24 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="CodeGenPrepare.cpp",height=0.2,width=0.4,color="black",URL="$CodeGenPrepare_8cpp.html"];
+  Node24 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="GlobalMerge.cpp",height=0.2,width=0.4,color="black",URL="$GlobalMerge_8cpp.html"];
+  Node2 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node29 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="MemDepPrinter.cpp",height=0.2,width=0.4,color="black",URL="$MemDepPrinter_8cpp.html"];
+  Node2 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="ProfileVerifierPass.cpp",height=0.2,width=0.4,color="black",URL="$ProfileVerifierPass_8cpp.html"];
+  Node2 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node31 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="IntrinsicLowering.cpp",height=0.2,width=0.4,color="black",URL="$IntrinsicLowering_8cpp.html"];
+  Node2 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="SelectionDAGBuilder.h",height=0.2,width=0.4,color="red",URL="$SelectionDAGBuilder_8h.html"];
+  Node2 -> Node33 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="ShadowStackGC.cpp",height=0.2,width=0.4,color="black",URL="$ShadowStackGC_8cpp.html"];
+  Node2 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="X86ISelLowering.cpp",height=0.2,width=0.4,color="black",URL="$X86ISelLowering_8cpp.html"];
+  Node2 -> Node35 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="InstCombineCalls.cpp",height=0.2,width=0.4,color="black",URL="$InstCombineCalls_8cpp.html"];
+  Node2 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node36 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="DeadArgumentElimination.cpp",height=0.2,width=0.4,color="black",URL="$DeadArgumentElimination_8cpp.html"];
+  Node2 -> Node37 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="GlobalOpt.cpp",height=0.2,width=0.4,color="black",URL="$GlobalOpt_8cpp.html"];
+  Node2 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node38 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="IPConstantPropagation.cpp",height=0.2,width=0.4,color="black",URL="$IPConstantPropagation_8cpp.html"];
+  Node2 -> Node39 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="MergeFunctions.cpp",height=0.2,width=0.4,color="black",URL="$MergeFunctions_8cpp.html"];
+  Node2 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node40 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="Core.cpp",height=0.2,width=0.4,color="black",URL="$Core_8cpp.html"];
+  Node1 -> Node41 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="Instructions.h",height=0.2,width=0.4,color="red",URL="$Instructions_8h.html"];
+  Node41 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node42 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="LLParser.h",height=0.2,width=0.4,color="red",URL="$LLParser_8h.html"];
+  Node41 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node36 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node37 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node38 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node39 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node43 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="SimplifyCFGPass.cpp",height=0.2,width=0.4,color="black",URL="$SimplifyCFGPass_8cpp.html"];
+  Node41 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node44 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="Argument.h",height=0.2,width=0.4,color="black",URL="$Argument_8h.html"];
+  Node44 -> Node45 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="Function.h",height=0.2,width=0.4,color="red",URL="$Function_8h.html"];
+  Node45 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node45 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node42 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node46 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="BitcodeReader.h",height=0.2,width=0.4,color="red",URL="$BitcodeReader_8h.html"];
+  Node1 -> Node47 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="ValueEnumerator.h",height=0.2,width=0.4,color="red",URL="$ValueEnumerator_8h.html"];
+  Node1 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node43 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node48 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="Attributes.cpp",height=0.2,width=0.4,color="black",URL="$Attributes_8cpp.html"];
+  Node1 -> Node49 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="AttributesImpl.h",height=0.2,width=0.4,color="red",URL="$AttributesImpl_8h.html"];
+  Node49 -> Node48 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node40 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node50 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="LLVMContextImpl.cpp",height=0.2,width=0.4,color="black",URL="$LLVMContextImpl_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Attributes_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Attributes_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Attributes_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Attributes_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,486 @@
+<!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: Attributes.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Attributes.h</div>  </div>
+</div>
+<div class="contents">
+<a href="Attributes_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/Attributes.h - Container for Attributes ------------*- 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 simple types necessary to represent the</span>
+<a name="l00011"></a>00011 <span class="comment">// attributes associated with functions and their calls.</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_ATTRIBUTES_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_ATTRIBUTES_H</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></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="ArrayRef_8h.html">llvm/ADT/ArrayRef.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <cassert></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <string></span>
+<a name="l00022"></a>00022 
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>llvm {
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025 <span class="keyword">class </span>AttrBuilder;
+<a name="l00026"></a>00026 <span class="keyword">class </span>AttributesImpl;
+<a name="l00027"></a>00027 <span class="keyword">class </span>LLVMContext;
+<a name="l00028"></a>00028 <span class="keyword">class </span><a class="code" href="namespacellvm_1_1HexagonII.html#a9bebdf970b4f51041ed3dee5d558a807">Type</a>;
+<a name="l00029"></a>00029 <span class="comment"></span>
+<a name="l00030"></a>00030 <span class="comment">/// Attributes - A bitset of attributes.</span>
+<a name="l00031"></a><a class="code" href="classllvm_1_1Attributes.html">00031</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> {
+<a name="l00032"></a>00032 <span class="keyword">public</span>:<span class="comment"></span>
+<a name="l00033"></a>00033 <span class="comment">  /// Function parameters and results can have attributes to indicate how they</span>
+<a name="l00034"></a>00034 <span class="comment">  /// should be treated by optimizations and code generation. This enumeration</span>
+<a name="l00035"></a>00035 <span class="comment">  /// lists the attributes that can be associated with parameters, function</span>
+<a name="l00036"></a>00036 <span class="comment">  /// results or the function itself.</span>
+<a name="l00037"></a>00037 <span class="comment">  ///</span>
+<a name="l00038"></a>00038 <span class="comment">  /// Note that uwtable is about the ABI or the user mandating an entry in the</span>
+<a name="l00039"></a>00039 <span class="comment">  /// unwind table. The nounwind attribute is about an exception passing by the</span>
+<a name="l00040"></a>00040 <span class="comment">  /// function.</span>
+<a name="l00041"></a>00041 <span class="comment">  ///</span>
+<a name="l00042"></a>00042 <span class="comment">  /// In a theoretical system that uses tables for profiling and sjlj for</span>
+<a name="l00043"></a>00043 <span class="comment">  /// exceptions, they would be fully independent. In a normal system that uses</span>
+<a name="l00044"></a>00044 <span class="comment">  /// tables for both, the semantics are:</span>
+<a name="l00045"></a>00045 <span class="comment">  ///</span>
+<a name="l00046"></a>00046 <span class="comment">  /// nil                = Needs an entry because an exception might pass by.</span>
+<a name="l00047"></a>00047 <span class="comment">  /// nounwind           = No need for an entry</span>
+<a name="l00048"></a>00048 <span class="comment">  /// uwtable            = Needs an entry because the ABI says so and because</span>
+<a name="l00049"></a>00049 <span class="comment">  ///                      an exception might pass by.</span>
+<a name="l00050"></a>00050 <span class="comment">  /// uwtable + nounwind = Needs an entry because the ABI says so.</span>
+<a name="l00051"></a>00051 <span class="comment"></span>
+<a name="l00052"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9">00052</a>   <span class="keyword">enum</span> <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9">AttrVal</a> {
+<a name="l00053"></a>00053     <span class="comment">// IR-Level Attributes</span>
+<a name="l00054"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9af1482ea558c32889f33b71567f31c284">00054</a>     <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9af1482ea558c32889f33b71567f31c284" title="No attributes have been set.">None</a>,                  <span class="comment">///< No attributes have been set</span>
+<a name="l00055"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a936f2642f7befd36dc9cd13c7a467942">00055</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a936f2642f7befd36dc9cd13c7a467942" title="Address safety checking is on.">AddressSafety</a>,         <span class="comment">///< Address safety checking is on.</span>
+<a name="l00056"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ab108e4991bb4afe1dc3d09308f0af281">00056</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ab108e4991bb4afe1dc3d09308f0af281">Alignment</a>,             <span class="comment">///< Alignment of parameter (5 bits)</span>
+<a name="l00057"></a>00057 <span class="comment"></span><span class="comment">                           ///< stored as log2 of alignment with +1 bias</span>
+<a name="l00058"></a>00058 <span class="comment"></span><span class="comment">                           ///< 0 means unaligned different from align 1</span>
+<a name="l00059"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ac1ef704649903c3d4286df97ffa7c873">00059</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ac1ef704649903c3d4286df97ffa7c873" title="inline=always">AlwaysInline</a>,          <span class="comment">///< inline=always</span>
+<a name="l00060"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ac2802bca25b4cd05c813af5d5a692e98">00060</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ac2802bca25b4cd05c813af5d5a692e98" title="Pass structure by value.">ByVal</a>,                 <span class="comment">///< Pass structure by value</span>
+<a name="l00061"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a93b2bc793c157ce53bd619a4b98c53e6">00061</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a93b2bc793c157ce53bd619a4b98c53e6" title="Source said inlining was desirable.">InlineHint</a>,            <span class="comment">///< Source said inlining was desirable</span>
+<a name="l00062"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9aba27aa0dda68e81909874eab6b7c7fc1">00062</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9aba27aa0dda68e81909874eab6b7c7fc1" title="Force argument to be passed in register.">InReg</a>,                 <span class="comment">///< Force argument to be passed in register</span>
+<a name="l00063"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ad79dc868e8e7519ee7644e940d6a626d">00063</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ad79dc868e8e7519ee7644e940d6a626d" title="Function must be optimized for size first.">MinSize</a>,               <span class="comment">///< Function must be optimized for size first</span>
+<a name="l00064"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a13a346330e03a91a877e4ae938ff10ce">00064</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a13a346330e03a91a877e4ae938ff10ce" title="Naked function.">Naked</a>,                 <span class="comment">///< Naked function</span>
+<a name="l00065"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a4c4107874148657396b2fcd5b08db69d">00065</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a4c4107874148657396b2fcd5b08db69d" title="Nested function static chain.">Nest</a>,                  <span class="comment">///< Nested function static chain</span>
+<a name="l00066"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ae50554f71b98d47d78a58d6ad1307e11">00066</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ae50554f71b98d47d78a58d6ad1307e11" title="Considered to not alias after call.">NoAlias</a>,               <span class="comment">///< Considered to not alias after call</span>
+<a name="l00067"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a9ebf4b6258b4eab33518a06a955df920">00067</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a9ebf4b6258b4eab33518a06a955df920" title="Function creates no aliases of pointer.">NoCapture</a>,             <span class="comment">///< Function creates no aliases of pointer</span>
+<a name="l00068"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a557c909586dca1f0212626d6f39ad929">00068</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a557c909586dca1f0212626d6f39ad929" title="Disable implicit floating point insts.">NoImplicitFloat</a>,       <span class="comment">///< Disable implicit floating point insts</span>
+<a name="l00069"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a32f5348a818d81afcc76fdb9787f1b76">00069</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a32f5348a818d81afcc76fdb9787f1b76" title="inline=never">NoInline</a>,              <span class="comment">///< inline=never</span>
+<a name="l00070"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a19fc842fbae1625b68e02b4104511772">00070</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a19fc842fbae1625b68e02b4104511772">NonLazyBind</a>,           <span class="comment">///< Function is called early and/or</span>
+<a name="l00071"></a>00071 <span class="comment"></span><span class="comment">                           ///< often, so lazy binding isn't worthwhile</span>
+<a name="l00072"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a823a4cf871eed2b7d1d64980cfc7ea69">00072</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a823a4cf871eed2b7d1d64980cfc7ea69" title="Disable redzone.">NoRedZone</a>,             <span class="comment">///< Disable redzone</span>
+<a name="l00073"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a2010af40433b6a2ed1336c63f4dc89c2">00073</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a2010af40433b6a2ed1336c63f4dc89c2" title="Mark the function as not returning.">NoReturn</a>,              <span class="comment">///< Mark the function as not returning</span>
+<a name="l00074"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a64c7c0876352a9953d0c0a769181eb26">00074</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a64c7c0876352a9953d0c0a769181eb26" title="Function doesn't unwind stack.">NoUnwind</a>,              <span class="comment">///< Function doesn't unwind stack</span>
+<a name="l00075"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a446e0b16ca418a48ad0baf8bd48526c0">00075</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a446e0b16ca418a48ad0baf8bd48526c0" title="opt_size">OptimizeForSize</a>,       <span class="comment">///< opt_size</span>
+<a name="l00076"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a318cfdc45671bd9ab7291e7522eb5c68">00076</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a318cfdc45671bd9ab7291e7522eb5c68" title="Function does not access memory.">ReadNone</a>,              <span class="comment">///< Function does not access memory</span>
+<a name="l00077"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a55dfb20c5a56dc2896f7b3b0653595d0">00077</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a55dfb20c5a56dc2896f7b3b0653595d0" title="Function only reads from memory.">ReadOnly</a>,              <span class="comment">///< Function only reads from memory</span>
+<a name="l00078"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a50c9c38f4103376bf0952c63b533ee67">00078</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a50c9c38f4103376bf0952c63b533ee67" title="Function can return twice.">ReturnsTwice</a>,          <span class="comment">///< Function can return twice</span>
+<a name="l00079"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9aad2727ca7093c0e0cdd26297937e65cc">00079</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9aad2727ca7093c0e0cdd26297937e65cc" title="Sign extended before/after call.">SExt</a>,                  <span class="comment">///< Sign extended before/after call</span>
+<a name="l00080"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9acbd4d05922fa75902fc40d2ede5553c0">00080</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9acbd4d05922fa75902fc40d2ede5553c0">StackAlignment</a>,        <span class="comment">///< Alignment of stack for function (3 bits)</span>
+<a name="l00081"></a>00081 <span class="comment"></span><span class="comment">                           ///< stored as log2 of alignment with +1 bias 0</span>
+<a name="l00082"></a>00082 <span class="comment"></span><span class="comment">                           ///< means unaligned (different from</span>
+<a name="l00083"></a>00083 <span class="comment"></span><span class="comment">                           ///< alignstack={1))</span>
+<a name="l00084"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a9862c9ae054afa8dbe0c8b67fa0bf38a">00084</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a9862c9ae054afa8dbe0c8b67fa0bf38a" title="Stack protection.">StackProtect</a>,          <span class="comment">///< Stack protection.</span>
+<a name="l00085"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ad85f4e516e0ea76c568beb9c44b8a49e">00085</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ad85f4e516e0ea76c568beb9c44b8a49e" title="Stack protection required.">StackProtectReq</a>,       <span class="comment">///< Stack protection required.</span>
+<a name="l00086"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a8d8f916efebbaa06acb252e70c16e109">00086</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a8d8f916efebbaa06acb252e70c16e109" title="Hidden pointer to structure to return.">StructRet</a>,             <span class="comment">///< Hidden pointer to structure to return</span>
+<a name="l00087"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a855f496f8818ed95464e041ba88ad48b">00087</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a855f496f8818ed95464e041ba88ad48b" title="Function must be in a unwind table.">UWTable</a>,               <span class="comment">///< Function must be in a unwind table</span>
+<a name="l00088"></a><a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a7bd417dd164003b644acb43e3377e177">00088</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a7bd417dd164003b644acb43e3377e177" title="Zero extended before/after call.">ZExt</a>                   <span class="comment">///< Zero extended before/after call</span>
+<a name="l00089"></a>00089 <span class="comment"></span>  };
+<a name="l00090"></a>00090 <span class="keyword">private</span>:
+<a name="l00091"></a>00091   <a class="code" href="classllvm_1_1AttributesImpl.html">AttributesImpl</a> *Attrs;
+<a name="l00092"></a>00092   <a class="code" href="classllvm_1_1Attributes.html#a2beb7eea655e96cb4519643b5f8a3c68">Attributes</a>(<a class="code" href="classllvm_1_1AttributesImpl.html">AttributesImpl</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>) : Attrs(A) {}
+<a name="l00093"></a>00093 <span class="keyword">public</span>:
+<a name="l00094"></a><a class="code" href="classllvm_1_1Attributes.html#a2beb7eea655e96cb4519643b5f8a3c68">00094</a>   <a class="code" href="classllvm_1_1Attributes.html#a2beb7eea655e96cb4519643b5f8a3c68">Attributes</a>() : Attrs(0) {}
+<a name="l00095"></a><a class="code" href="classllvm_1_1Attributes.html#a55e773ae4b50a73df8d05b4af6464f43">00095</a>   <a class="code" href="classllvm_1_1Attributes.html#a55e773ae4b50a73df8d05b4af6464f43">Attributes</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>) : Attrs(A.Attrs) {}
+<a name="l00096"></a><a class="code" href="classllvm_1_1Attributes.html#a2ae5944d13f29776baeca0f82fc2933c">00096</a>   <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> &<a class="code" href="classllvm_1_1Attributes.html#a2ae5944d13f29776baeca0f82fc2933c">operator=</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>) {
+<a name="l00097"></a>00097     Attrs = A.Attrs;
+<a name="l00098"></a>00098     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00099"></a>00099   }
+<a name="l00100"></a>00100 <span class="comment"></span>
+<a name="l00101"></a>00101 <span class="comment">  /// get - Return a uniquified Attributes object. This takes the uniquified</span>
+<a name="l00102"></a>00102 <span class="comment">  /// value from the Builder and wraps it in the Attributes class.</span>
+<a name="l00103"></a>00103 <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> <span class="keyword">get</span>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<AttrVal></a> Vals);
+<a name="l00104"></a>00104   <span class="keyword">static</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> <span class="keyword">get</span>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context, <a class="code" href="classllvm_1_1AttrBuilder.html">AttrBuilder</a> &B);
+<a name="l00105"></a>00105 <span class="comment"></span>
+<a name="l00106"></a>00106 <span class="comment">  /// @brief Return true if the attribute is present.</span>
+<a name="l00107"></a>00107 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9">AttrVal</a> Val) <span class="keyword">const</span>;
+<a name="l00108"></a>00108 <span class="comment"></span>
+<a name="l00109"></a>00109 <span class="comment">  /// @brief Return true if attributes exist</span>
+<a name="l00110"></a>00110 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Attributes.html#ac0393170c2b76cd5e9035225d5acf2f3" title="Return true if attributes exist.">hasAttributes</a>() <span class="keyword">const</span>;
+<a name="l00111"></a>00111 <span class="comment"></span>
+<a name="l00112"></a>00112 <span class="comment">  /// @brief Return true if the attributes are a non-null intersection.</span>
+<a name="l00113"></a>00113 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Attributes.html#ac0393170c2b76cd5e9035225d5acf2f3" title="Return true if attributes exist.">hasAttributes</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>) <span class="keyword">const</span>;
+<a name="l00114"></a>00114 <span class="comment"></span>
+<a name="l00115"></a>00115 <span class="comment">  /// @brief Returns the alignment field of an attribute as a byte alignment</span>
+<a name="l00116"></a>00116 <span class="comment">  /// value.</span>
+<a name="l00117"></a>00117 <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Attributes.html#a8163fb423a8906c5131bfe4a47033886" title="Returns the alignment field of an attribute as a byte alignment value.">getAlignment</a>() <span class="keyword">const</span>;
+<a name="l00118"></a>00118 <span class="comment"></span>
+<a name="l00119"></a>00119 <span class="comment">  /// @brief Returns the stack alignment field of an attribute as a byte</span>
+<a name="l00120"></a>00120 <span class="comment">  /// alignment value.</span>
+<a name="l00121"></a>00121 <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Attributes.html#af5ae3b337b2f213d2bbf82940b80fb45" title="Returns the stack alignment field of an attribute as a byte alignment value.">getStackAlignment</a>() <span class="keyword">const</span>;
+<a name="l00122"></a>00122 <span class="comment"></span>
+<a name="l00123"></a>00123 <span class="comment">  /// @brief Parameter attributes that do not apply to vararg call arguments.</span>
+<a name="l00124"></a><a class="code" href="classllvm_1_1Attributes.html#a8f16bec7747d78e01e505b56e41052e1">00124</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Attributes.html#a8f16bec7747d78e01e505b56e41052e1" title="Parameter attributes that do not apply to vararg call arguments.">hasIncompatibleWithVarArgsAttrs</a>()<span class="keyword"> const </span>{
+<a name="l00125"></a>00125     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a8d8f916efebbaa06acb252e70c16e109" title="Hidden pointer to structure to return.">Attributes::StructRet</a>);
+<a name="l00126"></a>00126   }
+<a name="l00127"></a>00127 <span class="comment"></span>
+<a name="l00128"></a>00128 <span class="comment">  /// @brief Attributes that only apply to function parameters.</span>
+<a name="l00129"></a><a class="code" href="classllvm_1_1Attributes.html#a6094004feec304ed508dd4ec0b92679d">00129</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Attributes.html#a6094004feec304ed508dd4ec0b92679d" title="Attributes that only apply to function parameters.">hasParameterOnlyAttrs</a>()<span class="keyword"> const </span>{
+<a name="l00130"></a>00130     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ac2802bca25b4cd05c813af5d5a692e98" title="Pass structure by value.">Attributes::ByVal</a>) ||
+<a name="l00131"></a>00131       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a4c4107874148657396b2fcd5b08db69d" title="Nested function static chain.">Attributes::Nest</a>) ||
+<a name="l00132"></a>00132       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a8d8f916efebbaa06acb252e70c16e109" title="Hidden pointer to structure to return.">Attributes::StructRet</a>) ||
+<a name="l00133"></a>00133       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a9ebf4b6258b4eab33518a06a955df920" title="Function creates no aliases of pointer.">Attributes::NoCapture</a>);
+<a name="l00134"></a>00134   }
+<a name="l00135"></a>00135 <span class="comment"></span>
+<a name="l00136"></a>00136 <span class="comment">  /// @brief Attributes that may be applied to the function itself.  These cannot</span>
+<a name="l00137"></a>00137 <span class="comment">  /// be used on return values or function parameters.</span>
+<a name="l00138"></a><a class="code" href="classllvm_1_1Attributes.html#ace7a2f04f88a996c695f76d43b92a6f6">00138</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Attributes.html#ace7a2f04f88a996c695f76d43b92a6f6" title="Attributes that may be applied to the function itself. These cannot be used on return values or funct...">hasFunctionOnlyAttrs</a>()<span class="keyword"> const </span>{
+<a name="l00139"></a>00139     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a2010af40433b6a2ed1336c63f4dc89c2" title="Mark the function as not returning.">Attributes::NoReturn</a>) ||
+<a name="l00140"></a>00140       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a64c7c0876352a9953d0c0a769181eb26" title="Function doesn't unwind stack.">Attributes::NoUnwind</a>) ||
+<a name="l00141"></a>00141       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a318cfdc45671bd9ab7291e7522eb5c68" title="Function does not access memory.">Attributes::ReadNone</a>) ||
+<a name="l00142"></a>00142       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a55dfb20c5a56dc2896f7b3b0653595d0" title="Function only reads from memory.">Attributes::ReadOnly</a>) ||
+<a name="l00143"></a>00143       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a32f5348a818d81afcc76fdb9787f1b76" title="inline=never">Attributes::NoInline</a>) ||
+<a name="l00144"></a>00144       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ac1ef704649903c3d4286df97ffa7c873" title="inline=always">Attributes::AlwaysInline</a>) ||
+<a name="l00145"></a>00145       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a446e0b16ca418a48ad0baf8bd48526c0" title="opt_size">Attributes::OptimizeForSize</a>) ||
+<a name="l00146"></a>00146       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a9862c9ae054afa8dbe0c8b67fa0bf38a" title="Stack protection.">Attributes::StackProtect</a>) ||
+<a name="l00147"></a>00147       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ad85f4e516e0ea76c568beb9c44b8a49e" title="Stack protection required.">Attributes::StackProtectReq</a>) ||
+<a name="l00148"></a>00148       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a823a4cf871eed2b7d1d64980cfc7ea69" title="Disable redzone.">Attributes::NoRedZone</a>) ||
+<a name="l00149"></a>00149       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a557c909586dca1f0212626d6f39ad929" title="Disable implicit floating point insts.">Attributes::NoImplicitFloat</a>) ||
+<a name="l00150"></a>00150       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a13a346330e03a91a877e4ae938ff10ce" title="Naked function.">Attributes::Naked</a>) ||
+<a name="l00151"></a>00151       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a93b2bc793c157ce53bd619a4b98c53e6" title="Source said inlining was desirable.">Attributes::InlineHint</a>) ||
+<a name="l00152"></a>00152       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9acbd4d05922fa75902fc40d2ede5553c0">Attributes::StackAlignment</a>) ||
+<a name="l00153"></a>00153       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a855f496f8818ed95464e041ba88ad48b" title="Function must be in a unwind table.">Attributes::UWTable</a>) ||
+<a name="l00154"></a>00154       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a19fc842fbae1625b68e02b4104511772">Attributes::NonLazyBind</a>) ||
+<a name="l00155"></a>00155       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a50c9c38f4103376bf0952c63b533ee67" title="Function can return twice.">Attributes::ReturnsTwice</a>) ||
+<a name="l00156"></a>00156       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a936f2642f7befd36dc9cd13c7a467942" title="Address safety checking is on.">Attributes::AddressSafety</a>) ||
+<a name="l00157"></a>00157       <a class="code" href="classllvm_1_1Attributes.html#ad68a7be4af7d92f3df681e13acbacc13" title="Return true if the attribute is present.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ad79dc868e8e7519ee7644e940d6a626d" title="Function must be optimized for size first.">Attributes::MinSize</a>);
+<a name="l00158"></a>00158   }
+<a name="l00159"></a>00159 
+<a name="l00160"></a><a class="code" href="classllvm_1_1Attributes.html#a500a983cdf21a684408b4864572eb66c">00160</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Attributes.html#a500a983cdf21a684408b4864572eb66c">operator==</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>)<span class="keyword"> const </span>{
+<a name="l00161"></a>00161     <span class="keywordflow">return</span> Attrs == A.Attrs;
+<a name="l00162"></a>00162   }
+<a name="l00163"></a><a class="code" href="classllvm_1_1Attributes.html#ae4b064a2bb7e5cdd7b6cafb4911575e3">00163</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Attributes.html#ae4b064a2bb7e5cdd7b6cafb4911575e3">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>)<span class="keyword"> const </span>{
+<a name="l00164"></a>00164     <span class="keywordflow">return</span> Attrs != A.Attrs;
+<a name="l00165"></a>00165   }
+<a name="l00166"></a>00166 
+<a name="l00167"></a>00167   uint64_t <a class="code" href="classllvm_1_1Attributes.html#a1df29eeff62d364d4e8bb5f9cc868e0d">Raw</a>() <span class="keyword">const</span>;
+<a name="l00168"></a>00168 <span class="comment"></span>
+<a name="l00169"></a>00169 <span class="comment">  /// @brief Which attributes cannot be applied to a type.</span>
+<a name="l00170"></a>00170 <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> <a class="code" href="classllvm_1_1Attributes.html#a557333819ca596487763d5b440f3a253" title="Which attributes cannot be applied to a type.">typeIncompatible</a>(<a class="code" href="classllvm_1_1Type.html">Type</a> *Ty);
+<a name="l00171"></a>00171 <span class="comment"></span>
+<a name="l00172"></a>00172 <span class="comment">  /// encodeLLVMAttributesForBitcode - This returns an integer containing an</span>
+<a name="l00173"></a>00173 <span class="comment">  /// encoding of all the LLVM attributes found in the given attribute bitset.</span>
+<a name="l00174"></a>00174 <span class="comment">  /// Any change to this encoding is a breaking change to bitcode compatibility.</span>
+<a name="l00175"></a>00175 <span class="comment"></span>  <span class="keyword">static</span> uint64_t <a class="code" href="classllvm_1_1Attributes.html#ac34406d8ec714da945f239d6c169ea82">encodeLLVMAttributesForBitcode</a>(<a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> Attrs);
+<a name="l00176"></a>00176 <span class="comment"></span>
+<a name="l00177"></a>00177 <span class="comment">  /// decodeLLVMAttributesForBitcode - This returns an attribute bitset</span>
+<a name="l00178"></a>00178 <span class="comment">  /// containing the LLVM attributes that have been decoded from the given</span>
+<a name="l00179"></a>00179 <span class="comment">  /// integer.  This function must stay in sync with</span>
+<a name="l00180"></a>00180 <span class="comment">  /// 'encodeLLVMAttributesForBitcode'.</span>
+<a name="l00181"></a>00181 <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> <a class="code" href="classllvm_1_1Attributes.html#a1a3abefe83d735008cae804f130c18da">decodeLLVMAttributesForBitcode</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>,
+<a name="l00182"></a>00182                                                    uint64_t EncodedAttrs);
+<a name="l00183"></a>00183 <span class="comment"></span>
+<a name="l00184"></a>00184 <span class="comment">  /// getAsString - The set of Attributes set in Attributes is converted to a</span>
+<a name="l00185"></a>00185 <span class="comment">  /// string of equivalent mnemonics. This is, presumably, for writing out the</span>
+<a name="l00186"></a>00186 <span class="comment">  /// mnemonics for the assembly writer.</span>
+<a name="l00187"></a>00187 <span class="comment">  /// @brief Convert attribute bits to text</span>
+<a name="l00188"></a>00188 <span class="comment"></span>  std::string <a class="code" href="classllvm_1_1Attributes.html#aef75da08f255e15911d34cd6a6bb1cb8" title="Convert attribute bits to text.">getAsString</a>() <span class="keyword">const</span>;
+<a name="l00189"></a>00189 };
+<a name="l00190"></a>00190 
+<a name="l00191"></a>00191 <span class="comment">//===----------------------------------------------------------------------===//</span><span class="comment"></span>
+<a name="l00192"></a>00192 <span class="comment">/// AttrBuilder - This class is used in conjunction with the Attributes::get</span>
+<a name="l00193"></a>00193 <span class="comment">/// method to create an Attributes object. The object itself is uniquified. The</span>
+<a name="l00194"></a>00194 <span class="comment">/// Builder's value, however, is not. So this can be used as a quick way to test</span>
+<a name="l00195"></a>00195 <span class="comment">/// for equality, presence of attributes, etc.</span>
+<a name="l00196"></a><a class="code" href="classllvm_1_1AttrBuilder.html">00196</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classllvm_1_1AttrBuilder.html">AttrBuilder</a> {
+<a name="l00197"></a>00197   uint64_t Bits;
+<a name="l00198"></a>00198 <span class="keyword">public</span>:
+<a name="l00199"></a><a class="code" href="classllvm_1_1AttrBuilder.html#a63e5b25df833b833ed0c0adf4a2cd9e3">00199</a>   <a class="code" href="classllvm_1_1AttrBuilder.html#a63e5b25df833b833ed0c0adf4a2cd9e3">AttrBuilder</a>() : Bits(0) {}
+<a name="l00200"></a><a class="code" href="classllvm_1_1AttrBuilder.html#a95b2db9c5b837052a2a2db5abd59a62e">00200</a>   <span class="keyword">explicit</span> <a class="code" href="classllvm_1_1AttrBuilder.html#a95b2db9c5b837052a2a2db5abd59a62e">AttrBuilder</a>(uint64_t B) : Bits(B) {}
+<a name="l00201"></a><a class="code" href="classllvm_1_1AttrBuilder.html#a724997c15d027b3f9bad2addb28f660e">00201</a>   <a class="code" href="classllvm_1_1AttrBuilder.html#a724997c15d027b3f9bad2addb28f660e">AttrBuilder</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>) : Bits(A.<a class="code" href="classllvm_1_1AttrBuilder.html#a475fef4d8efe902d1bee6b7e386a3eab">Raw</a>()) {}
+<a name="l00202"></a><a class="code" href="classllvm_1_1AttrBuilder.html#a14f1905d34d2c4f215201fb1ff555178">00202</a>   <a class="code" href="classllvm_1_1AttrBuilder.html#a14f1905d34d2c4f215201fb1ff555178">AttrBuilder</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1AttrBuilder.html">AttrBuilder</a> &B) : Bits(B.Bits) {}
+<a name="l00203"></a>00203 
+<a name="l00204"></a><a class="code" href="classllvm_1_1AttrBuilder.html#a8fa071b4bd0c47ec59fc46f00c2ac3ad">00204</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1AttrBuilder.html#a8fa071b4bd0c47ec59fc46f00c2ac3ad">clear</a>() { Bits = 0; }
+<a name="l00205"></a>00205 <span class="comment"></span>
+<a name="l00206"></a>00206 <span class="comment">  /// addAttribute - Add an attribute to the builder.</span>
+<a name="l00207"></a>00207 <span class="comment"></span>  <a class="code" href="classllvm_1_1AttrBuilder.html">AttrBuilder</a> &<a class="code" href="classllvm_1_1AttrBuilder.html#a0028c463debc1305cc07a85bdfcaeeb6" title="addAttribute - Add an attribute to the builder.">addAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9">Attributes::AttrVal</a> Val);
+<a name="l00208"></a>00208 <span class="comment"></span>
+<a name="l00209"></a>00209 <span class="comment">  /// removeAttribute - Remove an attribute from the builder.</span>
+<a name="l00210"></a>00210 <span class="comment"></span>  <a class="code" href="classllvm_1_1AttrBuilder.html">AttrBuilder</a> &<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9">Attributes::AttrVal</a> Val);
+<a name="l00211"></a>00211 <span class="comment"></span>
+<a name="l00212"></a>00212 <span class="comment">  /// addAttribute - Add the attributes from A to the builder.</span>
+<a name="l00213"></a>00213 <span class="comment"></span>  <a class="code" href="classllvm_1_1AttrBuilder.html">AttrBuilder</a> &<a class="code" href="classllvm_1_1AttrBuilder.html#ab49fc69e5dcc7a74f5af0035a150147a" title="addAttribute - Add the attributes from A to the builder.">addAttributes</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>);
+<a name="l00214"></a>00214 <span class="comment"></span>
+<a name="l00215"></a>00215 <span class="comment">  /// removeAttribute - Remove the attributes from A from the builder.</span>
+<a name="l00216"></a>00216 <span class="comment"></span>  <a class="code" href="classllvm_1_1AttrBuilder.html">AttrBuilder</a> &<a class="code" href="classllvm_1_1AttrBuilder.html#ae296422bec4c0a8d63d88678b15ffecc" title="removeAttribute - Remove the attributes from A from the builder.">removeAttributes</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>);
+<a name="l00217"></a>00217 <span class="comment"></span>
+<a name="l00218"></a>00218 <span class="comment">  /// hasAttribute - Return true if the builder has the specified attribute.</span>
+<a name="l00219"></a>00219 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttrBuilder.html#a9e7e9d4b06408ef159ea5c9182c9ea79" title="hasAttribute - Return true if the builder has the specified attribute.">hasAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9">Attributes::AttrVal</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>) <span class="keyword">const</span>;
+<a name="l00220"></a>00220 <span class="comment"></span>
+<a name="l00221"></a>00221 <span class="comment">  /// hasAttributes - Return true if the builder has IR-level attributes.</span>
+<a name="l00222"></a>00222 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttrBuilder.html#ab7a2eaa7d3a7352124fd429329dea352" title="hasAttributes - Return true if the builder has IR-level attributes.">hasAttributes</a>() <span class="keyword">const</span>;
+<a name="l00223"></a>00223 <span class="comment"></span>
+<a name="l00224"></a>00224 <span class="comment">  /// hasAttributes - Return true if the builder has any attribute that's in the</span>
+<a name="l00225"></a>00225 <span class="comment">  /// specified attribute.</span>
+<a name="l00226"></a>00226 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttrBuilder.html#ab7a2eaa7d3a7352124fd429329dea352" title="hasAttributes - Return true if the builder has IR-level attributes.">hasAttributes</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> &<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>) <span class="keyword">const</span>;
+<a name="l00227"></a>00227 <span class="comment"></span>
+<a name="l00228"></a>00228 <span class="comment">  /// hasAlignmentAttr - Return true if the builder has an alignment attribute.</span>
+<a name="l00229"></a>00229 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttrBuilder.html#a73bd2fb10b0b55bdd153bf3a68b7a237" title="hasAlignmentAttr - Return true if the builder has an alignment attribute.">hasAlignmentAttr</a>() <span class="keyword">const</span>;
+<a name="l00230"></a>00230 <span class="comment"></span>
+<a name="l00231"></a>00231 <span class="comment">  /// getAlignment - Retrieve the alignment attribute, if it exists.</span>
+<a name="l00232"></a>00232 <span class="comment"></span>  uint64_t <a class="code" href="classllvm_1_1AttrBuilder.html#a1e25837d5e1bf54ce8bcc2ea4332c764" title="getAlignment - Retrieve the alignment attribute, if it exists.">getAlignment</a>() <span class="keyword">const</span>;
+<a name="l00233"></a>00233 <span class="comment"></span>
+<a name="l00234"></a>00234 <span class="comment">  /// getStackAlignment - Retrieve the stack alignment attribute, if it exists.</span>
+<a name="l00235"></a>00235 <span class="comment"></span>  uint64_t <a class="code" href="classllvm_1_1AttrBuilder.html#a4f961d55a992137bb3afaec593792f54" title="getStackAlignment - Retrieve the stack alignment attribute, if it exists.">getStackAlignment</a>() <span class="keyword">const</span>;
+<a name="l00236"></a>00236 <span class="comment"></span>
+<a name="l00237"></a>00237 <span class="comment">  /// addAlignmentAttr - This turns an int alignment (which must be a power of</span>
+<a name="l00238"></a>00238 <span class="comment">  /// 2) into the form used internally in Attributes.</span>
+<a name="l00239"></a>00239 <span class="comment"></span>  <a class="code" href="classllvm_1_1AttrBuilder.html">AttrBuilder</a> &<a class="code" href="classllvm_1_1AttrBuilder.html#a20fd739ea524de971572aa781af7bcf4">addAlignmentAttr</a>(<span class="keywordtype">unsigned</span> Align);
+<a name="l00240"></a>00240 <span class="comment"></span>
+<a name="l00241"></a>00241 <span class="comment">  /// addStackAlignmentAttr - This turns an int stack alignment (which must be a</span>
+<a name="l00242"></a>00242 <span class="comment">  /// power of 2) into the form used internally in Attributes.</span>
+<a name="l00243"></a>00243 <span class="comment"></span>  <a class="code" href="classllvm_1_1AttrBuilder.html">AttrBuilder</a> &<a class="code" href="classllvm_1_1AttrBuilder.html#a8c22d6ed7f21ec1fbdc949cce8d963f8">addStackAlignmentAttr</a>(<span class="keywordtype">unsigned</span> Align);
+<a name="l00244"></a>00244 <span class="comment"></span>
+<a name="l00245"></a>00245 <span class="comment">  /// addRawValue - Add the raw value to the internal representation.</span>
+<a name="l00246"></a>00246 <span class="comment">  /// N.B. This should be used ONLY for decoding LLVM bitcode!</span>
+<a name="l00247"></a>00247 <span class="comment"></span>  <a class="code" href="classllvm_1_1AttrBuilder.html">AttrBuilder</a> &<a class="code" href="classllvm_1_1AttrBuilder.html#abd94e8e18a2badf41f61dc7a9e30ee08">addRawValue</a>(uint64_t Val);
+<a name="l00248"></a>00248 <span class="comment"></span>
+<a name="l00249"></a>00249 <span class="comment">  /// @brief Remove attributes that are used on functions only.</span>
+<a name="l00250"></a><a class="code" href="classllvm_1_1AttrBuilder.html#aff1a9ba39f49cf4cb7baabba397bd870">00250</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1AttrBuilder.html#aff1a9ba39f49cf4cb7baabba397bd870" title="Remove attributes that are used on functions only.">removeFunctionOnlyAttrs</a>() {
+<a name="l00251"></a>00251     <a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a2010af40433b6a2ed1336c63f4dc89c2" title="Mark the function as not returning.">Attributes::NoReturn</a>)
+<a name="l00252"></a>00252       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a64c7c0876352a9953d0c0a769181eb26" title="Function doesn't unwind stack.">Attributes::NoUnwind</a>)
+<a name="l00253"></a>00253       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a318cfdc45671bd9ab7291e7522eb5c68" title="Function does not access memory.">Attributes::ReadNone</a>)
+<a name="l00254"></a>00254       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a55dfb20c5a56dc2896f7b3b0653595d0" title="Function only reads from memory.">Attributes::ReadOnly</a>)
+<a name="l00255"></a>00255       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a32f5348a818d81afcc76fdb9787f1b76" title="inline=never">Attributes::NoInline</a>)
+<a name="l00256"></a>00256       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ac1ef704649903c3d4286df97ffa7c873" title="inline=always">Attributes::AlwaysInline</a>)
+<a name="l00257"></a>00257       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a446e0b16ca418a48ad0baf8bd48526c0" title="opt_size">Attributes::OptimizeForSize</a>)
+<a name="l00258"></a>00258       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a9862c9ae054afa8dbe0c8b67fa0bf38a" title="Stack protection.">Attributes::StackProtect</a>)
+<a name="l00259"></a>00259       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ad85f4e516e0ea76c568beb9c44b8a49e" title="Stack protection required.">Attributes::StackProtectReq</a>)
+<a name="l00260"></a>00260       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a823a4cf871eed2b7d1d64980cfc7ea69" title="Disable redzone.">Attributes::NoRedZone</a>)
+<a name="l00261"></a>00261       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a557c909586dca1f0212626d6f39ad929" title="Disable implicit floating point insts.">Attributes::NoImplicitFloat</a>)
+<a name="l00262"></a>00262       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a13a346330e03a91a877e4ae938ff10ce" title="Naked function.">Attributes::Naked</a>)
+<a name="l00263"></a>00263       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a93b2bc793c157ce53bd619a4b98c53e6" title="Source said inlining was desirable.">Attributes::InlineHint</a>)
+<a name="l00264"></a>00264       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9acbd4d05922fa75902fc40d2ede5553c0">Attributes::StackAlignment</a>)
+<a name="l00265"></a>00265       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a855f496f8818ed95464e041ba88ad48b" title="Function must be in a unwind table.">Attributes::UWTable</a>)
+<a name="l00266"></a>00266       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a19fc842fbae1625b68e02b4104511772">Attributes::NonLazyBind</a>)
+<a name="l00267"></a>00267       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a50c9c38f4103376bf0952c63b533ee67" title="Function can return twice.">Attributes::ReturnsTwice</a>)
+<a name="l00268"></a>00268       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a936f2642f7befd36dc9cd13c7a467942" title="Address safety checking is on.">Attributes::AddressSafety</a>)
+<a name="l00269"></a>00269       .<a class="code" href="classllvm_1_1AttrBuilder.html#a23ed09ad0fb7be117a8d7e2ffeffab05" title="removeAttribute - Remove an attribute from the builder.">removeAttribute</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9ad79dc868e8e7519ee7644e940d6a626d" title="Function must be optimized for size first.">Attributes::MinSize</a>);
+<a name="l00270"></a>00270   }
+<a name="l00271"></a>00271 
+<a name="l00272"></a><a class="code" href="classllvm_1_1AttrBuilder.html#a475fef4d8efe902d1bee6b7e386a3eab">00272</a>   uint64_t <a class="code" href="classllvm_1_1AttrBuilder.html#a475fef4d8efe902d1bee6b7e386a3eab">Raw</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Bits; }
+<a name="l00273"></a>00273 
+<a name="l00274"></a><a class="code" href="classllvm_1_1AttrBuilder.html#acf6d1aef800d5e601feaf0400d12e942">00274</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttrBuilder.html#acf6d1aef800d5e601feaf0400d12e942">operator==</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1AttrBuilder.html">AttrBuilder</a> &B) {
+<a name="l00275"></a>00275     <span class="keywordflow">return</span> Bits == B.Bits;
+<a name="l00276"></a>00276   }
+<a name="l00277"></a><a class="code" href="classllvm_1_1AttrBuilder.html#a8cbaa7bc99fbf2ced848c1c2ba332b15">00277</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttrBuilder.html#a8cbaa7bc99fbf2ced848c1c2ba332b15">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1AttrBuilder.html">AttrBuilder</a> &B) {
+<a name="l00278"></a>00278     <span class="keywordflow">return</span> Bits != B.Bits;
+<a name="l00279"></a>00279   }
+<a name="l00280"></a>00280 };
+<a name="l00281"></a>00281 
+<a name="l00282"></a>00282 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00283"></a>00283 <span class="comment">// AttributeWithIndex</span>
+<a name="l00284"></a>00284 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00285"></a>00285 <span class="comment"></span>
+<a name="l00286"></a>00286 <span class="comment">/// AttributeWithIndex - This is just a pair of values to associate a set of</span>
+<a name="l00287"></a>00287 <span class="comment">/// attributes with an index.</span>
+<a name="l00288"></a><a class="code" href="structllvm_1_1AttributeWithIndex.html">00288</a> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="structllvm_1_1AttributeWithIndex.html">AttributeWithIndex</a> {
+<a name="l00289"></a><a class="code" href="structllvm_1_1AttributeWithIndex.html#aff002b9c09e3b31f0a4f08c0717e5239">00289</a>   <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> <a class="code" href="structllvm_1_1AttributeWithIndex.html#aff002b9c09e3b31f0a4f08c0717e5239" title="The attributes that are set, or'd together.">Attrs</a>;  <span class="comment">///< The attributes that are set, or'd together.</span>
+<a name="l00290"></a><a class="code" href="structllvm_1_1AttributeWithIndex.html#ac521257770d78baff265563e545f14d3">00290</a> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="structllvm_1_1AttributeWithIndex.html#ac521257770d78baff265563e545f14d3">Index</a>;    <span class="comment">///< Index of the parameter for which the attributes apply.</span>
+<a name="l00291"></a>00291 <span class="comment"></span><span class="comment">                     ///< Index 0 is used for return value attributes.</span>
+<a name="l00292"></a>00292 <span class="comment"></span><span class="comment">                     ///< Index ~0U is used for function attributes.</span>
+<a name="l00293"></a>00293 <span class="comment"></span>
+<a name="l00294"></a><a class="code" href="structllvm_1_1AttributeWithIndex.html#ab2c694b0c09cd5c1b50c88b6bc84053e">00294</a>   <span class="keyword">static</span> <a class="code" href="structllvm_1_1AttributeWithIndex.html">AttributeWithIndex</a> <span class="keyword">get</span>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> Idx,
+<a name="l00295"></a>00295                                 <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Attributes::AttrVal></a> <a class="code" href="structllvm_1_1AttributeWithIndex.html#aff002b9c09e3b31f0a4f08c0717e5239" title="The attributes that are set, or'd together.">Attrs</a>) {
+<a name="l00296"></a>00296     <span class="keywordflow">return</span> <span class="keyword">get</span>(Idx, <a class="code" href="structllvm_1_1AttributeWithIndex.html#ab2c694b0c09cd5c1b50c88b6bc84053e">Attributes::get</a>(<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <a class="code" href="structllvm_1_1AttributeWithIndex.html#aff002b9c09e3b31f0a4f08c0717e5239" title="The attributes that are set, or'd together.">Attrs</a>));
+<a name="l00297"></a>00297   }
+<a name="l00298"></a><a class="code" href="structllvm_1_1AttributeWithIndex.html#adc3f28a915bf92cde743eefb9f62911c">00298</a>   <span class="keyword">static</span> <a class="code" href="structllvm_1_1AttributeWithIndex.html">AttributeWithIndex</a> <span class="keyword">get</span>(<span class="keywordtype">unsigned</span> Idx, <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> <a class="code" href="structllvm_1_1AttributeWithIndex.html#aff002b9c09e3b31f0a4f08c0717e5239" title="The attributes that are set, or'd together.">Attrs</a>) {
+<a name="l00299"></a>00299     <a class="code" href="structllvm_1_1AttributeWithIndex.html">AttributeWithIndex</a> P;
+<a name="l00300"></a>00300     P.<a class="code" href="structllvm_1_1AttributeWithIndex.html#ac521257770d78baff265563e545f14d3">Index</a> = Idx;
+<a name="l00301"></a>00301     P.<a class="code" href="structllvm_1_1AttributeWithIndex.html#aff002b9c09e3b31f0a4f08c0717e5239" title="The attributes that are set, or'd together.">Attrs</a> = <a class="code" href="structllvm_1_1AttributeWithIndex.html#aff002b9c09e3b31f0a4f08c0717e5239" title="The attributes that are set, or'd together.">Attrs</a>;
+<a name="l00302"></a>00302     <span class="keywordflow">return</span> P;
+<a name="l00303"></a>00303   }
+<a name="l00304"></a>00304 };
+<a name="l00305"></a>00305 
+<a name="l00306"></a>00306 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00307"></a>00307 <span class="comment">// AttrListPtr Smart Pointer</span>
+<a name="l00308"></a>00308 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00309"></a>00309 
+<a name="l00310"></a>00310 <span class="keyword">class </span>AttributeListImpl;
+<a name="l00311"></a>00311 <span class="comment"></span>
+<a name="l00312"></a>00312 <span class="comment">/// AttrListPtr - This class manages the ref count for the opaque</span>
+<a name="l00313"></a>00313 <span class="comment">/// AttributeListImpl object and provides accessors for it.</span>
+<a name="l00314"></a><a class="code" href="classllvm_1_1AttrListPtr.html">00314</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classllvm_1_1AttrListPtr.html">AttrListPtr</a> {
+<a name="l00315"></a>00315 <span class="keyword">public</span>:
+<a name="l00316"></a><a class="code" href="classllvm_1_1AttrListPtr.html#ae891c2fafc52690f5192fd14b7d92866">00316</a>   <span class="keyword">enum</span> <a class="code" href="classllvm_1_1AttrListPtr.html#ae891c2fafc52690f5192fd14b7d92866">AttrIndex</a> {
+<a name="l00317"></a><a class="code" href="classllvm_1_1AttrListPtr.html#ae891c2fafc52690f5192fd14b7d92866a454fc274ceb4da303c60c2a34826b085">00317</a>     <a class="code" href="classllvm_1_1AttrListPtr.html#ae891c2fafc52690f5192fd14b7d92866a454fc274ceb4da303c60c2a34826b085">ReturnIndex</a> = 0U,
+<a name="l00318"></a><a class="code" href="classllvm_1_1AttrListPtr.html#ae891c2fafc52690f5192fd14b7d92866aa0ca5b17b28c0c286bc17f82606d5129">00318</a>     <a class="code" href="classllvm_1_1AttrListPtr.html#ae891c2fafc52690f5192fd14b7d92866aa0ca5b17b28c0c286bc17f82606d5129">FunctionIndex</a> = ~0U
+<a name="l00319"></a>00319   };
+<a name="l00320"></a>00320 <span class="keyword">private</span>:<span class="comment"></span>
+<a name="l00321"></a>00321 <span class="comment">  /// @brief The attributes that we are managing.  This can be null to represent</span>
+<a name="l00322"></a>00322 <span class="comment">  /// the empty attributes list.</span>
+<a name="l00323"></a>00323 <span class="comment"></span>  <a class="code" href="classllvm_1_1AttributeListImpl.html">AttributeListImpl</a> *AttrList;
+<a name="l00324"></a>00324 <span class="comment"></span>
+<a name="l00325"></a>00325 <span class="comment">  /// @brief The attributes for the specified index are returned.  Attributes</span>
+<a name="l00326"></a>00326 <span class="comment">  /// for the result are denoted with Idx = 0.</span>
+<a name="l00327"></a>00327 <span class="comment"></span>  <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> getAttributes(<span class="keywordtype">unsigned</span> Idx) <span class="keyword">const</span>;
+<a name="l00328"></a>00328 
+<a name="l00329"></a>00329   <span class="keyword">explicit</span> <a class="code" href="classllvm_1_1AttrListPtr.html#a1725df2a599bb882249778c722a88e0a">AttrListPtr</a>(<a class="code" href="classllvm_1_1AttributeListImpl.html">AttributeListImpl</a> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>) : AttrList(LI) {}
+<a name="l00330"></a>00330 <span class="keyword">public</span>:
+<a name="l00331"></a><a class="code" href="classllvm_1_1AttrListPtr.html#a1725df2a599bb882249778c722a88e0a">00331</a>   <a class="code" href="classllvm_1_1AttrListPtr.html#a1725df2a599bb882249778c722a88e0a">AttrListPtr</a>() : AttrList(0) {}
+<a name="l00332"></a><a class="code" href="classllvm_1_1AttrListPtr.html#ab5792fd82b15630bf686461f8726642e">00332</a>   <a class="code" href="classllvm_1_1AttrListPtr.html#ab5792fd82b15630bf686461f8726642e">AttrListPtr</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1AttrListPtr.html">AttrListPtr</a> &P) : AttrList(P.AttrList) {}
+<a name="l00333"></a>00333   <span class="keyword">const</span> <a class="code" href="classllvm_1_1AttrListPtr.html">AttrListPtr</a> &<a class="code" href="classllvm_1_1AttrListPtr.html#a795c2c9006f17d9f5890c090c8338e5f">operator=</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1AttrListPtr.html">AttrListPtr</a> &RHS);
+<a name="l00334"></a>00334 
+<a name="l00335"></a>00335   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00336"></a>00336   <span class="comment">// Attribute List Construction and Mutation</span>
+<a name="l00337"></a>00337   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00338"></a>00338 <span class="comment"></span>
+<a name="l00339"></a>00339 <span class="comment">  /// get - Return a Attributes list with the specified parameters in it.</span>
+<a name="l00340"></a>00340 <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classllvm_1_1AttrListPtr.html">AttrListPtr</a> <span class="keyword">get</span>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<AttributeWithIndex></a> Attrs);
+<a name="l00341"></a>00341 <span class="comment"></span>
+<a name="l00342"></a>00342 <span class="comment">  /// addAttr - Add the specified attribute at the specified index to this</span>
+<a name="l00343"></a>00343 <span class="comment">  /// attribute list.  Since attribute lists are immutable, this</span>
+<a name="l00344"></a>00344 <span class="comment">  /// returns the new list.</span>
+<a name="l00345"></a>00345 <span class="comment"></span>  <a class="code" href="classllvm_1_1AttrListPtr.html">AttrListPtr</a> <a class="code" href="classllvm_1_1AttrListPtr.html#a70b7b4f8b7173175338fc804a6152bc2">addAttr</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> Idx, <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> Attrs) <span class="keyword">const</span>;
+<a name="l00346"></a>00346 <span class="comment"></span>
+<a name="l00347"></a>00347 <span class="comment">  /// removeAttr - Remove the specified attribute at the specified index from</span>
+<a name="l00348"></a>00348 <span class="comment">  /// this attribute list.  Since attribute lists are immutable, this</span>
+<a name="l00349"></a>00349 <span class="comment">  /// returns the new list.</span>
+<a name="l00350"></a>00350 <span class="comment"></span>  <a class="code" href="classllvm_1_1AttrListPtr.html">AttrListPtr</a> <a class="code" href="classllvm_1_1AttrListPtr.html#a65f1cf1f2aaf8b3b1d22e47cbe273565">removeAttr</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> Idx, <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> Attrs) <span class="keyword">const</span>;
+<a name="l00351"></a>00351 
+<a name="l00352"></a>00352   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00353"></a>00353   <span class="comment">// Attribute List Accessors</span>
+<a name="l00354"></a>00354   <span class="comment">//===--------------------------------------------------------------------===//</span><span class="comment"></span>
+<a name="l00355"></a>00355 <span class="comment">  /// getParamAttributes - The attributes for the specified index are</span>
+<a name="l00356"></a>00356 <span class="comment">  /// returned.</span>
+<a name="l00357"></a><a class="code" href="classllvm_1_1AttrListPtr.html#a3e508c92ff04476e16c9738dc2197e73">00357</a> <span class="comment"></span>  <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> <a class="code" href="classllvm_1_1AttrListPtr.html#a3e508c92ff04476e16c9738dc2197e73">getParamAttributes</a>(<span class="keywordtype">unsigned</span> Idx)<span class="keyword"> const </span>{
+<a name="l00358"></a>00358     <span class="keywordflow">return</span> getAttributes(Idx);
+<a name="l00359"></a>00359   }
+<a name="l00360"></a>00360 <span class="comment"></span>
+<a name="l00361"></a>00361 <span class="comment">  /// getRetAttributes - The attributes for the ret value are</span>
+<a name="l00362"></a>00362 <span class="comment">  /// returned.</span>
+<a name="l00363"></a><a class="code" href="classllvm_1_1AttrListPtr.html#a3e0d7269de82cafcae2596985b1e6fc9">00363</a> <span class="comment"></span>  <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> <a class="code" href="classllvm_1_1AttrListPtr.html#a3e0d7269de82cafcae2596985b1e6fc9">getRetAttributes</a>()<span class="keyword"> const </span>{
+<a name="l00364"></a>00364     <span class="keywordflow">return</span> getAttributes(<a class="code" href="classllvm_1_1AttrListPtr.html#ae891c2fafc52690f5192fd14b7d92866a454fc274ceb4da303c60c2a34826b085">ReturnIndex</a>);
+<a name="l00365"></a>00365   }
+<a name="l00366"></a>00366 <span class="comment"></span>
+<a name="l00367"></a>00367 <span class="comment">  /// getFnAttributes - The function attributes are returned.</span>
+<a name="l00368"></a><a class="code" href="classllvm_1_1AttrListPtr.html#a60fc14387402931888f363ed42ef909a">00368</a> <span class="comment"></span>  <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> <a class="code" href="classllvm_1_1AttrListPtr.html#a60fc14387402931888f363ed42ef909a" title="getFnAttributes - The function attributes are returned.">getFnAttributes</a>()<span class="keyword"> const </span>{
+<a name="l00369"></a>00369     <span class="keywordflow">return</span> getAttributes(<a class="code" href="classllvm_1_1AttrListPtr.html#ae891c2fafc52690f5192fd14b7d92866aa0ca5b17b28c0c286bc17f82606d5129">FunctionIndex</a>);
+<a name="l00370"></a>00370   }
+<a name="l00371"></a>00371 <span class="comment"></span>
+<a name="l00372"></a>00372 <span class="comment">  /// paramHasAttr - Return true if the specified parameter index has the</span>
+<a name="l00373"></a>00373 <span class="comment">  /// specified attribute set.</span>
+<a name="l00374"></a><a class="code" href="classllvm_1_1AttrListPtr.html#a68481ae3362f464b312d14b0fc254c30">00374</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttrListPtr.html#a68481ae3362f464b312d14b0fc254c30">paramHasAttr</a>(<span class="keywordtype">unsigned</span> Idx, <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> Attr)<span class="keyword"> const </span>{
+<a name="l00375"></a>00375     <span class="keywordflow">return</span> getAttributes(Idx).<a class="code" href="classllvm_1_1Attributes.html#ac0393170c2b76cd5e9035225d5acf2f3" title="Return true if attributes exist.">hasAttributes</a>(Attr);
+<a name="l00376"></a>00376   }
+<a name="l00377"></a>00377 <span class="comment"></span>
+<a name="l00378"></a>00378 <span class="comment">  /// getParamAlignment - Return the alignment for the specified function</span>
+<a name="l00379"></a>00379 <span class="comment">  /// parameter.</span>
+<a name="l00380"></a><a class="code" href="classllvm_1_1AttrListPtr.html#a22ef037eb2811ed054ffdb14019283cc">00380</a> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1AttrListPtr.html#a22ef037eb2811ed054ffdb14019283cc">getParamAlignment</a>(<span class="keywordtype">unsigned</span> Idx)<span class="keyword"> const </span>{
+<a name="l00381"></a>00381     <span class="keywordflow">return</span> getAttributes(Idx).<a class="code" href="classllvm_1_1Attributes.html#a8163fb423a8906c5131bfe4a47033886" title="Returns the alignment field of an attribute as a byte alignment value.">getAlignment</a>();
+<a name="l00382"></a>00382   }
+<a name="l00383"></a>00383 <span class="comment"></span>
+<a name="l00384"></a>00384 <span class="comment">  /// hasAttrSomewhere - Return true if the specified attribute is set for at</span>
+<a name="l00385"></a>00385 <span class="comment">  /// least one parameter or for the return value.</span>
+<a name="l00386"></a>00386 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttrListPtr.html#a0423c8494210567120d83beab5c7bee6">hasAttrSomewhere</a>(<a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9">Attributes::AttrVal</a> Attr) <span class="keyword">const</span>;
+<a name="l00387"></a>00387 
+<a name="l00388"></a>00388   <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1AttrListPtr.html#a7da76b0a952a596c3933bc40db7ab6e7">getNumAttrs</a>() <span class="keyword">const</span>;
+<a name="l00389"></a>00389   <a class="code" href="classllvm_1_1Attributes.html" title="Attributes - A bitset of attributes.">Attributes</a> &<a class="code" href="classllvm_1_1AttrListPtr.html#af7406fc91346468a8e7de3a1f62e66af">getAttributesAtIndex</a>(<span class="keywordtype">unsigned</span> i) <span class="keyword">const</span>;
+<a name="l00390"></a>00390 <span class="comment"></span>
+<a name="l00391"></a>00391 <span class="comment">  /// operator==/!= - Provide equality predicates.</span>
+<a name="l00392"></a><a class="code" href="classllvm_1_1AttrListPtr.html#af817910f47f29b163079cc9819095af8">00392</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttrListPtr.html#af817910f47f29b163079cc9819095af8" title="operator==/!= - Provide equality predicates.">operator==</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1AttrListPtr.html">AttrListPtr</a> &RHS)<span class="keyword"> const</span>
+<a name="l00393"></a>00393 <span class="keyword">  </span>{ <span class="keywordflow">return</span> AttrList == RHS.AttrList; }
+<a name="l00394"></a><a class="code" href="classllvm_1_1AttrListPtr.html#af9c9194c5be8302264b3f9b962912e0e">00394</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttrListPtr.html#af9c9194c5be8302264b3f9b962912e0e">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1AttrListPtr.html">AttrListPtr</a> &RHS)<span class="keyword"> const</span>
+<a name="l00395"></a>00395 <span class="keyword">  </span>{ <span class="keywordflow">return</span> AttrList != RHS.AttrList; }
+<a name="l00396"></a>00396 
+<a name="l00397"></a>00397   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00398"></a>00398   <span class="comment">// Attribute List Introspection</span>
+<a name="l00399"></a>00399   <span class="comment">//===--------------------------------------------------------------------===//</span>
+<a name="l00400"></a>00400 <span class="comment"></span>
+<a name="l00401"></a>00401 <span class="comment">  /// getRawPointer - Return a raw pointer that uniquely identifies this</span>
+<a name="l00402"></a>00402 <span class="comment">  /// attribute list.</span>
+<a name="l00403"></a><a class="code" href="classllvm_1_1AttrListPtr.html#af47711c71873400259d4d79d3e1d7890">00403</a> <span class="comment"></span>  <span class="keywordtype">void</span> *<a class="code" href="classllvm_1_1AttrListPtr.html#af47711c71873400259d4d79d3e1d7890">getRawPointer</a>()<span class="keyword"> const </span>{
+<a name="l00404"></a>00404     <span class="keywordflow">return</span> AttrList;
+<a name="l00405"></a>00405   }
+<a name="l00406"></a>00406 
+<a name="l00407"></a>00407   <span class="comment">// Attributes are stored as a dense set of slots, where there is one</span>
+<a name="l00408"></a>00408   <span class="comment">// slot for each argument that has an attribute.  This allows walking over the</span>
+<a name="l00409"></a>00409   <span class="comment">// dense set instead of walking the sparse list of attributes.</span>
+<a name="l00410"></a>00410 <span class="comment"></span>
+<a name="l00411"></a>00411 <span class="comment">  /// isEmpty - Return true if there are no attributes.</span>
+<a name="l00412"></a>00412 <span class="comment">  ///</span>
+<a name="l00413"></a><a class="code" href="classllvm_1_1AttrListPtr.html#a79030297696dc92b62cac5e9ae1e5cd0">00413</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1AttrListPtr.html#a79030297696dc92b62cac5e9ae1e5cd0">isEmpty</a>()<span class="keyword"> const </span>{
+<a name="l00414"></a>00414     <span class="keywordflow">return</span> AttrList == 0;
+<a name="l00415"></a>00415   }
+<a name="l00416"></a>00416 <span class="comment"></span>
+<a name="l00417"></a>00417 <span class="comment">  /// getNumSlots - Return the number of slots used in this attribute list.</span>
+<a name="l00418"></a>00418 <span class="comment">  /// This is the number of arguments that have an attribute set on them</span>
+<a name="l00419"></a>00419 <span class="comment">  /// (including the function itself).</span>
+<a name="l00420"></a>00420 <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1AttrListPtr.html#ad34ac4250e6efe404c9b466d1d0f1a35">getNumSlots</a>() <span class="keyword">const</span>;
+<a name="l00421"></a>00421 <span class="comment"></span>
+<a name="l00422"></a>00422 <span class="comment">  /// getSlot - Return the AttributeWithIndex at the specified slot.  This</span>
+<a name="l00423"></a>00423 <span class="comment">  /// holds a index number plus a set of attributes.</span>
+<a name="l00424"></a>00424 <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="structllvm_1_1AttributeWithIndex.html">AttributeWithIndex</a> &<a class="code" href="classllvm_1_1AttrListPtr.html#ab36f713752744b77e9f08c30e77047bf">getSlot</a>(<span class="keywordtype">unsigned</span> Slot) <span class="keyword">const</span>;
+<a name="l00425"></a>00425 
+<a name="l00426"></a>00426   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1AttrListPtr.html#a4356302adb7962fc3074b7906295b816">dump</a>() <span class="keyword">const</span>;
+<a name="l00427"></a>00427 };
+<a name="l00428"></a>00428 
+<a name="l00429"></a>00429 } <span class="comment">// End llvm namespace</span>
+<a name="l00430"></a>00430 
+<a name="l00431"></a>00431 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:32:50 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/AutoUpgrade_8h__dep__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/AutoUpgrade_8h__dep__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/AutoUpgrade_8h__dep__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/AutoUpgrade_8h__dep__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,5 @@
+<map id="G" name="G">
+<area shape="rect" href="$LLParser_8cpp.html" title="LLParser.cpp" alt="" coords="5,84,107,111"/>
+<area shape="rect" href="$BitcodeReader_8cpp.html" title="BitcodeReader.cpp" alt="" coords="131,84,269,111"/>
+<area shape="rect" href="$AutoUpgrade_8cpp.html" title="AutoUpgrade.cpp" alt="" coords="293,84,427,111"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/BarrierNoopPass_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BarrierNoopPass_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BarrierNoopPass_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BarrierNoopPass_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,86 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="BarrierNoopPass.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/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="black",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="black",URL="$PassRegistry_8h.html"];
+  Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="black",URL="$StringRef_8h.html"];
+  Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node8 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="limits",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/InitializePasses.h",height=0.2,width=0.4,color="black",URL="$InitializePasses_8h.html"];
+  Node5 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/Support/Atomic.h",height=0.2,width=0.4,color="black",URL="$Atomic_8h.html"];
+  Node21 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/Support/Valgrind.h",height=0.2,width=0.4,color="black",URL="$Valgrind_8h.html"];
+  Node22 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/Config/llvm-config.h",height=0.2,width=0.4,color="black",URL="$llvm-config_8h.html"];
+  Node22 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="stddef.h",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/PassAnalysisSupport.h",height=0.2,width=0.4,color="black",URL="$PassAnalysisSupport_8h.html"];
+  Node26 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="black",URL="$SmallVector_8h.html"];
+  Node27 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_8h.html"];
+  Node28 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node8 [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 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node27 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node27 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="memory",height=0.2,width=0.4,color="grey75"];
+  Node26 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/Transforms/IPO.h",height=0.2,width=0.4,color="black",URL="$Transforms_2IPO_8h.html"];
+  Node32 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/BasicAliasAnalysis_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BasicAliasAnalysis_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BasicAliasAnalysis_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BasicAliasAnalysis_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,716 @@
+<!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: BasicAliasAnalysis.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="#enum-members">Enumerations</a> |
+<a href="#func-members">Functions</a> |
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">BasicAliasAnalysis.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="AliasAnalysis_8h_source.html">llvm/Analysis/AliasAnalysis.h</a>"</code><br/>
+<code>#include "<a class="el" href="Analysis_2Passes_8h_source.html">llvm/Analysis/Passes.h</a>"</code><br/>
+<code>#include "<a class="el" href="Constants_8h_source.html">llvm/Constants.h</a>"</code><br/>
+<code>#include "<a class="el" href="DerivedTypes_8h_source.html">llvm/DerivedTypes.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="GlobalAlias_8h_source.html">llvm/GlobalAlias.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="Instructions_8h_source.html">llvm/Instructions.h</a>"</code><br/>
+<code>#include "<a class="el" href="IntrinsicInst_8h_source.html">llvm/IntrinsicInst.h</a>"</code><br/>
+<code>#include "<a class="el" href="LLVMContext_8h_source.html">llvm/LLVMContext.h</a>"</code><br/>
+<code>#include "<a class="el" href="Operator_8h_source.html">llvm/Operator.h</a>"</code><br/>
+<code>#include "<a class="el" href="Pass_8h_source.html">llvm/Pass.h</a>"</code><br/>
+<code>#include "<a class="el" href="CaptureTracking_8h_source.html">llvm/Analysis/CaptureTracking.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="InstructionSimplify_8h_source.html">llvm/Analysis/InstructionSimplify.h</a>"</code><br/>
+<code>#include "<a class="el" href="ValueTracking_8h_source.html">llvm/Analysis/ValueTracking.h</a>"</code><br/>
+<code>#include "<a class="el" href="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="SmallPtrSet_8h_source.html">llvm/ADT/SmallPtrSet.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallVector_8h_source.html">llvm/ADT/SmallVector.h</a>"</code><br/>
+<code>#include "<a class="el" href="ErrorHandling_8h_source.html">llvm/Support/ErrorHandling.h</a>"</code><br/>
+<code>#include "<a class="el" href="GetElementPtrTypeIterator_8h_source.html">llvm/Support/GetElementPtrTypeIterator.h</a>"</code><br/>
+<code>#include <algorithm></code><br/>
+<code>#include "llvm/Intrinsics.gen"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for BasicAliasAnalysis.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="BasicAliasAnalysis_8cpp__incl.png" border="0" usemap="#BasicAliasAnalysis_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="BasicAliasAnalysis_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="BasicAliasAnalysis_8cpp.html#a828fa83ce2466cf4fada5078d2181ed8">GET_INTRINSIC_MODREF_BEHAVIOR</a></td></tr>
+<tr><td colspan="2"><h2><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#ae98086b59cd7f2028ae4249058e3da3a">ExtensionKind</a> </td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#a305030f93ac3769d1d3f9e79b17329e5">isNonEscapingLocalObject</a> (const <a class="el" href="classllvm_1_1Value.html">Value</a> *V)</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="BasicAliasAnalysis_8cpp.html#ab0bb832d02fac3060687f324ee493bae">isEscapeSource</a> (const <a class="el" href="classllvm_1_1Value.html">Value</a> *V)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static uint64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#ac51be32f317986e8160771d19ddb4787">getObjectSize</a> (const <a class="el" href="classllvm_1_1Value.html">Value</a> *V, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD, const <a class="el" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a> &TLI, <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> RoundToAlign=<a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#a2fc22e7d88ab047fb794a9cbacac24df">isObjectSmallerThan</a> (const <a class="el" href="classllvm_1_1Value.html">Value</a> *V, uint64_t Size, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD, const <a class="el" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a> &TLI)</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="BasicAliasAnalysis_8cpp.html#a9766f05441c6cafbf90c473d80edb971">isObjectSize</a> (const <a class="el" href="classllvm_1_1Value.html">Value</a> *V, uint64_t Size, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD, const <a class="el" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a> &TLI)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1Value.html">Value</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#aafbe1e01035de0043e4ca95a3e2b0d38">GetLinearExpression</a> (<a class="el" href="classllvm_1_1Value.html">Value</a> *V, <a class="el" href="classllvm_1_1APInt.html">APInt</a> &Scale, <a class="el" href="classllvm_1_1APInt.html">APInt</a> &Offset, <a class="el" href="BasicAliasAnalysis_8cpp.html#ae98086b59cd7f2028ae4249058e3da3a">ExtensionKind</a> &Extension, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD, <a class="el" href="classunsigned.html">unsigned</a> Depth)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classllvm_1_1Value.html">Value</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#a556ef18298993e50ef4c9df48a1ebfdb">DecomposeGEPExpression</a> (const <a class="el" href="classllvm_1_1Value.html">Value</a> *V, <a class="el" href="classint64__t.html">int64_t</a> &BaseOffs, <a class="el" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a>< VariableGEPIndex > &VarIndices, 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="BasicAliasAnalysis_8cpp.html#a0d1e5cf7dc98fa165503ae6a40cd4ad9">GetIndexDifference</a> (<a class="el" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a>< VariableGEPIndex > &Dest, const <a class="el" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a>< VariableGEPIndex > &Src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classllvm_1_1Function.html">Function</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#a2675de1d8479c7b00387979714da43f7">getParent</a> (const <a class="el" href="classllvm_1_1Value.html">Value</a> *V)</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="BasicAliasAnalysis_8cpp.html#a75bdc7a047c6fe9cd26342a3819e2b25">notDifferentParent</a> (const <a class="el" href="classllvm_1_1Value.html">Value</a> *O1, const <a class="el" href="classllvm_1_1Value.html">Value</a> *O2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#a1fdf998448ddb4e8751dfefeeca53379">INITIALIZE_AG_PASS_BEGIN</a> (BasicAliasAnalysis, <a class="el" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>,"basicaa","Basic Alias Analysis (stateless AA impl)", false, <a class="el" href="LoopSimplify_8cpp.html#a13f020c6a40eb04f1b4f9ddfbb004ce0">true</a>, <a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>) INITIALIZE_AG_PASS_END(BasicAliasAnalysis</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Basic Alias </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#a99130f18ea4cacce032d9ab1f8515cca">Analysis</a> (stateless AA impl)"</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="BasicAliasAnalysis_8cpp.html#ade0c7d6903c217face5053498992da81">areVarIndicesEqual</a> (<a class="el" href="classllvm_1_1SmallVector.html">SmallVector</a>< VariableGEPIndex, 4 > &Indices1, <a class="el" href="classllvm_1_1SmallVector.html">SmallVector</a>< VariableGEPIndex, 4 > &Indices2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1AliasAnalysis.html#aa96743b70089c7a0ef5d935f34173826">AliasAnalysis::AliasResult</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#a3265b364cfdb4c06ba14b6d5d9a0500b">MergeAliasResults</a> (<a class="el" href="classllvm_1_1AliasAnalysis.html#aa96743b70089c7a0ef5d935f34173826">AliasAnalysis::AliasResult</a> A, <a class="el" href="classllvm_1_1AliasAnalysis.html#aa96743b70089c7a0ef5d935f34173826">AliasAnalysis::AliasResult</a> B)</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="BasicAliasAnalysis_8cpp.html#ad1b77598f771e74506b28a6ead5aa535">AliasAnalysis</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#ac00786e3aa2a5617246d4edc3c7226fe">basicaa</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Basic Alias </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#a807d20da74481db0021777fffe75bb59">false</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Basic Alias </td><td class="memItemRight" valign="bottom"><a class="el" href="BasicAliasAnalysis_8cpp.html#a80603f23207dd836075c078e6264204a">true</a></td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a828fa83ce2466cf4fada5078d2181ed8"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::GET_INTRINSIC_MODREF_BEHAVIOR" ref="a828fa83ce2466cf4fada5078d2181ed8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GET_INTRINSIC_MODREF_BEHAVIOR</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<hr/><h2>Enumeration Type Documentation</h2>
+<a class="anchor" id="ae98086b59cd7f2028ae4249058e3da3a"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::ExtensionKind" ref="ae98086b59cd7f2028ae4249058e3da3a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="BasicAliasAnalysis_8cpp.html#ae98086b59cd7f2028ae4249058e3da3a">ExtensionKind</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00121">121</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a99130f18ea4cacce032d9ab1f8515cca"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::Analysis" ref="a99130f18ea4cacce032d9ab1f8515cca" args="(stateless AA impl)"" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">Basic Alias Analysis </td>
+          <td>(</td>
+          <td class="paramtype">stateless AA </td>
+          <td class="paramname"><em>impl</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ade0c7d6903c217face5053498992da81"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::areVarIndicesEqual" ref="ade0c7d6903c217face5053498992da81" args="(SmallVector< VariableGEPIndex, 4 > &Indices1, SmallVector< VariableGEPIndex, 4 > &Indices2)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> areVarIndicesEqual </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SmallVector.html">SmallVector</a>< VariableGEPIndex, 4 > & </td>
+          <td class="paramname"><em>Indices1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SmallVector.html">SmallVector</a>< VariableGEPIndex, 4 > & </td>
+          <td class="paramname"><em>Indices2</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="BasicAliasAnalysis_8cpp_source.html#l00820">820</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, and <a class="el" href="SmallVector_8h_source.html#l00126">llvm::SmallVectorTemplateCommon< T >::size()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a556ef18298993e50ef4c9df48a1ebfdb"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::DecomposeGEPExpression" ref="a556ef18298993e50ef4c9df48a1ebfdb" args="(const Value *V, int64_t &BaseOffs, SmallVectorImpl< VariableGEPIndex > &VarIndices, const DataLayout *TD)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static const <a class="el" href="classllvm_1_1Value.html">Value</a>* DecomposeGEPExpression </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classint64__t.html">int64_t</a> & </td>
+          <td class="paramname"><em>BaseOffs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a>< VariableGEPIndex > & </td>
+          <td class="paramname"><em>VarIndices</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>DecomposeGEPExpression - If V is a symbolic pointer expression, decompose it into a base pointer with a constant offset and a number of scaled symbolic offsets.</p>
+<p>The scaled symbolic offsets (represented by pairs of a Value* and a scale in the VarIndices vector) are Value*'s that are known to be scaled by the specified amount, but which may have other unrepresented high bits. As such, the gep cannot necessarily be reconstructed from its decomposed form.</p>
+<p>When DataLayout is around, this function is capable of analyzing everything that GetUnderlyingObject can look through. When not, it just looks through pointer casts. </p>
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00234">234</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="SmallVector_8h_source.html#l00111">llvm::SmallVectorTemplateCommon< T >::begin()</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="SmallVector_8h_source.html#l00472">llvm::SmallVectorImpl< T >::erase()</a>, <a class="el" href="GetElementPtrTypeIterator_8h_source.html#l00085">llvm::gep_type_begin()</a>, <a class="el" href="ValueTracking_8cpp_source.html#l00039">getBitWidth()</a>, <a class="el" href="DataLayout_8h_source.html#l00413">llvm::StructLayout::getElementOffset()</a>, <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00152">GetLinearExpression()</a>, <a class="el" href="Operator_8h_source.html#l00049">llvm::Operator::getOpcode()</a>, <a class="el" href="User_8h_source.html#l00088">llvm::User::getOperand()</a>, <a class="el" href="DataLayout_8h_source.html#l00266">llvm::DataLayout::getPointerSizeInBits()</a>, <a class="el" href="APInt_8h_source.html#l01225">llvm::APInt:
 :getSExtValue()</a>, <a class="el" href="DataLayout_8cpp_source.html#l00462">llvm::DataLayout::getStructLayout()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="DataLayout_8h_source.html#l00308">llvm::DataLayout::getTypeAllocSize()</a>, <a class="el" href="Operator_8h_source.html#l00290">llvm::GEPOperator::hasAllZeroIndices()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="User_8h_source.html#l00116">llvm::User::op_begin()</a>, <a class="el" href="User_8h_source.html#l00118">llvm::User::op_end()</a>, <a class="el" href="SmallVector_8h_source.html#l00231">llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back()</a>, <a class="el" href="InstructionSimplify_8cpp_source.html#l02781">llvm::SimplifyInstruction()</a>, and <a class="el" href="SmallVector_8h_source.html#l00126">llvm::SmallVectorTemplateCommon< T >::size()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0d1e5cf7dc98fa165503ae6a40cd4ad9"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::GetIndexDifference" ref="a0d1e5cf7dc98fa165503ae6a40cd4ad9" args="(SmallVectorImpl< VariableGEPIndex > &Dest, const SmallVectorImpl< VariableGEPIndex > &Src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void GetIndexDifference </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a>< VariableGEPIndex > & </td>
+          <td class="paramname"><em>Dest</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a>< VariableGEPIndex > & </td>
+          <td class="paramname"><em>Src</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>GetIndexDifference - Dest and Src are the variable indices from two decomposed GetElementPtr instructions GEP1 and GEP2 which have common base pointers. Subtract the GEP2 indices from GEP1 to find the symbolic difference between the two pointers. </p>
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00371">371</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="SmallVector_8h_source.html#l00111">llvm::SmallVectorTemplateCommon< T >::begin()</a>, <a class="el" href="SmallVector_8h_source.html#l00055">llvm::SmallVectorBase::empty()</a>, <a class="el" href="SmallVector_8h_source.html#l00472">llvm::SmallVectorImpl< T >::erase()</a>, <a class="el" href="SmallVector_8h_source.html#l00231">llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back()</a>, and <a class="el" href="SmallVector_8h_source.html#l00126">llvm::SmallVectorTemplateCommon< T >::size()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aafbe1e01035de0043e4ca95a3e2b0d38"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::GetLinearExpression" ref="aafbe1e01035de0043e4ca95a3e2b0d38" args="(Value *V, APInt &Scale, APInt &Offset, ExtensionKind &Extension, const DataLayout &TD, unsigned Depth)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1Value.html">Value</a>* GetLinearExpression </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1APInt.html">APInt</a> & </td>
+          <td class="paramname"><em>Scale</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1APInt.html">APInt</a> & </td>
+          <td class="paramname"><em>Offset</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="BasicAliasAnalysis_8cpp.html#ae98086b59cd7f2028ae4249058e3da3a">ExtensionKind</a> & </td>
+          <td class="paramname"><em>Extension</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> & </td>
+          <td class="paramname"><em>TD</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Depth</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>GetLinearExpression - Analyze the specified value as a linear expression: "A*V + B", where A and B are constant integers. Return the scale and offset values as APInts and return V as a Value*, and return whether we looked through any sign or zero extends. The incoming Value is known to have IntegerType and it may already be sign or zero extended.</p>
+<p>Note that this looks through extends, so the high bits may not be represented in the result. </p>
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00152">152</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="APInt_8h_source.html#l01163">llvm::APInt::getBitWidth()</a>, <a class="el" href="APInt_8h_source.html#l00388">llvm::APInt::getLimitedValue()</a>, <a class="el" href="Type_8cpp_source.html#l00116">llvm::Type::getPrimitiveSizeInBits()</a>, <a class="el" href="Value_8h_source.html#l00106">llvm::Value::getType()</a>, <a class="el" href="Type_8h_source.html#l00180">llvm::Type::isIntegerTy()</a>, <a class="el" href="ValueTracking_8cpp_source.html#l00995">llvm::MaskedValueIsZero()</a>, <a class="el" href="APInt_8h_source.html#l01765">llvm::APIntOps::Or()</a>, <a class="el" href="APInt_8cpp_source.html#l00919">llvm::APInt::trunc()</a>, and <a class="el" href="APInt_8cpp_source.html#l00983">llvm::APInt::zext()</a>.</p>
+
+<p>Referenced by <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00234">DecomposeGEPExpression()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac51be32f317986e8160771d19ddb4787"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::getObjectSize" ref="ac51be32f317986e8160771d19ddb4787" args="(const Value *V, const DataLayout &TD, const TargetLibraryInfo &TLI, bool RoundToAlign=false)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static uint64_t getObjectSize </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> & </td>
+          <td class="paramname"><em>TD</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a> & </td>
+          <td class="paramname"><em>TLI</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>RoundToAlign</em> = <code><a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a></code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>getObjectSize - Return the size of the object specified by V, or UnknownSize if unknown. </p>
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00087">87</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="MemoryBuiltins_8cpp_source.html#l00344">llvm::getObjectSize()</a>, and <a class="el" href="AliasAnalysis_8h_source.html#l00084">llvm::AliasAnalysis::UnknownSize</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2675de1d8479c7b00387979714da43f7"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::getParent" ref="a2675de1d8479c7b00387979714da43f7" args="(const Value *V)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static const <a class="el" href="classllvm_1_1Function.html">Function</a>* getParent </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00408">408</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="GlobalValue_8h_source.html#l00286">llvm::GlobalValue::getParent()</a>.</p>
+
+<p>Referenced by <a class="el" href="LiveVariables_8cpp_source.html#l00060">llvm::LiveVariables::VarInfo::findKill()</a>, <a class="el" href="LoopInfo_8cpp_source.html#l00175">llvm::Loop::isLCSSAForm()</a>, <a class="el" href="Core_8cpp_source.html#l01507">LLVMGetBasicBlockParent()</a>, <a class="el" href="Core_8cpp_source.html#l01082">LLVMGetGlobalParent()</a>, <a class="el" href="Core_8cpp_source.html#l01601">LLVMGetInstructionParent()</a>, <a class="el" href="Core_8cpp_source.html#l01430">LLVMGetParamParent()</a>, <a class="el" href="NVPTXISelLowering_8cpp_source.html#l00967">llvm::NVPTXTargetLowering::LowerFormalArguments()</a>, <a class="el" href="PHITransAddr_8h_source.html#l00058">llvm::PHITransAddr::NeedsPHITranslationFromBlock()</a>, <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00418">notDifferentParent()</a>, <a class="el" href="RegionIterator_8h_source.html#l00147">llvm::RNSuccIterator< NodeType >::operator=()</a>, <a class="el" href="Local_8cpp_
 source.html#l00590">llvm::TryToSimplifyUncondBranchFromEmptyBlock()</a>, and <a class="el" href="LoopInfoImpl_8h_source.html#l00236">llvm::LoopBase< BlockT, LoopT >::verifyLoop()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1fdf998448ddb4e8751dfefeeca53379"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::INITIALIZE_AG_PASS_BEGIN" ref="a1fdf998448ddb4e8751dfefeeca53379" args="(BasicAliasAnalysis, AliasAnalysis,"basicaa","Basic Alias Analysis (stateless AA impl)", false, true, false) INITIALIZE_AG_PASS_END(BasicAliasAnalysis" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">INITIALIZE_AG_PASS_BEGIN </td>
+          <td>(</td>
+          <td class="paramtype">BasicAliasAnalysis </td>
+          <td class="paramname">, </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">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"basicaa" </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Basic Alias Analysis (stateless AA impl)" </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 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="ab0bb832d02fac3060687f324ee493bae"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::isEscapeSource" ref="ab0bb832d02fac3060687f324ee493bae" args="(const Value *V)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isEscapeSource </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>isEscapeSource - Return true if the pointer is one which would have been considered an escape by isNonEscapingLocalObject. </p>
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00072">72</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a305030f93ac3769d1d3f9e79b17329e5"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::isNonEscapingLocalObject" ref="a305030f93ac3769d1d3f9e79b17329e5" args="(const Value *V)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isNonEscapingLocalObject </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>isNonEscapingLocalObject - Return true if the pointer is to a function-local object that never escapes from the function. </p>
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00047">47</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="ARMBaseInfo_8h_source.html#l00098">llvm::ARM_PROC::A</a>, <a class="el" href="AliasAnalysis_8cpp_source.html#l00503">llvm::isNoAliasCall()</a>, and <a class="el" href="CaptureTracking_8cpp_source.html#l00056">llvm::PointerMayBeCaptured()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9766f05441c6cafbf90c473d80edb971"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::isObjectSize" ref="a9766f05441c6cafbf90c473d80edb971" args="(const Value *V, uint64_t Size, const DataLayout &TD, const TargetLibraryInfo &TLI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isObjectSize </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>Size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> & </td>
+          <td class="paramname"><em>TD</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a> & </td>
+          <td class="paramname"><em>TLI</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>isObjectSize - Return true if we can prove that the object specified by V has size Size. </p>
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00110">110</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="MemoryBuiltins_8cpp_source.html#l00344">llvm::getObjectSize()</a>, and <a class="el" href="AliasAnalysis_8h_source.html#l00084">llvm::AliasAnalysis::UnknownSize</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2fc22e7d88ab047fb794a9cbacac24df"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::isObjectSmallerThan" ref="a2fc22e7d88ab047fb794a9cbacac24df" args="(const Value *V, uint64_t Size, const DataLayout &TD, const TargetLibraryInfo &TLI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isObjectSmallerThan </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>Size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> & </td>
+          <td class="paramname"><em>TD</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a> & </td>
+          <td class="paramname"><em>TLI</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>isObjectSmallerThan - Return true if we can prove that the object specified by V is smaller than Size. </p>
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00098">98</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="MemoryBuiltins_8cpp_source.html#l00344">llvm::getObjectSize()</a>, and <a class="el" href="AliasAnalysis_8h_source.html#l00084">llvm::AliasAnalysis::UnknownSize</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3265b364cfdb4c06ba14b6d5d9a0500b"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::MergeAliasResults" ref="a3265b364cfdb4c06ba14b6d5d9a0500b" args="(AliasAnalysis::AliasResult A, AliasAnalysis::AliasResult B)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1AliasAnalysis.html#aa96743b70089c7a0ef5d935f34173826">AliasAnalysis::AliasResult</a> MergeAliasResults </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AliasAnalysis.html#aa96743b70089c7a0ef5d935f34173826">AliasAnalysis::AliasResult</a> </td>
+          <td class="paramname"><em>A</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AliasAnalysis.html#aa96743b70089c7a0ef5d935f34173826">AliasAnalysis::AliasResult</a> </td>
+          <td class="paramname"><em>B</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="BasicAliasAnalysis_8cpp_source.html#l01005">1005</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="ARMBaseInfo_8h_source.html#l00098">llvm::ARM_PROC::A</a>, <a class="el" href="AliasAnalysis_8h_source.html#l00163">llvm::AliasAnalysis::MayAlias</a>, <a class="el" href="AliasAnalysis_8h_source.html#l00165">llvm::AliasAnalysis::MustAlias</a>, and <a class="el" href="AliasAnalysis_8h_source.html#l00164">llvm::AliasAnalysis::PartialAlias</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a75bdc7a047c6fe9cd26342a3819e2b25"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::notDifferentParent" ref="a75bdc7a047c6fe9cd26342a3819e2b25" args="(const Value *O1, const Value *O2)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> notDifferentParent </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>O1</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>O2</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="BasicAliasAnalysis_8cpp_source.html#l00418">418</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+<p>References <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00408">getParent()</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="ad1b77598f771e74506b28a6ead5aa535"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::AliasAnalysis" ref="ad1b77598f771e74506b28a6ead5aa535" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00533">533</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac00786e3aa2a5617246d4edc3c7226fe"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::basicaa" ref="ac00786e3aa2a5617246d4edc3c7226fe" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="BasicAliasAnalysis_8cpp.html#ac00786e3aa2a5617246d4edc3c7226fe">basicaa</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00533">533</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a807d20da74481db0021777fffe75bb59"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::false" ref="a807d20da74481db0021777fffe75bb59" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">Basic Alias <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="BasicAliasAnalysis_8cpp_source.html#l00535">535</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a80603f23207dd836075c078e6264204a"></a><!-- doxytag: member="BasicAliasAnalysis.cpp::true" ref="a80603f23207dd836075c078e6264204a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">Basic Alias <a class="el" href="LoopSimplify_8cpp.html#a13f020c6a40eb04f1b4f9ddfbb004ce0">true</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="BasicAliasAnalysis_8cpp_source.html#l00535">535</a> of file <a class="el" href="BasicAliasAnalysis_8cpp_source.html">BasicAliasAnalysis.cpp</a>.</p>
+
+<p>Referenced by <a class="el" href="ARMISelLowering_8cpp_source.html#l08902">PerformSELECT_CCCombine()</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:27 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/BasicAliasAnalysis_8cpp__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BasicAliasAnalysis_8cpp__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

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

Added: www-releases/trunk/3.2/docs/doxygen/html/BasicBlockUtils_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BasicBlockUtils_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BasicBlockUtils_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BasicBlockUtils_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,290 @@
+<!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: BasicBlockUtils.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+      <li class="navelem"><a class="el" href="dir_5c61f109262ee79315cb0ac1a5e1be6f.html">Transforms</a>      </li>
+      <li class="navelem"><a class="el" href="dir_281a58b14cc8f76e4a094a720e66e337.html">Utils</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">BasicBlockUtils.h</div>  </div>
+</div>
+<div class="contents">
+<a href="BasicBlockUtils_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- Transform/Utils/BasicBlockUtils.h - BasicBlock Utils ----*- C++ -*-===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This family of functions perform manipulations on basic blocks, and</span>
+<a name="l00011"></a>00011 <span class="comment">// instructions contained within basic blocks.</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_TRANSFORMS_UTILS_BASICBLOCK_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_TRANSFORMS_UTILS_BASICBLOCK_H</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span>
+<a name="l00018"></a>00018 <span class="comment">// FIXME: Move to this file: BasicBlock::removePredecessor, BB::splitBasicBlock</span>
+<a name="l00019"></a>00019 
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="BasicBlock_8h.html">llvm/BasicBlock.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="CFG_8h.html">llvm/Support/CFG.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="DebugLoc_8h.html">llvm/Support/DebugLoc.h</a>"</span>
+<a name="l00023"></a>00023 
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>llvm {
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="keyword">class </span><a class="code" href="BasicAliasAnalysis_8cpp.html#ad1b77598f771e74506b28a6ead5aa535">AliasAnalysis</a>;
+<a name="l00027"></a>00027 <span class="keyword">class </span>Instruction;
+<a name="l00028"></a>00028 <span class="keyword">class </span>MDNode;
+<a name="l00029"></a>00029 <span class="keyword">class </span>Pass;
+<a name="l00030"></a>00030 <span class="keyword">class </span>ReturnInst;
+<a name="l00031"></a>00031 <span class="keyword">class </span>TargetLibraryInfo;
+<a name="l00032"></a>00032 <span class="keyword">class </span>TerminatorInst;
+<a name="l00033"></a>00033 <span class="comment"></span>
+<a name="l00034"></a>00034 <span class="comment">/// DeleteDeadBlock - Delete the specified block, which must have no</span>
+<a name="l00035"></a>00035 <span class="comment">/// predecessors.</span>
+<a name="l00036"></a>00036 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#a9d7d0a4008434561f28c20126b992b89">DeleteDeadBlock</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB);
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038 <span class="comment"></span>
+<a name="l00039"></a>00039 <span class="comment">/// FoldSingleEntryPHINodes - We know that BB has one predecessor.  If there are</span>
+<a name="l00040"></a>00040 <span class="comment">/// any single-entry PHI nodes in it, fold them away.  This handles the case</span>
+<a name="l00041"></a>00041 <span class="comment">/// when all entries to the PHI nodes in a block are guaranteed equal, such as</span>
+<a name="l00042"></a>00042 <span class="comment">/// when the block has exactly one predecessor.</span>
+<a name="l00043"></a>00043 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#a877641e6e9032688e668adb7dcca7536">FoldSingleEntryPHINodes</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB, Pass *P = 0);
+<a name="l00044"></a>00044 <span class="comment"></span>
+<a name="l00045"></a>00045 <span class="comment">/// DeleteDeadPHIs - Examine each PHI in the given block and delete it if it</span>
+<a name="l00046"></a>00046 <span class="comment">/// is dead. Also recursively delete any operands that become dead as</span>
+<a name="l00047"></a>00047 <span class="comment">/// a result. This includes tracing the def-use list from the PHI to see if</span>
+<a name="l00048"></a>00048 <span class="comment">/// it is ultimately unused or if it reaches an unused cycle. Return true</span>
+<a name="l00049"></a>00049 <span class="comment">/// if any PHIs were deleted.</span>
+<a name="l00050"></a>00050 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#af44ceebb0726227cf82bd54a0bc286fa">DeleteDeadPHIs</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB, <span class="keyword">const</span> TargetLibraryInfo *TLI = 0);
+<a name="l00051"></a>00051 <span class="comment"></span>
+<a name="l00052"></a>00052 <span class="comment">/// MergeBlockIntoPredecessor - Attempts to merge a block into its predecessor,</span>
+<a name="l00053"></a>00053 <span class="comment">/// if possible.  The return value indicates success or failure.</span>
+<a name="l00054"></a>00054 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#a0f249e36f196bbea3e4178ad0793544d">MergeBlockIntoPredecessor</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB, Pass *P = 0);
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056 <span class="comment">// ReplaceInstWithValue - Replace all uses of an instruction (specified by BI)</span>
+<a name="l00057"></a>00057 <span class="comment">// with a value, then remove and delete the original instruction.</span>
+<a name="l00058"></a>00058 <span class="comment">//</span>
+<a name="l00059"></a>00059 <span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#a61aae2c2da42995f55a12f0467e3053f">ReplaceInstWithValue</a>(<a class="code" href="classllvm_1_1BasicBlock.html#a8a4d005408eb16582a6526745590cf54">BasicBlock::InstListType</a> &BIL,
+<a name="l00060"></a>00060                           <a class="code" href="classllvm_1_1BasicBlock.html#a1445356b70fbb95acc5e0d3d2ac9101c" title="Instruction iterators...">BasicBlock::iterator</a> &BI, Value *V);
+<a name="l00061"></a>00061 
+<a name="l00062"></a>00062 <span class="comment">// ReplaceInstWithInst - Replace the instruction specified by BI with the</span>
+<a name="l00063"></a>00063 <span class="comment">// instruction specified by I.  The original instruction is deleted and BI is</span>
+<a name="l00064"></a>00064 <span class="comment">// updated to point to the new instruction.</span>
+<a name="l00065"></a>00065 <span class="comment">//</span>
+<a name="l00066"></a>00066 <span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#aa6aa39b86007ee97f50248d2fb1b7220">ReplaceInstWithInst</a>(<a class="code" href="classllvm_1_1BasicBlock.html#a8a4d005408eb16582a6526745590cf54">BasicBlock::InstListType</a> &BIL,
+<a name="l00067"></a>00067                          <a class="code" href="classllvm_1_1BasicBlock.html#a1445356b70fbb95acc5e0d3d2ac9101c" title="Instruction iterators...">BasicBlock::iterator</a> &BI, Instruction *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069 <span class="comment">// ReplaceInstWithInst - Replace the instruction specified by From with the</span>
+<a name="l00070"></a>00070 <span class="comment">// instruction specified by To.</span>
+<a name="l00071"></a>00071 <span class="comment">//</span>
+<a name="l00072"></a>00072 <span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#aa6aa39b86007ee97f50248d2fb1b7220">ReplaceInstWithInst</a>(Instruction *From, Instruction *To);
+<a name="l00073"></a>00073 <span class="comment"></span>
+<a name="l00074"></a>00074 <span class="comment">/// FindFunctionBackedges - Analyze the specified function to find all of the</span>
+<a name="l00075"></a>00075 <span class="comment">/// loop backedges in the function and return them.  This is a relatively cheap</span>
+<a name="l00076"></a>00076 <span class="comment">/// (compared to computing dominators and loop info) analysis.</span>
+<a name="l00077"></a>00077 <span class="comment">///</span>
+<a name="l00078"></a>00078 <span class="comment">/// The output is added to Result, as pairs of <from,to> edge info.</span>
+<a name="l00079"></a>00079 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#aec1d6e397956b9f5fa62416d0beba785">FindFunctionBackedges</a>(<span class="keyword">const</span> Function &<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>,
+<a name="l00080"></a>00080       SmallVectorImpl<std::pair<const BasicBlock*,const BasicBlock*> > &Result);
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082 <span class="comment"></span>
+<a name="l00083"></a>00083 <span class="comment">/// GetSuccessorNumber - Search for the specified successor of basic block BB</span>
+<a name="l00084"></a>00084 <span class="comment">/// and return its position in the terminator instruction's list of</span>
+<a name="l00085"></a>00085 <span class="comment">/// successors.  It is an error to call this with a block that is not a</span>
+<a name="l00086"></a>00086 <span class="comment">/// successor.</span>
+<a name="l00087"></a>00087 <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="namespacellvm.html#ad8c05603cdeedfb0ca29aeaa551f1206">GetSuccessorNumber</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB, <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *Succ);
+<a name="l00088"></a>00088 <span class="comment"></span>
+<a name="l00089"></a>00089 <span class="comment">/// isCriticalEdge - Return true if the specified edge is a critical edge.</span>
+<a name="l00090"></a>00090 <span class="comment">/// Critical edges are edges from a block with multiple successors to a block</span>
+<a name="l00091"></a>00091 <span class="comment">/// with multiple predecessors.</span>
+<a name="l00092"></a>00092 <span class="comment">///</span>
+<a name="l00093"></a>00093 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#add821dcb197999d4b14c33ee49e74b51">isCriticalEdge</a>(<span class="keyword">const</span> TerminatorInst *TI, <span class="keywordtype">unsigned</span> SuccNum,
+<a name="l00094"></a>00094                     <span class="keywordtype">bool</span> AllowIdenticalEdges = <span class="keyword">false</span>);
+<a name="l00095"></a>00095 <span class="comment"></span>
+<a name="l00096"></a>00096 <span class="comment">/// SplitCriticalEdge - If this edge is a critical edge, insert a new node to</span>
+<a name="l00097"></a>00097 <span class="comment">/// split the critical edge.  This will update DominatorTree and</span>
+<a name="l00098"></a>00098 <span class="comment">/// DominatorFrontier information if it is available, thus calling this pass</span>
+<a name="l00099"></a>00099 <span class="comment">/// will not invalidate either of them. This returns the new block if the edge</span>
+<a name="l00100"></a>00100 <span class="comment">/// was split, null otherwise.</span>
+<a name="l00101"></a>00101 <span class="comment">///</span>
+<a name="l00102"></a>00102 <span class="comment">/// If MergeIdenticalEdges is true (not the default), *all* edges from TI to the</span>
+<a name="l00103"></a>00103 <span class="comment">/// specified successor will be merged into the same critical edge block.</span>
+<a name="l00104"></a>00104 <span class="comment">/// This is most commonly interesting with switch instructions, which may</span>
+<a name="l00105"></a>00105 <span class="comment">/// have many edges to any one destination.  This ensures that all edges to that</span>
+<a name="l00106"></a>00106 <span class="comment">/// dest go to one block instead of each going to a different block, but isn't</span>
+<a name="l00107"></a>00107 <span class="comment">/// the standard definition of a "critical edge".</span>
+<a name="l00108"></a>00108 <span class="comment">///</span>
+<a name="l00109"></a>00109 <span class="comment">/// It is invalid to call this function on a critical edge that starts at an</span>
+<a name="l00110"></a>00110 <span class="comment">/// IndirectBrInst.  Splitting these edges will almost always create an invalid</span>
+<a name="l00111"></a>00111 <span class="comment">/// program because the address of the new block won't be the one that is jumped</span>
+<a name="l00112"></a>00112 <span class="comment">/// to.</span>
+<a name="l00113"></a>00113 <span class="comment">///</span>
+<a name="l00114"></a>00114 <span class="comment"></span><a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *<a class="code" href="namespacellvm.html#afa6abaa0eea3b2083902cf651a9653b1">SplitCriticalEdge</a>(TerminatorInst *TI, <span class="keywordtype">unsigned</span> SuccNum,
+<a name="l00115"></a>00115                               Pass *P = 0, <span class="keywordtype">bool</span> MergeIdenticalEdges = <span class="keyword">false</span>,
+<a name="l00116"></a>00116                               <span class="keywordtype">bool</span> DontDeleteUselessPHIs = <span class="keyword">false</span>,
+<a name="l00117"></a>00117                               <span class="keywordtype">bool</span> SplitLandingPads = <span class="keyword">false</span>);
+<a name="l00118"></a>00118 
+<a name="l00119"></a><a class="code" href="namespacellvm.html#a7b5c93fdb5e6862993a0b3108ba4b052">00119</a> <span class="keyword">inline</span> <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *<a class="code" href="namespacellvm.html#afa6abaa0eea3b2083902cf651a9653b1">SplitCriticalEdge</a>(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB, <a class="code" href="classllvm_1_1SuccIterator.html">succ_iterator</a> SI,
+<a name="l00120"></a>00120                                      <a class="code" href="classllvm_1_1Pass.html">Pass</a> *P = 0) {
+<a name="l00121"></a>00121   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#afa6abaa0eea3b2083902cf651a9653b1">SplitCriticalEdge</a>(BB-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>(), SI.<a class="code" href="classllvm_1_1SuccIterator.html#afd59a19c44490ae94df3fb9650683507">getSuccessorIndex</a>(), P);
+<a name="l00122"></a>00122 }
+<a name="l00123"></a>00123 <span class="comment"></span>
+<a name="l00124"></a>00124 <span class="comment">/// SplitCriticalEdge - If the edge from *PI to BB is not critical, return</span>
+<a name="l00125"></a>00125 <span class="comment">/// false.  Otherwise, split all edges between the two blocks and return true.</span>
+<a name="l00126"></a>00126 <span class="comment">/// This updates all of the same analyses as the other SplitCriticalEdge</span>
+<a name="l00127"></a>00127 <span class="comment">/// function.  If P is specified, it updates the analyses</span>
+<a name="l00128"></a>00128 <span class="comment">/// described above.</span>
+<a name="l00129"></a><a class="code" href="namespacellvm.html#ae795c21b8d12845f798d6c82ba99a84c">00129</a> <span class="comment"></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#afa6abaa0eea3b2083902cf651a9653b1">SplitCriticalEdge</a>(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Succ, <a class="code" href="classllvm_1_1PredIterator.html">pred_iterator</a> PI, <a class="code" href="classllvm_1_1Pass.html">Pass</a> *P = 0) {
+<a name="l00130"></a>00130   <span class="keywordtype">bool</span> MadeChange = <span class="keyword">false</span>;
+<a name="l00131"></a>00131   <a class="code" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> *TI = (*PI)->getTerminator();
+<a name="l00132"></a>00132   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = TI-><a class="code" href="classllvm_1_1TerminatorInst.html#a4c26d3b92af99a6c8defd89a2d39ca32">getNumSuccessors</a>(); i != e; ++i)
+<a name="l00133"></a>00133     <span class="keywordflow">if</span> (TI-><a class="code" href="classllvm_1_1TerminatorInst.html#a3aac3b6c36415a2b08f65ead9e3e51e7">getSuccessor</a>(i) == Succ)
+<a name="l00134"></a>00134       MadeChange |= !!<a class="code" href="namespacellvm.html#afa6abaa0eea3b2083902cf651a9653b1">SplitCriticalEdge</a>(TI, i, P);
+<a name="l00135"></a>00135   <span class="keywordflow">return</span> MadeChange;
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137 <span class="comment"></span>
+<a name="l00138"></a>00138 <span class="comment">/// SplitCriticalEdge - If an edge from Src to Dst is critical, split the edge</span>
+<a name="l00139"></a>00139 <span class="comment">/// and return true, otherwise return false.  This method requires that there be</span>
+<a name="l00140"></a>00140 <span class="comment">/// an edge between the two blocks.  If P is specified, it updates the analyses</span>
+<a name="l00141"></a>00141 <span class="comment">/// described above.</span>
+<a name="l00142"></a><a class="code" href="namespacellvm.html#a53f2ee7933231bec8461b281401264e7">00142</a> <span class="comment"></span><span class="keyword">inline</span> <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *<a class="code" href="namespacellvm.html#afa6abaa0eea3b2083902cf651a9653b1">SplitCriticalEdge</a>(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Src, <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Dst,
+<a name="l00143"></a>00143                                      <a class="code" href="classllvm_1_1Pass.html">Pass</a> *P = 0,
+<a name="l00144"></a>00144                                      <span class="keywordtype">bool</span> MergeIdenticalEdges = <span class="keyword">false</span>,
+<a name="l00145"></a>00145                                      <span class="keywordtype">bool</span> DontDeleteUselessPHIs = <span class="keyword">false</span>) {
+<a name="l00146"></a>00146   <a class="code" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> *TI = Src-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>();
+<a name="l00147"></a>00147   <span class="keywordtype">unsigned</span> i = 0;
+<a name="l00148"></a>00148   <span class="keywordflow">while</span> (1) {
+<a name="l00149"></a>00149     assert(i != TI-><a class="code" href="classllvm_1_1TerminatorInst.html#a4c26d3b92af99a6c8defd89a2d39ca32">getNumSuccessors</a>() && <span class="stringliteral">"Edge doesn't exist!"</span>);
+<a name="l00150"></a>00150     <span class="keywordflow">if</span> (TI-><a class="code" href="classllvm_1_1TerminatorInst.html#a3aac3b6c36415a2b08f65ead9e3e51e7">getSuccessor</a>(i) == Dst)
+<a name="l00151"></a>00151       <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#afa6abaa0eea3b2083902cf651a9653b1">SplitCriticalEdge</a>(TI, i, P, MergeIdenticalEdges,
+<a name="l00152"></a>00152                                DontDeleteUselessPHIs);
+<a name="l00153"></a>00153     ++i;
+<a name="l00154"></a>00154   }
+<a name="l00155"></a>00155 }
+<a name="l00156"></a>00156 <span class="comment"></span>
+<a name="l00157"></a>00157 <span class="comment">/// SplitEdge -  Split the edge connecting specified block. Pass P must</span>
+<a name="l00158"></a>00158 <span class="comment">/// not be NULL.</span>
+<a name="l00159"></a>00159 <span class="comment"></span><a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *<a class="code" href="namespacellvm.html#a0a7e7f31f3da37dc95109dd1164a30b6">SplitEdge</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *From, <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *To, Pass *P);
+<a name="l00160"></a>00160 <span class="comment"></span>
+<a name="l00161"></a>00161 <span class="comment">/// SplitBlock - Split the specified block at the specified instruction - every</span>
+<a name="l00162"></a>00162 <span class="comment">/// thing before SplitPt stays in Old and everything starting with SplitPt moves</span>
+<a name="l00163"></a>00163 <span class="comment">/// to a new block.  The two blocks are joined by an unconditional branch and</span>
+<a name="l00164"></a>00164 <span class="comment">/// the loop info is updated.</span>
+<a name="l00165"></a>00165 <span class="comment">///</span>
+<a name="l00166"></a>00166 <span class="comment"></span><a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *<a class="code" href="namespacellvm.html#ad8209e4dff0e2440ea41cefb1cfb146e">SplitBlock</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *Old, Instruction *SplitPt, Pass *P);
+<a name="l00167"></a>00167 <span class="comment"></span>
+<a name="l00168"></a>00168 <span class="comment">/// SplitBlockPredecessors - This method transforms BB by introducing a new</span>
+<a name="l00169"></a>00169 <span class="comment">/// basic block into the function, and moving some of the predecessors of BB to</span>
+<a name="l00170"></a>00170 <span class="comment">/// be predecessors of the new block.  The new predecessors are indicated by the</span>
+<a name="l00171"></a>00171 <span class="comment">/// Preds array, which has NumPreds elements in it.  The new block is given a</span>
+<a name="l00172"></a>00172 <span class="comment">/// suffix of 'Suffix'.  This function returns the new block.</span>
+<a name="l00173"></a>00173 <span class="comment">///</span>
+<a name="l00174"></a>00174 <span class="comment">/// This currently updates the LLVM IR, AliasAnalysis, DominatorTree,</span>
+<a name="l00175"></a>00175 <span class="comment">/// DominanceFrontier, LoopInfo, and LCCSA but no other analyses.</span>
+<a name="l00176"></a>00176 <span class="comment">/// In particular, it does not preserve LoopSimplify (because it's</span>
+<a name="l00177"></a>00177 <span class="comment">/// complicated to handle the case where one of the edges being split</span>
+<a name="l00178"></a>00178 <span class="comment">/// is an exit of a loop with other exits).</span>
+<a name="l00179"></a>00179 <span class="comment">///</span>
+<a name="l00180"></a>00180 <span class="comment"></span><a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *<a class="code" href="namespacellvm.html#a55e3df77bb47f39e077b6a4e7e00bb03">SplitBlockPredecessors</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB, ArrayRef<BasicBlock*> Preds,
+<a name="l00181"></a>00181                                    <span class="keyword">const</span> <span class="keywordtype">char</span> *Suffix, Pass *P = 0);
+<a name="l00182"></a>00182 <span class="comment"></span>
+<a name="l00183"></a>00183 <span class="comment">/// SplitLandingPadPredecessors - This method transforms the landing pad,</span>
+<a name="l00184"></a>00184 <span class="comment">/// OrigBB, by introducing two new basic blocks into the function. One of those</span>
+<a name="l00185"></a>00185 <span class="comment">/// new basic blocks gets the predecessors listed in Preds. The other basic</span>
+<a name="l00186"></a>00186 <span class="comment">/// block gets the remaining predecessors of OrigBB. The landingpad instruction</span>
+<a name="l00187"></a>00187 <span class="comment">/// OrigBB is clone into both of the new basic blocks. The new blocks are given</span>
+<a name="l00188"></a>00188 <span class="comment">/// the suffixes 'Suffix1' and 'Suffix2', and are returned in the NewBBs vector.</span>
+<a name="l00189"></a>00189 <span class="comment">///</span>
+<a name="l00190"></a>00190 <span class="comment">/// This currently updates the LLVM IR, AliasAnalysis, DominatorTree,</span>
+<a name="l00191"></a>00191 <span class="comment">/// DominanceFrontier, LoopInfo, and LCCSA but no other analyses. In particular,</span>
+<a name="l00192"></a>00192 <span class="comment">/// it does not preserve LoopSimplify (because it's complicated to handle the</span>
+<a name="l00193"></a>00193 <span class="comment">/// case where one of the edges being split is an exit of a loop with other</span>
+<a name="l00194"></a>00194 <span class="comment">/// exits).</span>
+<a name="l00195"></a>00195 <span class="comment">///</span>
+<a name="l00196"></a>00196 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#a02c38c380d809959819ff729cc158cee">SplitLandingPadPredecessors</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *OrigBB,ArrayRef<BasicBlock*> Preds,
+<a name="l00197"></a>00197                                  <span class="keyword">const</span> <span class="keywordtype">char</span> *Suffix, <span class="keyword">const</span> <span class="keywordtype">char</span> *Suffix2,
+<a name="l00198"></a>00198                                  Pass *P, SmallVectorImpl<BasicBlock*> &NewBBs);
+<a name="l00199"></a>00199 <span class="comment"></span>
+<a name="l00200"></a>00200 <span class="comment">/// FoldReturnIntoUncondBranch - This method duplicates the specified return</span>
+<a name="l00201"></a>00201 <span class="comment">/// instruction into a predecessor which ends in an unconditional branch. If</span>
+<a name="l00202"></a>00202 <span class="comment">/// the return instruction returns a value defined by a PHI, propagate the</span>
+<a name="l00203"></a>00203 <span class="comment">/// right value into the return. It returns the new return instruction in the</span>
+<a name="l00204"></a>00204 <span class="comment">/// predecessor.</span>
+<a name="l00205"></a>00205 <span class="comment"></span>ReturnInst *<a class="code" href="namespacellvm.html#a2b8a0d5fd8cacf34a300e31e25eaa77f">FoldReturnIntoUncondBranch</a>(ReturnInst *RI, <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB,
+<a name="l00206"></a>00206                                        <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *Pred);
+<a name="l00207"></a>00207 <span class="comment"></span>
+<a name="l00208"></a>00208 <span class="comment">/// SplitBlockAndInsertIfThen - Split the containing block at the</span>
+<a name="l00209"></a>00209 <span class="comment">/// specified instruction - everything before and including Cmp stays</span>
+<a name="l00210"></a>00210 <span class="comment">/// in the old basic block, and everything after Cmp is moved to a</span>
+<a name="l00211"></a>00211 <span class="comment">/// new block. The two blocks are connected by a conditional branch</span>
+<a name="l00212"></a>00212 <span class="comment">/// (with value of Cmp being the condition).</span>
+<a name="l00213"></a>00213 <span class="comment">/// Before:</span>
+<a name="l00214"></a>00214 <span class="comment">///   Head</span>
+<a name="l00215"></a>00215 <span class="comment">///   Cmp</span>
+<a name="l00216"></a>00216 <span class="comment">///   Tail</span>
+<a name="l00217"></a>00217 <span class="comment">/// After:</span>
+<a name="l00218"></a>00218 <span class="comment">///   Head</span>
+<a name="l00219"></a>00219 <span class="comment">///   Cmp</span>
+<a name="l00220"></a>00220 <span class="comment">///   if (Cmp)</span>
+<a name="l00221"></a>00221 <span class="comment">///     ThenBlock</span>
+<a name="l00222"></a>00222 <span class="comment">///   Tail</span>
+<a name="l00223"></a>00223 <span class="comment">///</span>
+<a name="l00224"></a>00224 <span class="comment">/// If Unreachable is true, then ThenBlock ends with</span>
+<a name="l00225"></a>00225 <span class="comment">/// UnreachableInst, otherwise it branches to Tail.</span>
+<a name="l00226"></a>00226 <span class="comment">/// Returns the NewBasicBlock's terminator.</span>
+<a name="l00227"></a>00227 <span class="comment"></span>
+<a name="l00228"></a>00228 TerminatorInst *<a class="code" href="namespacellvm.html#aec3efa15a67284b231fe0b5e6886af4e">SplitBlockAndInsertIfThen</a>(Instruction *Cmp,
+<a name="l00229"></a>00229     <span class="keywordtype">bool</span> Unreachable, MDNode *BranchWeights = 0);
+<a name="l00230"></a>00230 
+<a name="l00231"></a>00231 } <span class="comment">// End llvm namespace</span>
+<a name="l00232"></a>00232 
+<a name="l00233"></a>00233 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:32:54 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/BasicBlock_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BasicBlock_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BasicBlock_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BasicBlock_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,426 @@
+<!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: BasicBlock.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_83e3867971eec972e26e5b2c6ac80c1f.html">VMCore</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">BasicBlock.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="BasicBlock_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- BasicBlock.cpp - Implement BasicBlock related methods -------------===//</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 BasicBlock class for the VMCore library.</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="BasicBlock_8h.html">llvm/BasicBlock.h</a>"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="Constants_8h.html">llvm/Constants.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="Instructions_8h.html">llvm/Instructions.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="IntrinsicInst_8h.html">llvm/IntrinsicInst.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="LLVMContext_8h.html">llvm/LLVMContext.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="Type_8h.html">llvm/Type.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="STLExtras_8h.html">llvm/ADT/STLExtras.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="CFG_8h.html">llvm/Support/CFG.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="LeakDetector_8h.html">llvm/Support/LeakDetector.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="SymbolTableListTraitsImpl_8h.html">SymbolTableListTraitsImpl.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <algorithm></span>
+<a name="l00025"></a>00025 <span class="keyword">using namespace </span>llvm;
+<a name="l00026"></a>00026 
+<a name="l00027"></a><a class="code" href="classllvm_1_1BasicBlock.html#a4fcc523128392b84e17315b83f249ba1">00027</a> <a class="code" href="classllvm_1_1ValueSymbolTable.html">ValueSymbolTable</a> *<a class="code" href="classllvm_1_1BasicBlock.html#a4fcc523128392b84e17315b83f249ba1" title="getValueSymbolTable() - returns pointer to symbol table (if any)">BasicBlock::getValueSymbolTable</a>() {
+<a name="l00028"></a>00028   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Function.html">Function</a> *<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a> = <a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>())
+<a name="l00029"></a>00029     <span class="keywordflow">return</span> &<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>->getValueSymbolTable();
+<a name="l00030"></a>00030   <span class="keywordflow">return</span> 0;
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032 
+<a name="l00033"></a><a class="code" href="classllvm_1_1BasicBlock.html#ad652423d9d91271ba153eb86482b2f55">00033</a> <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="classllvm_1_1BasicBlock.html#ad652423d9d91271ba153eb86482b2f55" title="getContext - Get the context in which this basic block lives.">BasicBlock::getContext</a>()<span class="keyword"> const </span>{
+<a name="l00034"></a>00034   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()-><a class="code" href="classllvm_1_1Type.html#af348d5ea83429d08ba891ca3dd0e92b2" title="getContext - Return the LLVMContext in which this type was uniqued.">getContext</a>();
+<a name="l00035"></a>00035 }
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 <span class="comment">// Explicit instantiation of SymbolTableListTraits since some of the methods</span>
+<a name="l00038"></a>00038 <span class="comment">// are not in the public header file...</span>
+<a name="l00039"></a>00039 <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="classllvm_1_1SymbolTableListTraits.html">llvm::SymbolTableListTraits<Instruction, BasicBlock></a>;
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041 
+<a name="l00042"></a>00042 BasicBlock::BasicBlock(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Twine.html">Twine</a> &<a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>, <a class="code" href="classllvm_1_1Function.html">Function</a> *NewParent,
+<a name="l00043"></a>00043                        <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *InsertBefore)
+<a name="l00044"></a>00044   : <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>(<a class="code" href="classllvm_1_1Type.html">Type</a>::getLabelTy(C), <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>::BasicBlockVal), Parent(0) {
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046   <span class="comment">// Make sure that we get added to a function</span>
+<a name="l00047"></a>00047   <a class="code" href="structllvm_1_1LeakDetector.html#ac663114b8a83f00887231eda4c275630">LeakDetector::addGarbageObject</a>(<span class="keyword">this</span>);
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049   <span class="keywordflow">if</span> (InsertBefore) {
+<a name="l00050"></a>00050     assert(NewParent &&
+<a name="l00051"></a>00051            <span class="stringliteral">"Cannot insert block before another block with no function!"</span>);
+<a name="l00052"></a>00052     NewParent-><a class="code" href="classllvm_1_1Function.html#a4d34a40b2667246539b80589adf2028e">getBasicBlockList</a>().insert(InsertBefore, <span class="keyword">this</span>);
+<a name="l00053"></a>00053   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (NewParent) {
+<a name="l00054"></a>00054     NewParent-><a class="code" href="classllvm_1_1Function.html#a4d34a40b2667246539b80589adf2028e">getBasicBlockList</a>().push_back(<span class="keyword">this</span>);
+<a name="l00055"></a>00055   }
+<a name="l00056"></a>00056 
+<a name="l00057"></a>00057   <a class="code" href="classllvm_1_1Value.html#a35ee267850af7c235474a8c46c7ac5af">setName</a>(Name);
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060 
+<a name="l00061"></a><a class="code" href="classllvm_1_1BasicBlock.html#a98a03933e831cb54c02b5068ebc30478">00061</a> <a class="code" href="classllvm_1_1BasicBlock.html#a98a03933e831cb54c02b5068ebc30478">BasicBlock::~BasicBlock</a>() {
+<a name="l00062"></a>00062   <span class="comment">// If the address of the block is taken and it is being deleted (e.g. because</span>
+<a name="l00063"></a>00063   <span class="comment">// it is dead), this means that there is either a dangling constant expr</span>
+<a name="l00064"></a>00064   <span class="comment">// hanging off the block, or an undefined use of the block (source code</span>
+<a name="l00065"></a>00065   <span class="comment">// expecting the address of a label to keep the block alive even though there</span>
+<a name="l00066"></a>00066   <span class="comment">// is no indirect branch).  Handle these cases by zapping the BlockAddress</span>
+<a name="l00067"></a>00067   <span class="comment">// nodes.  There are no other possible uses at this point.</span>
+<a name="l00068"></a>00068   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1BasicBlock.html#a12fd03c41b1697fca070c12317794400">hasAddressTaken</a>()) {
+<a name="l00069"></a>00069     assert(!<a class="code" href="classllvm_1_1Value.html#ac38c53f76ef532f91f1666c8a87370e9">use_empty</a>() && <span class="stringliteral">"There should be at least one blockaddress!"</span>);
+<a name="l00070"></a>00070     <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *Replacement =
+<a name="l00071"></a>00071       <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(<a class="code" href="classllvm_1_1Type.html#a30dd396c5b40cd86c1591872e574ccdf">llvm::Type::getInt32Ty</a>(<a class="code" href="classllvm_1_1BasicBlock.html#ad652423d9d91271ba153eb86482b2f55" title="getContext - Get the context in which this basic block lives.">getContext</a>()), 1);
+<a name="l00072"></a>00072     <span class="keywordflow">while</span> (!<a class="code" href="classllvm_1_1Value.html#ac38c53f76ef532f91f1666c8a87370e9">use_empty</a>()) {
+<a name="l00073"></a>00073       <a class="code" href="classllvm_1_1BlockAddress.html">BlockAddress</a> *BA = cast<BlockAddress>(<a class="code" href="classllvm_1_1Value.html#ad9a329f9f85bc896a726a628aa3f4e9d">use_back</a>());
+<a name="l00074"></a>00074       BA-><a class="code" href="classllvm_1_1Value.html#a3ab5fc45117b450e8bb04e564cb6e5f2">replaceAllUsesWith</a>(<a class="code" href="classllvm_1_1ConstantExpr.html#a15e279291892399c141cd01c7e358cbf">ConstantExpr::getIntToPtr</a>(Replacement,
+<a name="l00075"></a>00075                                                        BA-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()));
+<a name="l00076"></a>00076       BA-><a class="code" href="classllvm_1_1BlockAddress.html#acad71b48c6fd6914a7f5a61c1b759126">destroyConstant</a>();
+<a name="l00077"></a>00077     }
+<a name="l00078"></a>00078   }
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080   assert(<a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>() == 0 && <span class="stringliteral">"BasicBlock still linked into the program!"</span>);
+<a name="l00081"></a>00081   <a class="code" href="classllvm_1_1BasicBlock.html#ab7844ce6d5301816e9a7bc21d7f08ef2">dropAllReferences</a>();
+<a name="l00082"></a>00082   InstList.<a class="code" href="classllvm_1_1iplist.html#aa38d26ad86f675d28c0e8ca881f3c03a">clear</a>();
+<a name="l00083"></a>00083 }
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085 <span class="keywordtype">void</span> BasicBlock::setParent(<a class="code" href="classllvm_1_1Function.html">Function</a> *parent) {
+<a name="l00086"></a>00086   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>())
+<a name="l00087"></a>00087     <a class="code" href="structllvm_1_1LeakDetector.html#ac663114b8a83f00887231eda4c275630">LeakDetector::addGarbageObject</a>(<span class="keyword">this</span>);
+<a name="l00088"></a>00088 
+<a name="l00089"></a>00089   <span class="comment">// Set Parent=parent, updating instruction symtab entries as appropriate.</span>
+<a name="l00090"></a>00090   InstList.<a class="code" href="classllvm_1_1SymbolTableListTraits.html#a45e44a1243f53e1203634c20a9f7067b">setSymTabObject</a>(&Parent, parent);
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>())
+<a name="l00093"></a>00093     <a class="code" href="structllvm_1_1LeakDetector.html#ab2d9306b6489721160e25bb2ae97ef9b">LeakDetector::removeGarbageObject</a>(<span class="keyword">this</span>);
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 
+<a name="l00096"></a><a class="code" href="classllvm_1_1BasicBlock.html#a629adad5a5d84929eac0f0b00132af1b">00096</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1BasicBlock.html#a629adad5a5d84929eac0f0b00132af1b">BasicBlock::removeFromParent</a>() {
+<a name="l00097"></a>00097   <a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>()-><a class="code" href="classllvm_1_1Function.html#a4d34a40b2667246539b80589adf2028e">getBasicBlockList</a>().remove(<span class="keyword">this</span>);
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099 
+<a name="l00100"></a><a class="code" href="classllvm_1_1BasicBlock.html#ace1ad5ed624dd5df8efb4eb611cb71ff">00100</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1BasicBlock.html#ace1ad5ed624dd5df8efb4eb611cb71ff">BasicBlock::eraseFromParent</a>() {
+<a name="l00101"></a>00101   <a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>()-><a class="code" href="classllvm_1_1Function.html#a4d34a40b2667246539b80589adf2028e">getBasicBlockList</a>().erase(<span class="keyword">this</span>);
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103 <span class="comment"></span>
+<a name="l00104"></a>00104 <span class="comment">/// moveBefore - Unlink this basic block from its current function and</span>
+<a name="l00105"></a>00105 <span class="comment">/// insert it into the function that MovePos lives in, right before MovePos.</span>
+<a name="l00106"></a><a class="code" href="classllvm_1_1BasicBlock.html#a41da369a9d31d911c8af724d5630f724">00106</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1BasicBlock.html#a41da369a9d31d911c8af724d5630f724">BasicBlock::moveBefore</a>(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *MovePos) {
+<a name="l00107"></a>00107   MovePos-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>()-><a class="code" href="classllvm_1_1Function.html#a4d34a40b2667246539b80589adf2028e">getBasicBlockList</a>().splice(MovePos,
+<a name="l00108"></a>00108                        <a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>()->getBasicBlockList(), <span class="keyword">this</span>);
+<a name="l00109"></a>00109 }
+<a name="l00110"></a>00110 <span class="comment"></span>
+<a name="l00111"></a>00111 <span class="comment">/// moveAfter - Unlink this basic block from its current function and</span>
+<a name="l00112"></a>00112 <span class="comment">/// insert it into the function that MovePos lives in, right after MovePos.</span>
+<a name="l00113"></a><a class="code" href="classllvm_1_1BasicBlock.html#a507bb47fc498540c91fec0bf95c25907">00113</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1BasicBlock.html#a507bb47fc498540c91fec0bf95c25907">BasicBlock::moveAfter</a>(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *MovePos) {
+<a name="l00114"></a>00114   <a class="code" href="classllvm_1_1ilist__iterator.html">Function::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = MovePos;
+<a name="l00115"></a>00115   MovePos-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>()-><a class="code" href="classllvm_1_1Function.html#a4d34a40b2667246539b80589adf2028e">getBasicBlockList</a>().splice(++I,
+<a name="l00116"></a>00116                                        <a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>()->getBasicBlockList(), <span class="keyword">this</span>);
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118 
+<a name="l00119"></a>00119 
+<a name="l00120"></a><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">00120</a> <a class="code" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> *<a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">BasicBlock::getTerminator</a>() {
+<a name="l00121"></a>00121   <span class="keywordflow">if</span> (InstList.<a class="code" href="classllvm_1_1iplist.html#a1a76ce3c5ad43da0e8083ea9ecba34a3">empty</a>()) <span class="keywordflow">return</span> 0;
+<a name="l00122"></a>00122   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a>>(&InstList.<a class="code" href="classllvm_1_1iplist.html#a9a134c441d6deccd83474b0a55e001d1">back</a>());
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 
+<a name="l00125"></a><a class="code" href="classllvm_1_1BasicBlock.html#ac5c65aa0dbac66dd87387cc0b87b6129">00125</a> <span class="keyword">const</span> <a class="code" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> *<a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">BasicBlock::getTerminator</a>()<span class="keyword"> const </span>{
+<a name="l00126"></a>00126   <span class="keywordflow">if</span> (InstList.<a class="code" href="classllvm_1_1iplist.html#a1a76ce3c5ad43da0e8083ea9ecba34a3">empty</a>()) <span class="keywordflow">return</span> 0;
+<a name="l00127"></a>00127   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a>>(&InstList.<a class="code" href="classllvm_1_1iplist.html#a9a134c441d6deccd83474b0a55e001d1">back</a>());
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129 
+<a name="l00130"></a><a class="code" href="classllvm_1_1BasicBlock.html#a0e73f4e09745bb69fdd7b15232c45428">00130</a> <a class="code" href="classllvm_1_1Instruction.html">Instruction</a>* <a class="code" href="classllvm_1_1BasicBlock.html#a0e73f4e09745bb69fdd7b15232c45428">BasicBlock::getFirstNonPHI</a>() {
+<a name="l00131"></a>00131   <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> i = <a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>();
+<a name="l00132"></a>00132   <span class="comment">// All valid basic blocks should have a terminator,</span>
+<a name="l00133"></a>00133   <span class="comment">// which is not a PHINode. If we have an invalid basic</span>
+<a name="l00134"></a>00134   <span class="comment">// block we'll get an assertion failure when dereferencing</span>
+<a name="l00135"></a>00135   <span class="comment">// a past-the-end iterator.</span>
+<a name="l00136"></a>00136   <span class="keywordflow">while</span> (isa<PHINode>(i)) ++i;
+<a name="l00137"></a>00137   <span class="keywordflow">return</span> &*i;
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 
+<a name="l00140"></a><a class="code" href="classllvm_1_1BasicBlock.html#a225cbda41f4c27fbb522833e31cb18f9">00140</a> <a class="code" href="classllvm_1_1Instruction.html">Instruction</a>* <a class="code" href="classllvm_1_1BasicBlock.html#a225cbda41f4c27fbb522833e31cb18f9">BasicBlock::getFirstNonPHIOrDbg</a>() {
+<a name="l00141"></a>00141   <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> i = <a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>();
+<a name="l00142"></a>00142   <span class="comment">// All valid basic blocks should have a terminator,</span>
+<a name="l00143"></a>00143   <span class="comment">// which is not a PHINode. If we have an invalid basic</span>
+<a name="l00144"></a>00144   <span class="comment">// block we'll get an assertion failure when dereferencing</span>
+<a name="l00145"></a>00145   <span class="comment">// a past-the-end iterator.</span>
+<a name="l00146"></a>00146   <span class="keywordflow">while</span> (isa<PHINode>(i) || isa<DbgInfoIntrinsic>(i)) ++i;
+<a name="l00147"></a>00147   <span class="keywordflow">return</span> &*i;
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149 
+<a name="l00150"></a><a class="code" href="classllvm_1_1BasicBlock.html#a00d5f71636b8a01747f15800b9a7a86a">00150</a> <a class="code" href="classllvm_1_1Instruction.html">Instruction</a>* <a class="code" href="classllvm_1_1BasicBlock.html#a00d5f71636b8a01747f15800b9a7a86a">BasicBlock::getFirstNonPHIOrDbgOrLifetime</a>() {
+<a name="l00151"></a>00151   <span class="comment">// All valid basic blocks should have a terminator,</span>
+<a name="l00152"></a>00152   <span class="comment">// which is not a PHINode. If we have an invalid basic</span>
+<a name="l00153"></a>00153   <span class="comment">// block we'll get an assertion failure when dereferencing</span>
+<a name="l00154"></a>00154   <span class="comment">// a past-the-end iterator.</span>
+<a name="l00155"></a>00155   <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> i = <a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>();
+<a name="l00156"></a>00156   <span class="keywordflow">for</span> (;; ++i) {
+<a name="l00157"></a>00157     <span class="keywordflow">if</span> (isa<PHINode>(i) || isa<DbgInfoIntrinsic>(i))
+<a name="l00158"></a>00158       <span class="keywordflow">continue</span>;
+<a name="l00159"></a>00159 
+<a name="l00160"></a>00160     <span class="keyword">const</span> <a class="code" href="classllvm_1_1IntrinsicInst.html">IntrinsicInst</a> *II = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1IntrinsicInst.html">IntrinsicInst</a>>(i);
+<a name="l00161"></a>00161     <span class="keywordflow">if</span> (!II)
+<a name="l00162"></a>00162       <span class="keywordflow">break</span>;
+<a name="l00163"></a>00163     <span class="keywordflow">if</span> (II-><a class="code" href="classllvm_1_1IntrinsicInst.html#a6cbb4809b81f3994ee0c79b38556bd66">getIntrinsicID</a>() != Intrinsic::lifetime_start &&
+<a name="l00164"></a>00164         II-><a class="code" href="classllvm_1_1IntrinsicInst.html#a6cbb4809b81f3994ee0c79b38556bd66">getIntrinsicID</a>() != Intrinsic::lifetime_end)
+<a name="l00165"></a>00165       <span class="keywordflow">break</span>;
+<a name="l00166"></a>00166   }
+<a name="l00167"></a>00167   <span class="keywordflow">return</span> &*i;
+<a name="l00168"></a>00168 }
+<a name="l00169"></a>00169 
+<a name="l00170"></a><a class="code" href="classllvm_1_1BasicBlock.html#ab1cd5a3713b93a33f89a2086d473cf6e">00170</a> <a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> <a class="code" href="classllvm_1_1BasicBlock.html#ab1cd5a3713b93a33f89a2086d473cf6e">BasicBlock::getFirstInsertionPt</a>() {
+<a name="l00171"></a>00171   <a class="code" href="classllvm_1_1ilist__iterator.html">iterator</a> InsertPt = <a class="code" href="classllvm_1_1BasicBlock.html#a0e73f4e09745bb69fdd7b15232c45428">getFirstNonPHI</a>();
+<a name="l00172"></a>00172   <span class="keywordflow">if</span> (isa<LandingPadInst>(InsertPt)) ++InsertPt;
+<a name="l00173"></a>00173   <span class="keywordflow">return</span> InsertPt;
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175 
+<a name="l00176"></a><a class="code" href="classllvm_1_1BasicBlock.html#ab7844ce6d5301816e9a7bc21d7f08ef2">00176</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1BasicBlock.html#ab7844ce6d5301816e9a7bc21d7f08ef2">BasicBlock::dropAllReferences</a>() {
+<a name="l00177"></a>00177   <span class="keywordflow">for</span>(<a class="code" href="classllvm_1_1ilist__iterator.html">iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = <a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>(), E = <a class="code" href="classllvm_1_1BasicBlock.html#a0b4e7bee9b8575cc7db73329f1a561bd">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="l00178"></a>00178     <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>->dropAllReferences();
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180 <span class="comment"></span>
+<a name="l00181"></a>00181 <span class="comment">/// getSinglePredecessor - If this basic block has a single predecessor block,</span>
+<a name="l00182"></a>00182 <span class="comment">/// return the block, otherwise return a null pointer.</span>
+<a name="l00183"></a><a class="code" href="classllvm_1_1BasicBlock.html#a5ef55181ae0bb0f5c561b9a29087b1e5">00183</a> <span class="comment"></span><a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *<a class="code" href="classllvm_1_1BasicBlock.html#a5ef55181ae0bb0f5c561b9a29087b1e5">BasicBlock::getSinglePredecessor</a>() {
+<a name="l00184"></a>00184   <a class="code" href="classllvm_1_1PredIterator.html">pred_iterator</a> PI = <a class="code" href="namespacellvm.html#a7e108932dc3da5294aed99a353aac9c4">pred_begin</a>(<span class="keyword">this</span>), E = <a class="code" href="namespacellvm.html#a5eeaf08e96168c2cac8960f87f0ef360">pred_end</a>(<span class="keyword">this</span>);
+<a name="l00185"></a>00185   <span class="keywordflow">if</span> (PI == E) <span class="keywordflow">return</span> 0;         <span class="comment">// No preds.</span>
+<a name="l00186"></a>00186   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *ThePred = *PI;
+<a name="l00187"></a>00187   ++PI;
+<a name="l00188"></a>00188   <span class="keywordflow">return</span> (PI == E) ? ThePred : 0 <span class="comment">/*multiple preds*/</span>;
+<a name="l00189"></a>00189 }
+<a name="l00190"></a>00190 <span class="comment"></span>
+<a name="l00191"></a>00191 <span class="comment">/// getUniquePredecessor - If this basic block has a unique predecessor block,</span>
+<a name="l00192"></a>00192 <span class="comment">/// return the block, otherwise return a null pointer.</span>
+<a name="l00193"></a>00193 <span class="comment">/// Note that unique predecessor doesn't mean single edge, there can be</span>
+<a name="l00194"></a>00194 <span class="comment">/// multiple edges from the unique predecessor to this block (for example</span>
+<a name="l00195"></a>00195 <span class="comment">/// a switch statement with multiple cases having the same destination).</span>
+<a name="l00196"></a><a class="code" href="classllvm_1_1BasicBlock.html#a748ffcf2c4af9d1fdb458470a4c368f9">00196</a> <span class="comment"></span><a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *<a class="code" href="classllvm_1_1BasicBlock.html#a748ffcf2c4af9d1fdb458470a4c368f9">BasicBlock::getUniquePredecessor</a>() {
+<a name="l00197"></a>00197   <a class="code" href="classllvm_1_1PredIterator.html">pred_iterator</a> PI = <a class="code" href="namespacellvm.html#a7e108932dc3da5294aed99a353aac9c4">pred_begin</a>(<span class="keyword">this</span>), E = <a class="code" href="namespacellvm.html#a5eeaf08e96168c2cac8960f87f0ef360">pred_end</a>(<span class="keyword">this</span>);
+<a name="l00198"></a>00198   <span class="keywordflow">if</span> (PI == E) <span class="keywordflow">return</span> 0; <span class="comment">// No preds.</span>
+<a name="l00199"></a>00199   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *PredBB = *PI;
+<a name="l00200"></a>00200   ++PI;
+<a name="l00201"></a>00201   <span class="keywordflow">for</span> (;PI != E; ++PI) {
+<a name="l00202"></a>00202     <span class="keywordflow">if</span> (*PI != PredBB)
+<a name="l00203"></a>00203       <span class="keywordflow">return</span> 0;
+<a name="l00204"></a>00204     <span class="comment">// The same predecessor appears multiple times in the predecessor list.</span>
+<a name="l00205"></a>00205     <span class="comment">// This is OK.</span>
+<a name="l00206"></a>00206   }
+<a name="l00207"></a>00207   <span class="keywordflow">return</span> PredBB;
+<a name="l00208"></a>00208 }
+<a name="l00209"></a>00209 <span class="comment"></span>
+<a name="l00210"></a>00210 <span class="comment">/// removePredecessor - This method is used to notify a BasicBlock that the</span>
+<a name="l00211"></a>00211 <span class="comment">/// specified Predecessor of the block is no longer able to reach it.  This is</span>
+<a name="l00212"></a>00212 <span class="comment">/// actually not used to update the Predecessor list, but is actually used to</span>
+<a name="l00213"></a>00213 <span class="comment">/// update the PHI nodes that reside in the block.  Note that this should be</span>
+<a name="l00214"></a>00214 <span class="comment">/// called while the predecessor still refers to this block.</span>
+<a name="l00215"></a>00215 <span class="comment">///</span>
+<a name="l00216"></a><a class="code" href="classllvm_1_1BasicBlock.html#a6f6763e343549d530a1424f1b24053bb">00216</a> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classllvm_1_1BasicBlock.html#a6f6763e343549d530a1424f1b24053bb">BasicBlock::removePredecessor</a>(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Pred,
+<a name="l00217"></a>00217                                    <span class="keywordtype">bool</span> DontDeleteUselessPHIs) {
+<a name="l00218"></a>00218   assert((<a class="code" href="classllvm_1_1Value.html#a9ea9a909185ecbf9fc81ab35ebfb11d6">hasNUsesOrMore</a>(16)||<span class="comment">// Reduce cost of this assertion for complex CFGs.</span>
+<a name="l00219"></a>00219           find(<a class="code" href="namespacellvm.html#a7e108932dc3da5294aed99a353aac9c4">pred_begin</a>(<span class="keyword">this</span>), <a class="code" href="namespacellvm.html#a5eeaf08e96168c2cac8960f87f0ef360">pred_end</a>(<span class="keyword">this</span>), Pred) != <a class="code" href="namespacellvm.html#a5eeaf08e96168c2cac8960f87f0ef360">pred_end</a>(<span class="keyword">this</span>)) &&
+<a name="l00220"></a>00220          <span class="stringliteral">"removePredecessor: BB is not a predecessor!"</span>);
+<a name="l00221"></a>00221 
+<a name="l00222"></a>00222   <span class="keywordflow">if</span> (InstList.<a class="code" href="classllvm_1_1iplist.html#a1a76ce3c5ad43da0e8083ea9ecba34a3">empty</a>()) <span class="keywordflow">return</span>;
+<a name="l00223"></a>00223   <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *APN = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1PHINode.html">PHINode</a>>(&<a class="code" href="classllvm_1_1BasicBlock.html#a33603355becfb1a050b62aa015c1cc57">front</a>());
+<a name="l00224"></a>00224   <span class="keywordflow">if</span> (!APN) <span class="keywordflow">return</span>;   <span class="comment">// Quick exit.</span>
+<a name="l00225"></a>00225 
+<a name="l00226"></a>00226   <span class="comment">// If there are exactly two predecessors, then we want to nuke the PHI nodes</span>
+<a name="l00227"></a>00227   <span class="comment">// altogether.  However, we cannot do this, if this in this case:</span>
+<a name="l00228"></a>00228   <span class="comment">//</span>
+<a name="l00229"></a>00229   <span class="comment">//  Loop:</span>
+<a name="l00230"></a>00230   <span class="comment">//    %x = phi [X, Loop]</span>
+<a name="l00231"></a>00231   <span class="comment">//    %x2 = add %x, 1         ;; This would become %x2 = add %x2, 1</span>
+<a name="l00232"></a>00232   <span class="comment">//    br Loop                 ;; %x2 does not dominate all uses</span>
+<a name="l00233"></a>00233   <span class="comment">//</span>
+<a name="l00234"></a>00234   <span class="comment">// This is because the PHI node input is actually taken from the predecessor</span>
+<a name="l00235"></a>00235   <span class="comment">// basic block.  The only case this can happen is with a self loop, so we</span>
+<a name="l00236"></a>00236   <span class="comment">// check for this case explicitly now.</span>
+<a name="l00237"></a>00237   <span class="comment">//</span>
+<a name="l00238"></a>00238   <span class="keywordtype">unsigned</span> max_idx = APN-><a class="code" href="classllvm_1_1PHINode.html#aa45f6c0433576e3858a6209a43750ad4">getNumIncomingValues</a>();
+<a name="l00239"></a>00239   assert(max_idx != 0 && <span class="stringliteral">"PHI Node in block with 0 predecessors!?!?!"</span>);
+<a name="l00240"></a>00240   <span class="keywordflow">if</span> (max_idx == 2) {
+<a name="l00241"></a>00241     <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Other = APN-><a class="code" href="classllvm_1_1PHINode.html#a4c25b6c00c4867281779c81ab64d2081">getIncomingBlock</a>(APN-><a class="code" href="classllvm_1_1PHINode.html#a4c25b6c00c4867281779c81ab64d2081">getIncomingBlock</a>(0) == Pred);
+<a name="l00242"></a>00242 
+<a name="l00243"></a>00243     <span class="comment">// Disable PHI elimination!</span>
+<a name="l00244"></a>00244     <span class="keywordflow">if</span> (<span class="keyword">this</span> == Other) max_idx = 3;
+<a name="l00245"></a>00245   }
+<a name="l00246"></a>00246 
+<a name="l00247"></a>00247   <span class="comment">// <= Two predecessors BEFORE I remove one?</span>
+<a name="l00248"></a>00248   <span class="keywordflow">if</span> (max_idx <= 2 && !DontDeleteUselessPHIs) {
+<a name="l00249"></a>00249     <span class="comment">// Yup, loop through and nuke the PHI nodes</span>
+<a name="l00250"></a>00250     <span class="keywordflow">while</span> (<a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *PN = dyn_cast<PHINode>(&<a class="code" href="classllvm_1_1BasicBlock.html#a33603355becfb1a050b62aa015c1cc57">front</a>())) {
+<a name="l00251"></a>00251       <span class="comment">// Remove the predecessor first.</span>
+<a name="l00252"></a>00252       PN->removeIncomingValue(Pred, !DontDeleteUselessPHIs);
+<a name="l00253"></a>00253 
+<a name="l00254"></a>00254       <span class="comment">// If the PHI _HAD_ two uses, replace PHI node with its now *single* value</span>
+<a name="l00255"></a>00255       <span class="keywordflow">if</span> (max_idx == 2) {
+<a name="l00256"></a>00256         <span class="keywordflow">if</span> (PN->getIncomingValue(0) != PN)
+<a name="l00257"></a>00257           PN->replaceAllUsesWith(PN->getIncomingValue(0));
+<a name="l00258"></a>00258         <span class="keywordflow">else</span>
+<a name="l00259"></a>00259           <span class="comment">// We are left with an infinite loop with no entries: kill the PHI.</span>
+<a name="l00260"></a>00260           PN->replaceAllUsesWith(<a class="code" href="classllvm_1_1UndefValue.html#a4ae5ff22b700a42bcc5d889233721335">UndefValue::get</a>(PN->getType()));
+<a name="l00261"></a>00261         <a class="code" href="classllvm_1_1BasicBlock.html#a531d11ba36ed48d86057d507cc8d5567">getInstList</a>().<a class="code" href="classllvm_1_1iplist.html#a8049ceb2aa2c623ca851acd569e87ad7">pop_front</a>();    <span class="comment">// Remove the PHI node</span>
+<a name="l00262"></a>00262       }
+<a name="l00263"></a>00263 
+<a name="l00264"></a>00264       <span class="comment">// If the PHI node already only had one entry, it got deleted by</span>
+<a name="l00265"></a>00265       <span class="comment">// removeIncomingValue.</span>
+<a name="l00266"></a>00266     }
+<a name="l00267"></a>00267   } <span class="keywordflow">else</span> {
+<a name="l00268"></a>00268     <span class="comment">// Okay, now we know that we need to remove predecessor #pred_idx from all</span>
+<a name="l00269"></a>00269     <span class="comment">// PHI nodes.  Iterate over each PHI node fixing them up</span>
+<a name="l00270"></a>00270     <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *PN;
+<a name="l00271"></a>00271     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">iterator</a> II = <a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>(); (PN = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1PHINode.html">PHINode</a>>(II)); ) {
+<a name="l00272"></a>00272       ++II;
+<a name="l00273"></a>00273       PN-><a class="code" href="classllvm_1_1PHINode.html#a6f01dbe965b38186b1a78378689d4105">removeIncomingValue</a>(Pred, <span class="keyword">false</span>);
+<a name="l00274"></a>00274       <span class="comment">// If all incoming values to the Phi are the same, we can replace the Phi</span>
+<a name="l00275"></a>00275       <span class="comment">// with that value.</span>
+<a name="l00276"></a>00276       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>* PNV = 0;
+<a name="l00277"></a>00277       <span class="keywordflow">if</span> (!DontDeleteUselessPHIs && (PNV = PN-><a class="code" href="classllvm_1_1PHINode.html#ab421865744bd8b5aea08be18e86c6aa5">hasConstantValue</a>()))
+<a name="l00278"></a>00278         <span class="keywordflow">if</span> (PNV != PN) {
+<a name="l00279"></a>00279           PN-><a class="code" href="classllvm_1_1Value.html#a3ab5fc45117b450e8bb04e564cb6e5f2">replaceAllUsesWith</a>(PNV);
+<a name="l00280"></a>00280           PN-><a class="code" href="classllvm_1_1Instruction.html#a6fe2f06b8a4b2c3d6308afb223a0238a">eraseFromParent</a>();
+<a name="l00281"></a>00281         }
+<a name="l00282"></a>00282     }
+<a name="l00283"></a>00283   }
+<a name="l00284"></a>00284 }
+<a name="l00285"></a>00285 
+<a name="l00286"></a>00286 <span class="comment"></span>
+<a name="l00287"></a>00287 <span class="comment">/// splitBasicBlock - This splits a basic block into two at the specified</span>
+<a name="l00288"></a>00288 <span class="comment">/// instruction.  Note that all instructions BEFORE the specified iterator stay</span>
+<a name="l00289"></a>00289 <span class="comment">/// as part of the original basic block, an unconditional branch is added to</span>
+<a name="l00290"></a>00290 <span class="comment">/// the new BB, and the rest of the instructions in the BB are moved to the new</span>
+<a name="l00291"></a>00291 <span class="comment">/// BB, including the old terminator.  This invalidates the iterator.</span>
+<a name="l00292"></a>00292 <span class="comment">///</span>
+<a name="l00293"></a>00293 <span class="comment">/// Note that this only works on well formed basic blocks (must have a</span>
+<a name="l00294"></a>00294 <span class="comment">/// terminator), and 'I' must not be the end of instruction list (which would</span>
+<a name="l00295"></a>00295 <span class="comment">/// cause a degenerate basic block to be formed, having a terminator inside of</span>
+<a name="l00296"></a>00296 <span class="comment">/// the basic block).</span>
+<a name="l00297"></a>00297 <span class="comment">///</span>
+<a name="l00298"></a><a class="code" href="classllvm_1_1BasicBlock.html#a19445f836d9e1ecb32cba27ec4338fff">00298</a> <span class="comment"></span><a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *<a class="code" href="classllvm_1_1BasicBlock.html#a19445f836d9e1ecb32cba27ec4338fff">BasicBlock::splitBasicBlock</a>(<a class="code" href="classllvm_1_1ilist__iterator.html">iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Twine.html">Twine</a> &BBName) {
+<a name="l00299"></a>00299   assert(<a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>() && <span class="stringliteral">"Can't use splitBasicBlock on degenerate BB!"</span>);
+<a name="l00300"></a>00300   assert(I != InstList.<a class="code" href="classllvm_1_1iplist.html#af752ea981a6fb9fb4f0afc46ed68cf1b">end</a>() &&
+<a name="l00301"></a>00301          <span class="stringliteral">"Trying to get me to create degenerate basic block!"</span>);
+<a name="l00302"></a>00302 
+<a name="l00303"></a>00303   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *InsertBefore = <a class="code" href="namespacellvm.html#aa1704159f75e6eacd595962ea6d93ffe">llvm::next</a>(<a class="code" href="classllvm_1_1ilist__iterator.html">Function::iterator</a>(<span class="keyword">this</span>))
+<a name="l00304"></a>00304                                .getNodePtrUnchecked();
+<a name="l00305"></a>00305   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *New = <a class="code" href="classllvm_1_1BasicBlock.html#ae1d53a21892854816885c7288f8b46f1">BasicBlock::Create</a>(<a class="code" href="classllvm_1_1BasicBlock.html#ad652423d9d91271ba153eb86482b2f55" title="getContext - Get the context in which this basic block lives.">getContext</a>(), BBName,
+<a name="l00306"></a>00306                                        <a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>(), InsertBefore);
+<a name="l00307"></a>00307 
+<a name="l00308"></a>00308   <span class="comment">// Move all of the specified instructions from the original basic block into</span>
+<a name="l00309"></a>00309   <span class="comment">// the new basic block.</span>
+<a name="l00310"></a>00310   New-><a class="code" href="classllvm_1_1BasicBlock.html#a531d11ba36ed48d86057d507cc8d5567">getInstList</a>().<a class="code" href="classllvm_1_1iplist.html#afe55b235779222b867c16d3321c1cd16">splice</a>(New-><a class="code" href="classllvm_1_1BasicBlock.html#a0b4e7bee9b8575cc7db73329f1a561bd">end</a>(), this-><a class="code" href="classllvm_1_1BasicBlock.html#a531d11ba36ed48d86057d507cc8d5567">getInstList</a>(), <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>, <a class="code" href="classllvm_1_1BasicBlock.html#a0b4e7bee9b8575cc7db73329f1a561bd">end</a>());
+<a name="l00311"></a>00311 
+<a name="l00312"></a>00312   <span class="comment">// Add a branch instruction to the newly formed basic block.</span>
+<a name="l00313"></a>00313   <a class="code" href="classllvm_1_1BasicBlock.html#ae1d53a21892854816885c7288f8b46f1">BranchInst::Create</a>(New, <span class="keyword">this</span>);
+<a name="l00314"></a>00314 
+<a name="l00315"></a>00315   <span class="comment">// Now we must loop through all of the successors of the New block (which</span>
+<a name="l00316"></a>00316   <span class="comment">// _were_ the successors of the 'this' block), and update any PHI nodes in</span>
+<a name="l00317"></a>00317   <span class="comment">// successors.  If there were PHI nodes in the successors, then they need to</span>
+<a name="l00318"></a>00318   <span class="comment">// know that incoming branches will be from New, not from Old.</span>
+<a name="l00319"></a>00319   <span class="comment">//</span>
+<a name="l00320"></a>00320   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SuccIterator.html">succ_iterator</a> I = <a class="code" href="namespacellvm.html#a3720211f6e6389ab53734b989bfb6fce">succ_begin</a>(New), E = <a class="code" href="namespacellvm.html#a069c4ae2290101bde0f8d6a5074dc72b">succ_end</a>(New); I != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00321"></a>00321     <span class="comment">// Loop over any phi nodes in the basic block, updating the BB field of</span>
+<a name="l00322"></a>00322     <span class="comment">// incoming values...</span>
+<a name="l00323"></a>00323     <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Successor = *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>;
+<a name="l00324"></a>00324     <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *PN;
+<a name="l00325"></a>00325     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> II = Successor-><a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>();
+<a name="l00326"></a>00326          (PN = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1PHINode.html">PHINode</a>>(II)); ++II) {
+<a name="l00327"></a>00327       <span class="keywordtype">int</span> IDX = PN-><a class="code" href="classllvm_1_1PHINode.html#a5c2b7d7f19aac93b27b845858a7eb73e">getBasicBlockIndex</a>(<span class="keyword">this</span>);
+<a name="l00328"></a>00328       <span class="keywordflow">while</span> (IDX != -1) {
+<a name="l00329"></a>00329         PN-><a class="code" href="classllvm_1_1PHINode.html#a5ba57877c55dfdbe6e3bbfdacd9ef8c1">setIncomingBlock</a>((<span class="keywordtype">unsigned</span>)IDX, New);
+<a name="l00330"></a>00330         IDX = PN-><a class="code" href="classllvm_1_1PHINode.html#a5c2b7d7f19aac93b27b845858a7eb73e">getBasicBlockIndex</a>(<span class="keyword">this</span>);
+<a name="l00331"></a>00331       }
+<a name="l00332"></a>00332     }
+<a name="l00333"></a>00333   }
+<a name="l00334"></a>00334   <span class="keywordflow">return</span> New;
+<a name="l00335"></a>00335 }
+<a name="l00336"></a>00336 
+<a name="l00337"></a><a class="code" href="classllvm_1_1BasicBlock.html#a51d40bb95f61f8696b3b802cb8c203e4">00337</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1BasicBlock.html#a51d40bb95f61f8696b3b802cb8c203e4">BasicBlock::replaceSuccessorsPhiUsesWith</a>(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *New) {
+<a name="l00338"></a>00338   <a class="code" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> *TI = <a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>();
+<a name="l00339"></a>00339   <span class="keywordflow">if</span> (!TI)
+<a name="l00340"></a>00340     <span class="comment">// Cope with being called on a BasicBlock that doesn't have a terminator</span>
+<a name="l00341"></a>00341     <span class="comment">// yet. Clang's CodeGenFunction::EmitReturnBlock() likes to do this.</span>
+<a name="l00342"></a>00342     <span class="keywordflow">return</span>;
+<a name="l00343"></a>00343   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = TI-><a class="code" href="classllvm_1_1TerminatorInst.html#a4c26d3b92af99a6c8defd89a2d39ca32">getNumSuccessors</a>(); i != e; ++i) {
+<a name="l00344"></a>00344     <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Succ = TI-><a class="code" href="classllvm_1_1TerminatorInst.html#a3aac3b6c36415a2b08f65ead9e3e51e7">getSuccessor</a>(i);
+<a name="l00345"></a>00345     <span class="comment">// N.B. Succ might not be a complete BasicBlock, so don't assume</span>
+<a name="l00346"></a>00346     <span class="comment">// that it ends with a non-phi instruction.</span>
+<a name="l00347"></a>00347     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">iterator</a> II = Succ-><a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>(), <a class="code" href="namespacellvm_1_1ARM__PROC.html#a1add7850fad3f66c140ecee871460ea4ae9d798593a4a6b5cc48486a453a59e5e">IE</a> = Succ-><a class="code" href="classllvm_1_1BasicBlock.html#a0b4e7bee9b8575cc7db73329f1a561bd">end</a>(); II != <a class="code" href="namespacellvm_1_1ARM__PROC.html#a1add7850fad3f66c140ecee871460ea4ae9d798593a4a6b5cc48486a453a59e5e">IE</a>; ++II) {
+<a name="l00348"></a>00348       <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *PN = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1PHINode.html">PHINode</a>>(II);
+<a name="l00349"></a>00349       <span class="keywordflow">if</span> (!PN)
+<a name="l00350"></a>00350         <span class="keywordflow">break</span>;
+<a name="l00351"></a>00351       <span class="keywordtype">int</span> i;
+<a name="l00352"></a>00352       <span class="keywordflow">while</span> ((i = PN-><a class="code" href="classllvm_1_1PHINode.html#a5c2b7d7f19aac93b27b845858a7eb73e">getBasicBlockIndex</a>(<span class="keyword">this</span>)) >= 0)
+<a name="l00353"></a>00353         PN-><a class="code" href="classllvm_1_1PHINode.html#a5ba57877c55dfdbe6e3bbfdacd9ef8c1">setIncomingBlock</a>(i, New);
+<a name="l00354"></a>00354     }
+<a name="l00355"></a>00355   }
+<a name="l00356"></a>00356 }
+<a name="l00357"></a>00357 <span class="comment"></span>
+<a name="l00358"></a>00358 <span class="comment">/// isLandingPad - Return true if this basic block is a landing pad. I.e., it's</span>
+<a name="l00359"></a>00359 <span class="comment">/// the destination of the 'unwind' edge of an invoke instruction.</span>
+<a name="l00360"></a><a class="code" href="classllvm_1_1BasicBlock.html#a3075a9eef753018bed561df31f38dc23">00360</a> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1BasicBlock.html#a3075a9eef753018bed561df31f38dc23">BasicBlock::isLandingPad</a>()<span class="keyword"> const </span>{
+<a name="l00361"></a>00361   <span class="keywordflow">return</span> isa<LandingPadInst>(<a class="code" href="classllvm_1_1BasicBlock.html#a0e73f4e09745bb69fdd7b15232c45428">getFirstNonPHI</a>());
+<a name="l00362"></a>00362 }
+<a name="l00363"></a>00363 <span class="comment"></span>
+<a name="l00364"></a>00364 <span class="comment">/// getLandingPadInst() - Return the landingpad instruction associated with</span>
+<a name="l00365"></a>00365 <span class="comment">/// the landing pad.</span>
+<a name="l00366"></a><a class="code" href="classllvm_1_1BasicBlock.html#adf2126190885b10019398655f5e6b256">00366</a> <span class="comment"></span><a class="code" href="classllvm_1_1LandingPadInst.html">LandingPadInst</a> *<a class="code" href="classllvm_1_1BasicBlock.html#adf2126190885b10019398655f5e6b256">BasicBlock::getLandingPadInst</a>() {
+<a name="l00367"></a>00367   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1LandingPadInst.html">LandingPadInst</a>>(<a class="code" href="classllvm_1_1BasicBlock.html#a0e73f4e09745bb69fdd7b15232c45428">getFirstNonPHI</a>());
+<a name="l00368"></a>00368 }
+<a name="l00369"></a><a class="code" href="classllvm_1_1BasicBlock.html#a644c2aa46372736e6e9452e5f435039e">00369</a> <span class="keyword">const</span> <a class="code" href="classllvm_1_1LandingPadInst.html">LandingPadInst</a> *<a class="code" href="classllvm_1_1BasicBlock.html#adf2126190885b10019398655f5e6b256">BasicBlock::getLandingPadInst</a>()<span class="keyword"> const </span>{
+<a name="l00370"></a>00370   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1LandingPadInst.html">LandingPadInst</a>>(<a class="code" href="classllvm_1_1BasicBlock.html#a0e73f4e09745bb69fdd7b15232c45428">getFirstNonPHI</a>());
+<a name="l00371"></a>00371 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:32:51 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/BasicBlock_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BasicBlock_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BasicBlock_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BasicBlock_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,140 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="BasicBlock.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="CallSite.h",height=0.2,width=0.4,color="red",URL="$CallSite_8h.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="AliasAnalysis.h",height=0.2,width=0.4,color="red",URL="$AliasAnalysis_8h.html"];
+  Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="CaptureTracking.h",height=0.2,width=0.4,color="red",URL="$CaptureTracking_8h.html"];
+  Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="AliasAnalysis.cpp",height=0.2,width=0.4,color="black",URL="$AliasAnalysis_8cpp.html"];
+  Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="MemoryDependenceAnalysis.h",height=0.2,width=0.4,color="red",URL="$MemoryDependenceAnalysis_8h.html"];
+  Node6 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="MemDepPrinter.cpp",height=0.2,width=0.4,color="black",URL="$MemDepPrinter_8cpp.html"];
+  Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="Lint.cpp",height=0.2,width=0.4,color="black",URL="$Lint_8cpp.html"];
+  Node2 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="AliasSetTracker.h",height=0.2,width=0.4,color="red",URL="$AliasSetTracker_8h.html"];
+  Node2 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="CallGraph.h",height=0.2,width=0.4,color="red",URL="$CallGraph_8h.html"];
+  Node10 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="CallGraph.cpp",height=0.2,width=0.4,color="black",URL="$CallGraph_8cpp.html"];
+  Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="CodeMetrics.h",height=0.2,width=0.4,color="red",URL="$CodeMetrics_8h.html"];
+  Node12 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="CodeMetrics.cpp",height=0.2,width=0.4,color="black",URL="$CodeMetrics_8cpp.html"];
+  Node2 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="InstVisitor.h",height=0.2,width=0.4,color="red",URL="$InstVisitor_8h.html"];
+  Node14 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="InlineCost.cpp",height=0.2,width=0.4,color="black",URL="$InlineCost_8cpp.html"];
+  Node14 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="Interpreter.h",height=0.2,width=0.4,color="red",URL="$lib_2ExecutionEngine_2Interpreter_2Interpreter_8h.html"];
+  Node2 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="Analysis.h",height=0.2,width=0.4,color="red",URL="$CodeGen_2Analysis_8h.html"];
+  Node2 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="FunctionLoweringInfo.h",height=0.2,width=0.4,color="red",URL="$FunctionLoweringInfo_8h.html"];
+  Node2 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="TargetLowering.h",height=0.2,width=0.4,color="red",URL="$TargetLowering_8h.html"];
+  Node19 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="DwarfEHPrepare.cpp",height=0.2,width=0.4,color="black",URL="$DwarfEHPrepare_8cpp.html"];
+  Node2 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="ProfileVerifierPass.cpp",height=0.2,width=0.4,color="black",URL="$ProfileVerifierPass_8cpp.html"];
+  Node2 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="IntrinsicLowering.cpp",height=0.2,width=0.4,color="black",URL="$IntrinsicLowering_8cpp.html"];
+  Node2 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="SelectionDAGBuilder.h",height=0.2,width=0.4,color="red",URL="$SelectionDAGBuilder_8h.html"];
+  Node2 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="ShadowStackGC.cpp",height=0.2,width=0.4,color="black",URL="$ShadowStackGC_8cpp.html"];
+  Node2 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="BlockFrequencyImpl.h",height=0.2,width=0.4,color="red",URL="$BlockFrequencyImpl_8h.html"];
+  Node1 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="Function.h",height=0.2,width=0.4,color="red",URL="$Function_8h.html"];
+  Node26 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="InstIterator.h",height=0.2,width=0.4,color="red",URL="$InstIterator_8h.html"];
+  Node27 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="ADCE.cpp",height=0.2,width=0.4,color="black",URL="$ADCE_8cpp.html"];
+  Node26 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node29 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="Reg2Mem.cpp",height=0.2,width=0.4,color="black",URL="$Reg2Mem_8cpp.html"];
+  Node26 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="LowerExpectIntrinsic.cpp",height=0.2,width=0.4,color="black",URL="$LowerExpectIntrinsic_8cpp.html"];
+  Node26 -> Node31 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="UnifyFunctionExitNodes.cpp",height=0.2,width=0.4,color="black",URL="$UnifyFunctionExitNodes_8cpp.html"];
+  Node26 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="TypeFinder.cpp",height=0.2,width=0.4,color="black",URL="$TypeFinder_8cpp.html"];
+  Node1 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node33 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="Loads.h",height=0.2,width=0.4,color="red",URL="$Loads_8h.html"];
+  Node33 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="IRBuilder.h",height=0.2,width=0.4,color="red",URL="$IRBuilder_8h.html"];
+  Node34 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node35 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="PathNumbering.h",height=0.2,width=0.4,color="red",URL="$PathNumbering_8h.html"];
+  Node35 -> Node36 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="PathProfileInfo.h",height=0.2,width=0.4,color="red",URL="$PathProfileInfo_8h.html"];
+  Node1 -> Node36 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node37 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="SelectionDAGISel.h",height=0.2,width=0.4,color="red",URL="$SelectionDAGISel_8h.html"];
+  Node1 -> Node38 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="BasicBlockUtils.h",height=0.2,width=0.4,color="red",URL="$BasicBlockUtils_8h.html"];
+  Node38 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node39 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="IndVarSimplify.cpp",height=0.2,width=0.4,color="black",URL="$IndVarSimplify_8cpp.html"];
+  Node38 -> Node40 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="LoopUnroll.cpp",height=0.2,width=0.4,color="black",URL="$LoopUnroll_8cpp.html"];
+  Node38 -> Node41 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="LoopUnrollRuntime.cpp",height=0.2,width=0.4,color="black",URL="$LoopUnrollRuntime_8cpp.html"];
+  Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node42 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="Interval.cpp",height=0.2,width=0.4,color="black",URL="$Interval_8cpp.html"];
+  Node1 -> Node43 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="ProfileDataLoaderPass.cpp",height=0.2,width=0.4,color="black",URL="$ProfileDataLoaderPass_8cpp.html"];
+  Node1 -> Node44 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="ProfileInfoLoaderPass.cpp",height=0.2,width=0.4,color="black",URL="$ProfileInfoLoaderPass_8cpp.html"];
+  Node1 -> Node45 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="MachineBasicBlock.cpp",height=0.2,width=0.4,color="black",URL="$MachineBasicBlock_8cpp.html"];
+  Node1 -> Node46 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="MachineVerifier.cpp",height=0.2,width=0.4,color="black",URL="$MachineVerifier_8cpp.html"];
+  Node1 -> Node47 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="RegAllocFast.cpp",height=0.2,width=0.4,color="black",URL="$RegAllocFast_8cpp.html"];
+  Node1 -> Node48 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="MipsAsmPrinter.cpp",height=0.2,width=0.4,color="black",URL="$MipsAsmPrinter_8cpp.html"];
+  Node1 -> Node49 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="MaximumSpanningTree.h",height=0.2,width=0.4,color="red",URL="$MaximumSpanningTree_8h.html"];
+  Node1 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node39 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node29 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node40 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node41 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node31 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node50 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="BasicBlock.cpp",height=0.2,width=0.4,color="black",URL="$BasicBlock_8cpp.html"];
+  Node1 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Binary_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Binary_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Binary_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Binary_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,69 @@
+<!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: Binary.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_464a55d3902474b977992e6518c17150.html">Object</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Binary.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Binary_8h_source.html">llvm/Object/Binary.h</a>"</code><br/>
+<code>#include "<a class="el" href="StringRef_8h_source.html">llvm/ADT/StringRef.h</a>"</code><br/>
+<code>#include "<a class="el" href="MemoryBuffer_8h_source.html">llvm/Support/MemoryBuffer.h</a>"</code><br/>
+<code>#include "<a class="el" href="Path_8h_source.html">llvm/Support/Path.h</a>"</code><br/>
+<code>#include "<a class="el" href="Object_2Archive_8h_source.html">llvm/Object/Archive.h</a>"</code><br/>
+<code>#include "<a class="el" href="Object_2COFF_8h_source.html">llvm/Object/COFF.h</a>"</code><br/>
+<code>#include "<a class="el" href="ObjectFile_8h_source.html">llvm/Object/ObjectFile.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Binary.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="Binary_8cpp__incl.png" border="0" usemap="#Binary_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="Binary_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:27 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/Binary_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Binary_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Binary_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Binary_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,31 @@
+<map id="G" name="G">
+<area shape="rect" href="$Binary_8h.html" title="llvm/Object/Binary.h" alt="" coords="841,239,988,265"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="1363,393,1512,420"/>
+<area shape="rect" href="$MemoryBuffer_8h.html" title="llvm/Support/MemoryBuffer.h" alt="" coords="43,316,251,343"/>
+<area shape="rect" href="$Path_8h.html" title="llvm/Support/Path.h" alt="" coords="1112,84,1259,111"/>
+<area shape="rect" href="$Object_2Archive_8h.html" title="llvm/Object/Archive.h" alt="" coords="1607,161,1761,188"/>
+<area shape="rect" href="$Object_2COFF_8h.html" title="llvm/Object/COFF.h" alt="" coords="1300,84,1439,111"/>
+<area shape="rect" href="$ObjectFile_8h.html" title="llvm/Object/ObjectFile.h" alt="" coords="831,161,999,188"/>
+<area shape="rect" href="$OwningPtr_8h.html" title="llvm/ADT/OwningPtr.h" alt="" coords="1133,393,1288,420"/>
+<area shape="rect" href="$Object_2Error_8h.html" title="llvm/Object/Error.h" alt="" coords="352,316,491,343"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="705,548,879,575"/>
+<area shape="rect" href="$system__error_8h.html" title="llvm/Support/system_error.h" alt="" coords="229,393,432,420"/>
+<area shape="rect" href="$llvm-config_8h.html" title="llvm/Config/llvm-config.h" alt="" coords="257,471,433,497"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="1061,471,1248,497"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="1255,625,1439,652"/>
+<area shape="rect" href="$PathV1_8h.html" title="llvm/Support/PathV1.h" alt="" coords="515,316,677,343"/>
+<area shape="rect" href="$PathV2_8h.html" title="llvm/Support/PathV2.h" alt="" coords="1120,161,1283,188"/>
+<area shape="rect" href="$TimeValue_8h.html" title="llvm/Support/TimeValue.h" alt="" coords="456,393,640,420"/>
+<area shape="rect" href="$SmallString_8h.html" title="llvm/ADT/SmallString.h" alt="" coords="1456,316,1624,343"/>
+<area shape="rect" href="$Twine_8h.html" title="llvm/ADT/Twine.h" alt="" coords="1012,239,1137,265"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="1861,393,2029,420"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="1949,471,2112,497"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="701,316,907,343"/>
+<area shape="rect" href="$Support_2COFF_8h.html" title="llvm/Support/COFF.h" alt="" coords="1536,393,1685,420"/>
+<area shape="rect" href="$Endian_8h.html" title="llvm/Support/Endian.h" alt="" coords="1307,161,1467,188"/>
+<area shape="rect" href="$Host_8h.html" title="llvm/Support/Host.h" alt="" coords="1313,239,1460,265"/>
+<area shape="rect" href="$SwapByteOrder_8h.html" title="llvm/Support/SwapByteOrder.h" alt="" coords="2360,548,2576,575"/>
+<area shape="rect" href="$StringMap_8h.html" title="llvm/ADT/StringMap.h" alt="" coords="1749,316,1907,343"/>
+<area shape="rect" href="$Allocator_8h.html" title="llvm/Support/Allocator.h" alt="" coords="2072,393,2245,420"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="2373,471,2563,497"/>
+</map>

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

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

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Binary_8h__dep__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Binary_8h__dep__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Binary_8h__dep__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Binary_8h__dep__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,24 @@
+<map id="G" name="G">
+<area shape="rect" href="$ObjectFile_8h.html" title="ObjectFile.h" alt="" coords="547,84,640,111"/>
+<area shape="rect" href="$Binary_8cpp.html" title="Binary.cpp" alt="" coords="1176,239,1261,265"/>
+<area shape="rect" href="$Object_2Archive_8h.html" title="Archive.h" alt="" coords="1221,84,1301,111"/>
+<area shape="rect" href="$ObjectImage_8h.html" title="ObjectImage.h" alt="" coords="676,161,791,188"/>
+<area shape="rect" href="$ObjectImageCommon_8h.html" title="ObjectImageCommon.h" alt="" coords="653,316,827,343"/>
+<area shape="rect" href="$RuntimeDyldELF_8cpp.html" title="RuntimeDyldELF.cpp" alt="" coords="543,393,689,420"/>
+<area shape="rect" href="$RuntimeDyldImpl_8h.html" title="RuntimeDyldImpl.h" alt="" coords="848,239,987,265"/>
+<area shape="rect" href="$Object_2COFF_8h.html" title="COFF.h" alt="" coords="1032,161,1096,188"/>
+<area shape="rect" href="$Object_2ELF_8h.html" title="ELF.h" alt="" coords="477,161,531,188"/>
+<area shape="rect" href="$RelocVisitor_8h.html" title="RelocVisitor.h" alt="" coords="464,239,568,265"/>
+<area shape="rect" href="$Object_2MachO_8h.html" title="MachO.h" alt="" coords="64,161,139,188"/>
+<area shape="rect" href="$Object_8cpp.html" title="Object.cpp" alt="" coords="232,161,320,188"/>
+<area shape="rect" href="$ObjectFile_8cpp.html" title="ObjectFile.cpp" alt="" coords="344,161,453,188"/>
+<area shape="rect" href="$MCJIT_8cpp.html" title="MCJIT.cpp" alt="" coords="693,239,773,265"/>
+<area shape="rect" href="$RuntimeDyld_8cpp.html" title="RuntimeDyld.cpp" alt="" coords="876,393,1004,420"/>
+<area shape="rect" href="$RuntimeDyldELF_8h.html" title="RuntimeDyldELF.h" alt="" coords="851,316,984,343"/>
+<area shape="rect" href="$RuntimeDyldMachO_8h.html" title="RuntimeDyldMachO.h" alt="" coords="1059,316,1213,343"/>
+<area shape="rect" href="$RuntimeDyldMachO_8cpp.html" title="RuntimeDyldMachO.cpp" alt="" coords="1051,393,1221,420"/>
+<area shape="rect" href="$COFFObjectFile_8cpp.html" title="COFFObjectFile.cpp" alt="" coords="1011,239,1152,265"/>
+<area shape="rect" href="$ELFObjectFile_8cpp.html" title="ELFObjectFile.cpp" alt="" coords="259,239,389,265"/>
+<area shape="rect" href="$MachOObjectFile_8cpp.html" title="MachOObjectFile.cpp" alt="" coords="5,239,157,265"/>
+<area shape="rect" href="$Object_2Archive_8cpp.html" title="Archive.cpp" alt="" coords="1272,161,1368,188"/>
+</map>

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

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

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

Added: www-releases/trunk/3.2/docs/doxygen/html/BitReader_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BitReader_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BitReader_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BitReader_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,54 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="BitReader.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-c/BitReader.h",height=0.2,width=0.4,color="black",URL="$BitReader_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm-c/Core.h",height=0.2,width=0.4,color="black",URL="$Core_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/Bitcode/ReaderWriter.h",height=0.2,width=0.4,color="black",URL="$ReaderWriter_8h.html"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/LLVMContext.h",height=0.2,width=0.4,color="black",URL="$LLVMContext_8h.html"];
+  Node11 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node1 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="llvm/Support/MemoryBuffer.h",height=0.2,width=0.4,color="black",URL="$MemoryBuffer_8h.html"];
+  Node13 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="black",URL="$StringRef_8h.html"];
+  Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node15 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node15 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node14 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node14 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node14 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node14 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="limits",height=0.2,width=0.4,color="grey75"];
+  Node14 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node10 [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/BitReader_8h__dep__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BitReader_8h__dep__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BitReader_8h__dep__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BitReader_8h__dep__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,3 @@
+<map id="G" name="G">
+<area shape="rect" href="$BitReader_8cpp.html" title="BitReader.cpp" alt="" coords="5,84,112,111"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/BitReader_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BitReader_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BitReader_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BitReader_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,4 @@
+<map id="G" name="G">
+<area shape="rect" href="$Core_8h.html" title="llvm-c/Core.h" alt="" coords="147,84,251,111"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="107,161,291,188"/>
+</map>

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

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

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

Added: www-releases/trunk/3.2/docs/doxygen/html/BitVector_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BitVector_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BitVector_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BitVector_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,9 @@
+<map id="G" name="G">
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="249,161,423,188"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="431,84,636,111"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="55,84,244,111"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="447,161,596,188"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="228,239,415,265"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="191,316,375,343"/>
+<area shape="rect" href="$SwapByteOrder_8h.html" title="llvm/Support/SwapByteOrder.h" alt="" coords="5,161,221,188"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/BitWriter_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BitWriter_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BitWriter_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BitWriter_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: BitWriter.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_7d983a2362450c6a8f8032b225457939.html">llvm-c</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">BitWriter.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Core_8h_source.html">llvm-c/Core.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for BitWriter.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="BitWriter_8h__incl.png" border="0" usemap="#BitWriter_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="BitWriter_8h__dep__incl.png" border="0" usemap="#BitWriter_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="BitWriter_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LLVMCBitWriter.html#ga10b86ad44bcad46fcf80cc525949703d">LLVMWriteBitcodeToFile</a> (<a class="el" href="group__LLVMCCoreTypes.html#gad1d1bb5f901c903a0cf09c5a053c9c56">LLVMModuleRef</a> M, const <a class="el" href="classchar.html">char</a> *<a class="el" href="classllvm_1_1sys_1_1Path.html">Path</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LLVMCBitWriter.html#ga75ab6d85381957cd9c487b4bd1069bce">LLVMWriteBitcodeToFD</a> (<a class="el" href="group__LLVMCCoreTypes.html#gad1d1bb5f901c903a0cf09c5a053c9c56">LLVMModuleRef</a> M, int FD, int ShouldClose, int Unbuffered)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LLVMCBitWriter.html#ga265dfc97cc8af15a31cf876a107fb7d0">LLVMWriteBitcodeToFileHandle</a> (<a class="el" href="group__LLVMCCoreTypes.html#gad1d1bb5f901c903a0cf09c5a053c9c56">LLVMModuleRef</a> M, int Handle)</td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:27 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/BitWriter_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BitWriter_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BitWriter_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BitWriter_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,19 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="BitWriter.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="llvm-c/Core.h",height=0.2,width=0.4,color="black",URL="$Core_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/BitcodeReader_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BitcodeReader_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BitcodeReader_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BitcodeReader_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,383 @@
+<!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: BitcodeReader.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_db2030fcbb8ba0dd11a2d2bc205cd95d.html">Bitcode</a>      </li>
+      <li class="navelem"><a class="el" href="dir_5e5c02437cc343e696d4b23de5bc0c48.html">Reader</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#enum-members">Enumerations</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">BitcodeReader.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="ReaderWriter_8h_source.html">llvm/Bitcode/ReaderWriter.h</a>"</code><br/>
+<code>#include "<a class="el" href="BitcodeReader_8h_source.html">BitcodeReader.h</a>"</code><br/>
+<code>#include "<a class="el" href="Constants_8h_source.html">llvm/Constants.h</a>"</code><br/>
+<code>#include "<a class="el" href="DerivedTypes_8h_source.html">llvm/DerivedTypes.h</a>"</code><br/>
+<code>#include "<a class="el" href="InlineAsm_8h_source.html">llvm/InlineAsm.h</a>"</code><br/>
+<code>#include "<a class="el" href="IntrinsicInst_8h_source.html">llvm/IntrinsicInst.h</a>"</code><br/>
+<code>#include "<a class="el" href="Module_8h_source.html">llvm/Module.h</a>"</code><br/>
+<code>#include "<a class="el" href="Operator_8h_source.html">llvm/Operator.h</a>"</code><br/>
+<code>#include "<a class="el" href="AutoUpgrade_8h_source.html">llvm/AutoUpgrade.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallString_8h_source.html">llvm/ADT/SmallString.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallVector_8h_source.html">llvm/ADT/SmallVector.h</a>"</code><br/>
+<code>#include "<a class="el" href="DataStream_8h_source.html">llvm/Support/DataStream.h</a>"</code><br/>
+<code>#include "<a class="el" href="MathExtras_8h_source.html">llvm/Support/MathExtras.h</a>"</code><br/>
+<code>#include "<a class="el" href="MemoryBuffer_8h_source.html">llvm/Support/MemoryBuffer.h</a>"</code><br/>
+<code>#include "<a class="el" href="OperandTraits_8h_source.html">llvm/OperandTraits.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for BitcodeReader.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="BitcodeReader_8cpp__incl.png" border="0" usemap="#BitcodeReader_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="BitcodeReader_8cpp_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_1OperandTraits_3_01ConstantPlaceHolder_01_4.html">llvm::OperandTraits< ConstantPlaceHolder ></a></td></tr>
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td colspan="2"><h2><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="BitcodeReader_8cpp.html#a1e06e534e565b0e44afdf96c77951725a2a97674992f9eb8a33057b0bd9ecfa19">SWITCH_INST_MAGIC</a> =  0x4B5
+ }</td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename StrTy > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="BitcodeReader_8cpp.html#aa61877fc7812ea6c543190d0d7a64bf8">ConvertToString</a> (<a class="el" href="classllvm_1_1ArrayRef.html">ArrayRef</a>< uint64_t > <a class="el" href="classllvm_1_1Record.html">Record</a>, <a class="el" href="classunsigned.html">unsigned</a> Idx, StrTy &Result)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1GlobalValue.html#aedfa75f0c85c4aa85b257f066fbea57c">GlobalValue::LinkageTypes</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="BitcodeReader_8cpp.html#a150d04287ae482608cb8a3a67e50d4fe">GetDecodedLinkage</a> (<a class="el" href="classunsigned.html">unsigned</a> Val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1GlobalValue.html#a9141f967188383108a69cc1b8ed3c195">GlobalValue::VisibilityTypes</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="BitcodeReader_8cpp.html#a0b86e4d035572d87ed660c67d4b337d9">GetDecodedVisibility</a> (<a class="el" href="classunsigned.html">unsigned</a> Val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <br class="typebreak"/>
+<a class="el" href="classllvm_1_1GlobalVariable.html#a8258421dcc5f4b3beb309a25a4bcb643">GlobalVariable::ThreadLocalMode</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="BitcodeReader_8cpp.html#ac7c02c0b26b6c3e7e9ed3eb70f8096fc">GetDecodedThreadLocalMode</a> (<a class="el" href="classunsigned.html">unsigned</a> Val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="BitcodeReader_8cpp.html#abedfc2f04c5cd136412eb92023acbed4">GetDecodedCastOpcode</a> (<a class="el" href="classunsigned.html">unsigned</a> Val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="BitcodeReader_8cpp.html#a34ee82a24e81429b3fb819c1e72e06dd">GetDecodedBinaryOpcode</a> (<a class="el" href="classunsigned.html">unsigned</a> Val, <a class="el" href="classllvm_1_1Type.html">Type</a> *Ty)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1AtomicRMWInst.html#adbf3dd67a56ac91e0d98970d31e053c0">AtomicRMWInst::BinOp</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="BitcodeReader_8cpp.html#aaec9720b4db9b9b845cd8830d38c7837">GetDecodedRMWOperation</a> (<a class="el" href="classunsigned.html">unsigned</a> Val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespacellvm.html#abf74b2f0dbae96f4708d3e407b36df02">AtomicOrdering</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="BitcodeReader_8cpp.html#a9fd3aaff812b87ce743d0864c4e7395d">GetDecodedOrdering</a> (<a class="el" href="classunsigned.html">unsigned</a> Val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespacellvm.html#af044e7b099a53c587d1568b5b153b1a5">SynchronizationScope</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="BitcodeReader_8cpp.html#a629d28deebfd1e26ea19acb7ce971e1e">GetDecodedSynchScope</a> (<a class="el" href="classunsigned.html">unsigned</a> Val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1APInt.html">APInt</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="BitcodeReader_8cpp.html#a89be8d4fbc9aa8bb7158642907741814">ReadWideAPInt</a> (<a class="el" href="classllvm_1_1ArrayRef.html">ArrayRef</a>< uint64_t > Vals, <a class="el" href="classunsigned.html">unsigned</a> TypeBits)</td></tr>
+</table>
+<hr/><h2>Enumeration Type Documentation</h2>
+<a class="anchor" id="a1e06e534e565b0e44afdf96c77951725"></a><!-- doxytag: member="BitcodeReader.cpp::@139" ref="a1e06e534e565b0e44afdf96c77951725" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">anonymous enum</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a1e06e534e565b0e44afdf96c77951725a2a97674992f9eb8a33057b0bd9ecfa19"></a><!-- doxytag: member="SWITCH_INST_MAGIC" ref="a1e06e534e565b0e44afdf96c77951725a2a97674992f9eb8a33057b0bd9ecfa19" args="" -->SWITCH_INST_MAGIC</em> </td><td>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+<p>Definition at line <a class="el" href="BitcodeReader_8cpp_source.html#l00031">31</a> of file <a class="el" href="BitcodeReader_8cpp_source.html">BitcodeReader.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="aa61877fc7812ea6c543190d0d7a64bf8"></a><!-- doxytag: member="BitcodeReader.cpp::ConvertToString" ref="aa61877fc7812ea6c543190d0d7a64bf8" args="(ArrayRef< uint64_t > Record, unsigned Idx, StrTy &Result)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename StrTy > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> ConvertToString </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1ArrayRef.html">ArrayRef</a>< uint64_t > </td>
+          <td class="paramname"><em>Record</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">StrTy & </td>
+          <td class="paramname"><em>Result</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>ConvertToString - Convert a string from a record into an std::string, return true on failure. </p>
+
+<p>Definition at line <a class="el" href="BitcodeReader_8cpp_source.html#l00066">66</a> of file <a class="el" href="BitcodeReader_8cpp_source.html">BitcodeReader.cpp</a>.</p>
+
+<p>References <a class="el" href="ArrayRef_8h_source.html#l00093">llvm::ArrayRef< T >::size()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a34ee82a24e81429b3fb819c1e72e06dd"></a><!-- doxytag: member="BitcodeReader.cpp::GetDecodedBinaryOpcode" ref="a34ee82a24e81429b3fb819c1e72e06dd" args="(unsigned Val, Type *Ty)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static int GetDecodedBinaryOpcode </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Val</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Type.html">Type</a> * </td>
+          <td class="paramname"><em>Ty</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="BitcodeReader_8cpp_source.html#l00135">135</a> of file <a class="el" href="BitcodeReader_8cpp_source.html">BitcodeReader.cpp</a>.</p>
+
+<p>References <a class="el" href="APInt_8h_source.html#l01759">llvm::APIntOps::And()</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00198">llvm::bitc::BINOP_ADD</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00208">llvm::bitc::BINOP_AND</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00207">llvm::bitc::BINOP_ASHR</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00206">llvm::bitc::BINOP_LSHR</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00200">llvm::bitc::BINOP_MUL</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00209">llvm::bitc::BINOP_OR</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00202">llvm::bitc::BINOP_SDIV</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00205">llvm::bitc::BINOP_SHL</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00204">llvm::bitc::BINOP_SREM</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00199">llvm::bitc::BINOP_SUB</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00201">llvm::bitc
 ::BINOP_UDIV</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00203">llvm::bitc::BINOP_UREM</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00210">llvm::bitc::BINOP_XOR</a>, <a class="el" href="Type_8h_source.html#l00170">llvm::Type::isFPOrFPVectorTy()</a>, <a class="el" href="InstVisitor_8h_source.html#l00124">llvm::LShr</a>, <a class="el" href="APInt_8h_source.html#l01765">llvm::APIntOps::Or()</a>, and <a class="el" href="APInt_8h_source.html#l01771">llvm::APIntOps::Xor()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abedfc2f04c5cd136412eb92023acbed4"></a><!-- doxytag: member="BitcodeReader.cpp::GetDecodedCastOpcode" ref="abedfc2f04c5cd136412eb92023acbed4" args="(unsigned Val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static int GetDecodedCastOpcode </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Val</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="BitcodeReader_8cpp_source.html#l00118">118</a> of file <a class="el" href="BitcodeReader_8cpp_source.html">BitcodeReader.cpp</a>.</p>
+
+<p>References <a class="el" href="LLVMBitCodes_8h_source.html#l00190">llvm::bitc::CAST_BITCAST</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00187">llvm::bitc::CAST_FPEXT</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00183">llvm::bitc::CAST_FPTOSI</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00182">llvm::bitc::CAST_FPTOUI</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00186">llvm::bitc::CAST_FPTRUNC</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00189">llvm::bitc::CAST_INTTOPTR</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00188">llvm::bitc::CAST_PTRTOINT</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00181">llvm::bitc::CAST_SEXT</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00185">llvm::bitc::CAST_SITOFP</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00179">llvm::bitc::CAST_TRUNC</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00184">llvm::bitc::CAST_UITOFP</a>, <a class="el" href="LLVMBitCodes_8h_so
 urce.html#l00180">llvm::bitc::CAST_ZEXT</a>, <a class="el" href="InstVisitor_8h_source.html#l00154">llvm::FPExt</a>, <a class="el" href="InstVisitor_8h_source.html#l00150">llvm::FPToSI</a>, <a class="el" href="InstVisitor_8h_source.html#l00156">llvm::IntToPtr</a>, <a class="el" href="InstVisitor_8h_source.html#l00148">llvm::SExt</a>, <a class="el" href="InstVisitor_8h_source.html#l00152">llvm::SIToFP</a>, and <a class="el" href="InstVisitor_8h_source.html#l00146">llvm::Trunc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a150d04287ae482608cb8a3a67e50d4fe"></a><!-- doxytag: member="BitcodeReader.cpp::GetDecodedLinkage" ref="a150d04287ae482608cb8a3a67e50d4fe" args="(unsigned Val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1GlobalValue.html#aedfa75f0c85c4aa85b257f066fbea57c">GlobalValue::LinkageTypes</a> GetDecodedLinkage </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Val</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="BitcodeReader_8cpp_source.html#l00076">76</a> of file <a class="el" href="BitcodeReader_8cpp_source.html">BitcodeReader.cpp</a>.</p>
+
+<p>References <a class="el" href="GlobalValue_8h_source.html#l00040">llvm::GlobalValue::AppendingLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00034">llvm::GlobalValue::AvailableExternallyLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00048">llvm::GlobalValue::CommonLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00046">llvm::GlobalValue::DLLExportLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00045">llvm::GlobalValue::DLLImportLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00033">llvm::GlobalValue::ExternalLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00047">llvm::GlobalValue::ExternalWeakLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00041">llvm::GlobalValue::InternalLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00043">llvm::GlobalValue::LinkerPrivateLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00044">llvm::GlobalValue::LinkerPrivateWeakLinkage<
 /a>, <a class="el" href="GlobalValue_8h_source.html#l00035">llvm::GlobalValue::LinkOnceAnyLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00037">llvm::GlobalValue::LinkOnceODRAutoHideLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00036">llvm::GlobalValue::LinkOnceODRLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00042">llvm::GlobalValue::PrivateLinkage</a>, <a class="el" href="GlobalValue_8h_source.html#l00038">llvm::GlobalValue::WeakAnyLinkage</a>, and <a class="el" href="GlobalValue_8h_source.html#l00039">llvm::GlobalValue::WeakODRLinkage</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9fd3aaff812b87ce743d0864c4e7395d"></a><!-- doxytag: member="BitcodeReader.cpp::GetDecodedOrdering" ref="a9fd3aaff812b87ce743d0864c4e7395d" args="(unsigned Val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="namespacellvm.html#abf74b2f0dbae96f4708d3e407b36df02">AtomicOrdering</a> GetDecodedOrdering </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Val</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="BitcodeReader_8cpp_source.html#l00176">176</a> of file <a class="el" href="BitcodeReader_8cpp_source.html">BitcodeReader.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l00042">llvm::Acquire</a>, <a class="el" href="Instructions_8h_source.html#l00044">llvm::AcquireRelease</a>, <a class="el" href="Instructions_8h_source.html#l00040">llvm::Monotonic</a>, <a class="el" href="Instructions_8h_source.html#l00038">llvm::NotAtomic</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00250">llvm::bitc::ORDERING_ACQREL</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00248">llvm::bitc::ORDERING_ACQUIRE</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00247">llvm::bitc::ORDERING_MONOTONIC</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00245">llvm::bitc::ORDERING_NOTATOMIC</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00249">llvm::bitc::ORDERING_RELEASE</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00251">llvm::bitc::ORDERING_SEQCST</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00246">llvm::bitc::ORDERING_UNORDERED</a>, <a class="el" href="Instructio
 ns_8h_source.html#l00043">llvm::Release</a>, <a class="el" href="Instructions_8h_source.html#l00045">llvm::SequentiallyConsistent</a>, and <a class="el" href="Instructions_8h_source.html#l00039">llvm::Unordered</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaec9720b4db9b9b845cd8830d38c7837"></a><!-- doxytag: member="BitcodeReader.cpp::GetDecodedRMWOperation" ref="aaec9720b4db9b9b845cd8830d38c7837" args="(unsigned Val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1AtomicRMWInst.html#adbf3dd67a56ac91e0d98970d31e053c0">AtomicRMWInst::BinOp</a> GetDecodedRMWOperation </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Val</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="BitcodeReader_8cpp_source.html#l00159">159</a> of file <a class="el" href="BitcodeReader_8cpp_source.html">BitcodeReader.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l00570">llvm::AtomicRMWInst::Add</a>, <a class="el" href="Instructions_8h_source.html#l00574">llvm::AtomicRMWInst::And</a>, <a class="el" href="Instructions_8h_source.html#l00592">llvm::AtomicRMWInst::BAD_BINOP</a>, <a class="el" href="Instructions_8h_source.html#l00582">llvm::AtomicRMWInst::Max</a>, <a class="el" href="Instructions_8h_source.html#l00584">llvm::AtomicRMWInst::Min</a>, <a class="el" href="Instructions_8h_source.html#l00576">llvm::AtomicRMWInst::Nand</a>, <a class="el" href="Instructions_8h_source.html#l00578">llvm::AtomicRMWInst::Or</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00218">llvm::bitc::RMW_ADD</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00220">llvm::bitc::RMW_AND</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00224">llvm::bitc::RMW_MAX</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00225">llvm::bitc::RMW_MIN</a>, <a class="el" href="LLVMBitCodes_8h_source.
 html#l00221">llvm::bitc::RMW_NAND</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00222">llvm::bitc::RMW_OR</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00219">llvm::bitc::RMW_SUB</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00226">llvm::bitc::RMW_UMAX</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00227">llvm::bitc::RMW_UMIN</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00217">llvm::bitc::RMW_XCHG</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00223">llvm::bitc::RMW_XOR</a>, <a class="el" href="Instructions_8h_source.html#l00572">llvm::AtomicRMWInst::Sub</a>, <a class="el" href="Instructions_8h_source.html#l00586">llvm::AtomicRMWInst::UMax</a>, <a class="el" href="Instructions_8h_source.html#l00588">llvm::AtomicRMWInst::UMin</a>, <a class="el" href="Instructions_8h_source.html#l00568">llvm::AtomicRMWInst::Xchg</a>, and <a class="el" href="Instructions_8h_source.html#l00580">llvm::AtomicRMWInst::Xor</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a629d28deebfd1e26ea19acb7ce971e1e"></a><!-- doxytag: member="BitcodeReader.cpp::GetDecodedSynchScope" ref="a629d28deebfd1e26ea19acb7ce971e1e" args="(unsigned Val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="namespacellvm.html#af044e7b099a53c587d1568b5b153b1a5">SynchronizationScope</a> GetDecodedSynchScope </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Val</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="BitcodeReader_8cpp_source.html#l00189">189</a> of file <a class="el" href="BitcodeReader_8cpp_source.html">BitcodeReader.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l00050">llvm::CrossThread</a>, <a class="el" href="Instructions_8h_source.html#l00049">llvm::SingleThread</a>, <a class="el" href="LLVMBitCodes_8h_source.html#l00257">llvm::bitc::SYNCHSCOPE_CROSSTHREAD</a>, and <a class="el" href="LLVMBitCodes_8h_source.html#l00256">llvm::bitc::SYNCHSCOPE_SINGLETHREAD</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac7c02c0b26b6c3e7e9ed3eb70f8096fc"></a><!-- doxytag: member="BitcodeReader.cpp::GetDecodedThreadLocalMode" ref="ac7c02c0b26b6c3e7e9ed3eb70f8096fc" args="(unsigned Val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1GlobalVariable.html#a8258421dcc5f4b3beb309a25a4bcb643">GlobalVariable::ThreadLocalMode</a> GetDecodedThreadLocalMode </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Val</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="BitcodeReader_8cpp_source.html#l00107">107</a> of file <a class="el" href="BitcodeReader_8cpp_source.html">BitcodeReader.cpp</a>.</p>
+
+<p>References <a class="el" href="GlobalVariable_8h_source.html#l00055">llvm::GlobalVariable::GeneralDynamicTLSModel</a>, <a class="el" href="GlobalVariable_8h_source.html#l00057">llvm::GlobalVariable::InitialExecTLSModel</a>, <a class="el" href="GlobalVariable_8h_source.html#l00056">llvm::GlobalVariable::LocalDynamicTLSModel</a>, <a class="el" href="GlobalVariable_8h_source.html#l00058">llvm::GlobalVariable::LocalExecTLSModel</a>, and <a class="el" href="GlobalVariable_8h_source.html#l00054">llvm::GlobalVariable::NotThreadLocal</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0b86e4d035572d87ed660c67d4b337d9"></a><!-- doxytag: member="BitcodeReader.cpp::GetDecodedVisibility" ref="a0b86e4d035572d87ed660c67d4b337d9" args="(unsigned Val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1GlobalValue.html#a9141f967188383108a69cc1b8ed3c195">GlobalValue::VisibilityTypes</a> GetDecodedVisibility </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Val</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="BitcodeReader_8cpp_source.html#l00098">98</a> of file <a class="el" href="BitcodeReader_8cpp_source.html">BitcodeReader.cpp</a>.</p>
+
+<p>References <a class="el" href="GlobalValue_8h_source.html#l00053">llvm::GlobalValue::DefaultVisibility</a>, <a class="el" href="GlobalValue_8h_source.html#l00054">llvm::GlobalValue::HiddenVisibility</a>, and <a class="el" href="GlobalValue_8h_source.html#l00055">llvm::GlobalValue::ProtectedVisibility</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a89be8d4fbc9aa8bb7158642907741814"></a><!-- doxytag: member="BitcodeReader.cpp::ReadWideAPInt" ref="a89be8d4fbc9aa8bb7158642907741814" args="(ArrayRef< uint64_t > Vals, unsigned TypeBits)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1APInt.html">APInt</a> ReadWideAPInt </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1ArrayRef.html">ArrayRef</a>< uint64_t > </td>
+          <td class="paramname"><em>Vals</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>TypeBits</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="BitcodeReader_8cpp_source.html#l00943">943</a> of file <a class="el" href="BitcodeReader_8cpp_source.html">BitcodeReader.cpp</a>.</p>
+
+<p>References <a class="el" href="ArrayRef_8h_source.html#l00084">llvm::ArrayRef< T >::begin()</a>, <a class="el" href="BitcodeReader_8cpp_source.html#l00896">llvm::BitcodeReader::decodeSignRotatedValue()</a>, <a class="el" href="ArrayRef_8h_source.html#l00085">llvm::ArrayRef< T >::end()</a>, and <a class="el" href="ArrayRef_8h_source.html#l00093">llvm::ArrayRef< T >::size()</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:27 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/BitcodeReader_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BitcodeReader_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BitcodeReader_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BitcodeReader_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,34 @@
+<map id="G" name="G">
+<area shape="rect" href="$GVMaterializer_8h.html" title="llvm/GVMaterializer.h" alt="" coords="1145,84,1300,111"/>
+<area shape="rect" href="$Attributes_8h.html" title="llvm/Attributes.h" alt="" coords="236,161,361,188"/>
+<area shape="rect" href="$Type_8h.html" title="llvm/Type.h" alt="" coords="19,239,109,265"/>
+<area shape="rect" href="$OperandTraits_8h.html" title="llvm/OperandTraits.h" alt="" coords="2200,84,2352,111"/>
+<area shape="rect" href="$BitstreamReader_8h.html" title="llvm/Bitcode/BitstreamReader.h" alt="" coords="900,84,1121,111"/>
+<area shape="rect" href="$LLVMBitCodes_8h.html" title="llvm/Bitcode/LLVMBitCodes.h" alt="" coords="1332,84,1537,111"/>
+<area shape="rect" href="$ValueHandle_8h.html" title="llvm/Support/ValueHandle.h" alt="" coords="2564,161,2761,188"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="2039,239,2199,265"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="185,316,375,343"/>
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="336,239,480,265"/>
+<area shape="rect" href="$SwapByteOrder_8h.html" title="llvm/Support/SwapByteOrder.h" alt="" coords="256,393,472,420"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="1053,548,1237,575"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="1761,316,1929,343"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="2095,393,2257,420"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="2233,471,2407,497"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="1588,393,1775,420"/>
+<area shape="rect" href="$Casting_8h.html" title="llvm/Support/Casting.h" alt="" coords="1297,316,1463,343"/>
+<area shape="rect" href="$User_8h.html" title="llvm/User.h" alt="" coords="2273,161,2364,188"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="1509,239,1715,265"/>
+<area shape="rect" href="$Value_8h.html" title="llvm/Value.h" alt="" coords="2508,239,2607,265"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="1537,316,1687,343"/>
+<area shape="rect" href="$Use_8h.html" title="llvm/Use.h" alt="" coords="2513,316,2601,343"/>
+<area shape="rect" href="$PointerIntPair_8h.html" title="llvm/ADT/PointerIntPair.h" alt="" coords="2676,393,2852,420"/>
+<area shape="rect" href="$PointerLikeTypeTraits_8h.html" title="llvm/Support/PointerLikeTypeTraits.h" alt="" coords="2701,471,2949,497"/>
+<area shape="rect" href="$OwningPtr_8h.html" title="llvm/ADT/OwningPtr.h" alt="" coords="1023,393,1177,420"/>
+<area shape="rect" href="$BitCodes_8h.html" title="llvm/Bitcode/BitCodes.h" alt="" coords="1371,161,1541,188"/>
+<area shape="rect" href="$Endian_8h.html" title="llvm/Support/Endian.h" alt="" coords="813,239,973,265"/>
+<area shape="rect" href="$StreamableMemoryObject_8h.html" title="llvm/Support/StreamableMemoryObject.h" alt="" coords="504,239,789,265"/>
+<area shape="rect" href="$Host_8h.html" title="llvm/Support/Host.h" alt="" coords="772,316,919,343"/>
+<area shape="rect" href="$MemoryObject_8h.html" title="llvm/Support/MemoryObject.h" alt="" coords="221,471,432,497"/>
+<area shape="rect" href="$DataStream_8h.html" title="llvm/Support/DataStream.h" alt="" coords="551,316,748,343"/>
+<area shape="rect" href="$DenseMapInfo_8h.html" title="llvm/ADT/DenseMapInfo.h" alt="" coords="2676,316,2860,343"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/BitcodeWriterPass_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BitcodeWriterPass_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BitcodeWriterPass_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BitcodeWriterPass_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,65 @@
+<!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: BitcodeWriterPass.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_db2030fcbb8ba0dd11a2d2bc205cd95d.html">Bitcode</a>      </li>
+      <li class="navelem"><a class="el" href="dir_08c960a20b0db17f0764762d0e72de8b.html">Writer</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">BitcodeWriterPass.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="ReaderWriter_8h_source.html">llvm/Bitcode/ReaderWriter.h</a>"</code><br/>
+<code>#include "<a class="el" href="Pass_8h_source.html">llvm/Pass.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for BitcodeWriterPass.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="BitcodeWriterPass_8cpp__incl.png" border="0" usemap="#BitcodeWriterPass_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="BitcodeWriterPass_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:27 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/Bitcode_2Archive_8h__dep__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Bitcode_2Archive_8h__dep__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Bitcode_2Archive_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Bitcode_2Archive_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Bitcode_2Archive_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Bitcode_2Archive_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,17 @@
+<map id="G" name="G">
+<area shape="rect" href="$ilist_8h.html" title="llvm/ADT/ilist.h" alt="" coords="115,393,229,420"/>
+<area shape="rect" href="$ilist__node_8h.html" title="llvm/ADT/ilist_node.h" alt="" coords="1833,84,1985,111"/>
+<area shape="rect" href="$Path_8h.html" title="llvm/Support/Path.h" alt="" coords="1612,84,1759,111"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="607,548,780,575"/>
+<area shape="rect" href="$PathV1_8h.html" title="llvm/Support/PathV1.h" alt="" coords="1493,316,1656,343"/>
+<area shape="rect" href="$PathV2_8h.html" title="llvm/Support/PathV2.h" alt="" coords="1072,161,1235,188"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="969,393,1119,420"/>
+<area shape="rect" href="$TimeValue_8h.html" title="llvm/Support/TimeValue.h" alt="" coords="1483,393,1667,420"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="909,471,1096,497"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="1397,548,1581,575"/>
+<area shape="rect" href="$SmallString_8h.html" title="llvm/ADT/SmallString.h" alt="" coords="727,316,895,343"/>
+<area shape="rect" href="$Twine_8h.html" title="llvm/ADT/Twine.h" alt="" coords="1091,239,1216,265"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="535,393,703,420"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="203,471,365,497"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="1051,316,1256,343"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/BitstreamReader_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/BitstreamReader_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/BitstreamReader_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/BitstreamReader_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,20 @@
+<map id="G" name="G">
+<area shape="rect" href="$OwningPtr_8h.html" title="llvm/ADT/OwningPtr.h" alt="" coords="56,316,211,343"/>
+<area shape="rect" href="$BitCodes_8h.html" title="llvm/Bitcode/BitCodes.h" alt="" coords="356,161,527,188"/>
+<area shape="rect" href="$Endian_8h.html" title="llvm/Support/Endian.h" alt="" coords="1223,84,1383,111"/>
+<area shape="rect" href="$StreamableMemoryObject_8h.html" title="llvm/Support/StreamableMemoryObject.h" alt="" coords="1504,239,1789,265"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="117,471,291,497"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="357,316,525,343"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="992,548,1176,575"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="480,239,685,265"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="431,393,593,420"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="703,393,889,420"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="1077,316,1227,343"/>
+<area shape="rect" href="$Host_8h.html" title="llvm/Support/Host.h" alt="" coords="1181,161,1328,188"/>
+<area shape="rect" href="$SwapByteOrder_8h.html" title="llvm/Support/SwapByteOrder.h" alt="" coords="1121,471,1337,497"/>
+<area shape="rect" href="$StringMap_8h.html" title="llvm/ADT/StringMap.h" alt="" coords="1123,239,1280,265"/>
+<area shape="rect" href="$Allocator_8h.html" title="llvm/Support/Allocator.h" alt="" coords="860,316,1033,343"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="1121,393,1311,420"/>
+<area shape="rect" href="$MemoryObject_8h.html" title="llvm/Support/MemoryObject.h" alt="" coords="1361,471,1572,497"/>
+<area shape="rect" href="$DataStream_8h.html" title="llvm/Support/DataStream.h" alt="" coords="1504,316,1701,343"/>
+</map>

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





More information about the llvm-commits mailing list