[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