docs: Use <Hn> as Heading elements instead of <DIV class="doc_foo">.

H1 ... doc_title
H2 ... doc_section
H3 ... doc_subsection
H4 ... doc_subsubsection

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129736 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
NAKAMURA Takumi 2011-04-18 23:59:50 +00:00
parent 1f48a95ccb
commit 05d0265fef
55 changed files with 2577 additions and 2440 deletions

View File

@ -7,9 +7,9 @@
</head>
<body>
<div class="doc_title">
<h1>
LLVM Alias Analysis Infrastructure
</div>
</h1>
<ol>
<li><a href="#introduction">Introduction</a></li>
@ -59,9 +59,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="introduction">Introduction</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -96,9 +96,9 @@ know</a>.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="overview"><tt>AliasAnalysis</tt> Class Overview</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -125,9 +125,9 @@ same function.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="pointers">Representation of Pointers</a>
</div>
</h3>
<div class="doc_text">
@ -181,9 +181,9 @@ that the accesses alias.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="alias">The <tt>alias</tt> method</a>
</div>
</h3>
<div class="doc_text">
<p>The <tt>alias</tt> method is the primary interface used to determine whether
@ -197,9 +197,9 @@ least one of the values is a <a href="LangRef.html#constants">constant</a>.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="MustMayNo">Must, May, and No Alias Responses</a>
</div>
</h4>
<div class="doc_text">
<p>The NoAlias response may be used when there is never an immediate dependence
@ -228,9 +228,9 @@ implies that the pointers compare equal.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ModRefInfo">The <tt>getModRefInfo</tt> methods</a>
</div>
</h3>
<div class="doc_text">
@ -250,9 +250,9 @@ memory written to by CS2. Note that this relation is not commutative.</p>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="OtherItfs">Other useful <tt>AliasAnalysis</tt> methods</a>
</div>
</h3>
<div class="doc_text">
@ -264,9 +264,9 @@ analysis implementations and can be put to good use by various clients.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
The <tt>pointsToConstantMemory</tt> method
</div>
</h4>
<div class="doc_text">
@ -279,10 +279,10 @@ memory location to be modified.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="simplemodref">The <tt>doesNotAccessMemory</tt> and
<tt>onlyReadsMemory</tt> methods</a>
</div>
</h4>
<div class="doc_text">
@ -308,9 +308,9 @@ functions that satisfy the <tt>doesNotAccessMemory</tt> method also satisfies
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="writingnew">Writing a new <tt>AliasAnalysis</tt> Implementation</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -324,9 +324,9 @@ implementations</a> included with LLVM.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="passsubclasses">Different Pass styles</a>
</div>
</h3>
<div class="doc_text">
@ -352,9 +352,9 @@ solve:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="requiredcalls">Required initialization calls</a>
</div>
</h3>
<div class="doc_text">
@ -393,9 +393,9 @@ bool run(Module &amp;M) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="interfaces">Interfaces which may be specified</a>
</div>
</h3>
<div class="doc_text">
@ -412,9 +412,9 @@ implementing, you just override the interfaces you can improve.</p>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="chaining"><tt>AliasAnalysis</tt> chaining behavior</a>
</div>
</h3>
<div class="doc_text">
@ -451,9 +451,9 @@ updated.</p>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="updating">Updating analysis results for transformations</a>
</div>
</h3>
<div class="doc_text">
<p>
@ -474,7 +474,7 @@ sure to call these interfaces appropriately.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">The <tt>deleteValue</tt> method</div>
<h4>The <tt>deleteValue</tt> method</h4>
<div class="doc_text">
The <tt>deleteValue</tt> method is called by transformations when they remove an
@ -485,7 +485,7 @@ any entries for the specified value, if they exist.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">The <tt>copyValue</tt> method</div>
<h4>The <tt>copyValue</tt> method</h4>
<div class="doc_text">
The <tt>copyValue</tt> method is used when a new value is introduced into the
@ -496,7 +496,7 @@ new value has exactly the same properties as the value being copied.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">The <tt>replaceWithNewValue</tt> method</div>
<h4>The <tt>replaceWithNewValue</tt> method</h4>
<div class="doc_text">
This method is a simple helper method that is provided to make clients easier to
@ -506,7 +506,7 @@ analysis implementations.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">The <tt>addEscapingUse</tt> method</div>
<h4>The <tt>addEscapingUse</tt> method</h4>
<div class="doc_text">
<p>The <tt>addEscapingUse</tt> method is used when the uses of a pointer
@ -528,9 +528,9 @@ uses below:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="implefficiency">Efficiency Issues</a>
</div>
</h3>
<div class="doc_text">
@ -544,9 +544,9 @@ method as possible (within reason).</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="limitations">Limitations</a>
</div>
</h3>
<div class="doc_text">
@ -617,9 +617,9 @@ from itself.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="using">Using alias analysis results</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -630,9 +630,9 @@ preference, these are...</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="memdep">Using the <tt>MemoryDependenceAnalysis</tt> Pass</a>
</div>
</h3>
<div class="doc_text">
@ -645,9 +645,9 @@ efficient, and is used by Dead Store Elimination, GVN, and memcpy optimizations.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ast">Using the <tt>AliasSetTracker</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -681,9 +681,9 @@ pointer argument is loop-invariant.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
The AliasSetTracker implementation
</div>
</h4>
<div class="doc_text">
@ -707,9 +707,9 @@ are.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="direct">Using the <tt>AliasAnalysis</tt> interface directly</a>
</div>
</h3>
<div class="doc_text">
@ -722,9 +722,9 @@ best precision and efficiency.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="exist">Existing alias analysis implementations and clients</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -738,9 +738,9 @@ for monitoring and evaluating different implementations.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="impls">Available <tt>AliasAnalysis</tt> implementations</a>
</div>
</h3>
<div class="doc_text">
@ -752,9 +752,9 @@ href="#chaining">chain</a> to other alias analysis implementations.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="no-aa">The <tt>-no-aa</tt> pass</a>
</div>
</h4>
<div class="doc_text">
@ -766,9 +766,9 @@ problem.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="basic-aa">The <tt>-basicaa</tt> pass</a>
</div>
</h4>
<div class="doc_text">
@ -794,9 +794,9 @@ many important facts:</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="globalsmodref">The <tt>-globalsmodref-aa</tt> pass</a>
</div>
</h4>
<div class="doc_text">
@ -818,9 +818,9 @@ non-address taken globals), but is very quick analysis.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="steens-aa">The <tt>-steens-aa</tt> pass</a>
</div>
</h4>
<div class="doc_text">
@ -841,9 +841,9 @@ module, it is not part of the LLVM core.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ds-aa">The <tt>-ds-aa</tt> pass</a>
</div>
</h4>
<div class="doc_text">
@ -864,9 +864,9 @@ module, it is not part of the LLVM core.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="scev-aa">The <tt>-scev-aa</tt> pass</a>
</div>
</h4>
<div class="doc_text">
@ -878,9 +878,9 @@ and loop induction variables than other alias analyses have.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="aliasanalysis-xforms">Alias analysis driven transformations</a>
</div>
</h3>
<div class="doc_text">
LLVM includes several alias-analysis driven transformations which can be used
@ -888,9 +888,9 @@ with any of the implementations above.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="adce">The <tt>-adce</tt> pass</a>
</div>
</h4>
<div class="doc_text">
@ -902,9 +902,9 @@ not have side-effects and are not used.</p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="licm">The <tt>-licm</tt> pass</a>
</div>
</h4>
<div class="doc_text">
@ -927,9 +927,9 @@ no may aliases to the loaded/stored memory location.</li>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="argpromotion">The <tt>-argpromotion</tt> pass</a>
</div>
</h4>
<div class="doc_text">
<p>
@ -942,10 +942,10 @@ pointer.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="gvn">The <tt>-gvn</tt>, <tt>-memcpyopt</tt>, and <tt>-dse</tt>
passes</a>
</div>
</h4>
<div class="doc_text">
@ -955,10 +955,10 @@ pointer.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="aliasanalysis-debug">Clients for debugging and evaluation of
implementations</a>
</div>
</h3>
<div class="doc_text">
@ -969,9 +969,9 @@ implementations. You can use them with commands like '<tt>opt -ds-aa
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="print-alias-sets">The <tt>-print-alias-sets</tt> pass</a>
</div>
</h4>
<div class="doc_text">
@ -990,9 +990,9 @@ the <tt>AliasSetTracker</tt> class. To use it, use something like:</p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="count-aa">The <tt>-count-aa</tt> pass</a>
</div>
</h4>
<div class="doc_text">
@ -1014,9 +1014,9 @@ when debugging a transformation or an alias analysis implementation.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="aa-eval">The <tt>-aa-eval</tt> pass</a>
</div>
</h4>
<div class="doc_text">
@ -1029,9 +1029,9 @@ algorithm will have a lower number of may aliases).</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="memdep">Memory Dependence Analysis</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -7,7 +7,7 @@
<link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>
<div class="doc_title"> LLVM Bitcode File Format </div>
<h1> LLVM Bitcode File Format</h1>
<ol>
<li><a href="#abstract">Abstract</a></li>
<li><a href="#overview">Overview</a></li>
@ -47,7 +47,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"> <a name="abstract">Abstract</a></div>
<h2><a name="abstract">Abstract</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -58,7 +58,7 @@ the LLVM IR into it.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"> <a name="overview">Overview</a></div>
<h2><a name="overview">Overview</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -88,7 +88,7 @@ wrapper format, then describes the record structure used by LLVM IR files.
</div>
<!-- *********************************************************************** -->
<div class="doc_section"> <a name="bitstream">Bitstream Format</a></div>
<h2><a name="bitstream">Bitstream Format</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -117,8 +117,9 @@ understanding the encoding.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="magic">Magic Numbers</a>
</div>
<h3>
<a name="magic">Magic Numbers</a>
</h3>
<div class="doc_text">
@ -130,8 +131,9 @@ bitcode, while application-specific programs will want to look at all four.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="primitives">Primitives</a>
</div>
<h3>
<a name="primitives">Primitives</a>
</h3>
<div class="doc_text">
@ -147,8 +149,9 @@ Integers</a>.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"> <a name="fixedwidth">Fixed Width Integers</a>
</div>
<h4>
<a name="fixedwidth">Fixed Width Integers</a>
</h4>
<div class="doc_text">
@ -161,8 +164,9 @@ Integers</a>.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"> <a name="variablewidth">Variable Width
Integers</a></div>
<h4>
<a name="variablewidth">Variable Width Integers</a>
</h4>
<div class="doc_text">
@ -182,7 +186,7 @@ value of 24 (011 << 3) with no continuation. The sum (3+24) yields the value
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"> <a name="char6">6-bit characters</a></div>
<h4><a name="char6">6-bit characters</a></h4>
<div class="doc_text">
@ -206,7 +210,7 @@ characters not in the set.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"> <a name="wordalign">Word Alignment</a></div>
<h4><a name="wordalign">Word Alignment</a></h4>
<div class="doc_text">
@ -218,8 +222,9 @@ represented as a multiple of 32-bit words.</p>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="abbrevid">Abbreviation IDs</a>
</div>
<h3>
<a name="abbrevid">Abbreviation IDs</a>
</h3>
<div class="doc_text">
@ -253,8 +258,9 @@ an <a href="#abbrev_records">abbreviated record encoding</a>.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="blocks">Blocks</a>
</div>
<h3>
<a name="blocks">Blocks</a>
</h3>
<div class="doc_text">
@ -300,8 +306,7 @@ popped, the saved values are restored.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"> <a name="ENTER_SUBBLOCK">ENTER_SUBBLOCK
Encoding</a></div>
<h4><a name="ENTER_SUBBLOCK">ENTER_SUBBLOCK Encoding</a></h4>
<div class="doc_text">
@ -322,8 +327,7 @@ reader to skip over the entire block in one jump.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"> <a name="END_BLOCK">END_BLOCK
Encoding</a></div>
<h4><a name="END_BLOCK">END_BLOCK Encoding</a></h4>
<div class="doc_text">
@ -340,8 +344,9 @@ an even multiple of 32-bits.
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="datarecord">Data Records</a>
</div>
<h3>
<a name="datarecord">Data Records</a>
</h3>
<div class="doc_text">
<p>
@ -358,8 +363,7 @@ ASCII codes for the characters in the string.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"> <a name="UNABBREV_RECORD">UNABBREV_RECORD
Encoding</a></div>
<h4><a name="UNABBREV_RECORD">UNABBREV_RECORD Encoding</a></h4>
<div class="doc_text">
@ -385,8 +389,7 @@ bits. This is not an efficient encoding, but it is fully general.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"> <a name="abbrev_records">Abbreviated Record
Encoding</a></div>
<h4><a name="abbrev_records">Abbreviated Record Encoding</a></h4>
<div class="doc_text">
@ -410,8 +413,9 @@ operand value).</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="abbreviations">Abbreviations</a>
</div>
<h3>
<a name="abbreviations">Abbreviations</a>
</h3>
<div class="doc_text">
<p>
@ -434,8 +438,7 @@ operators, the abbreviation does not need to be emitted.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="DEFINE_ABBREV">DEFINE_ABBREV
Encoding</a></div>
<h4><a name="DEFINE_ABBREV">DEFINE_ABBREV Encoding</a></h4>
<div class="doc_text">
@ -553,8 +556,9 @@ used for any other string value.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="stdblocks">Standard Blocks</a>
</div>
<h3>
<a name="stdblocks">Standard Blocks</a>
</h3>
<div class="doc_text">
@ -568,8 +572,7 @@ may be added. Block IDs 0-7 are reserved for standard blocks.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="BLOCKINFO">#0 - BLOCKINFO
Block</a></div>
<h4><a name="BLOCKINFO">#0 - BLOCKINFO Block</a></h4>
<div class="doc_text">
@ -621,7 +624,7 @@ from the corresponding blocks. It is not safe to skip them.
</div>
<!-- *********************************************************************** -->
<div class="doc_section"> <a name="wrapper">Bitcode Wrapper Format</a></div>
<h2><a name="wrapper">Bitcode Wrapper Format</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -652,7 +655,7 @@ value that can be used to encode the CPU of the target.
</div>
<!-- *********************************************************************** -->
<div class="doc_section"> <a name="llvmir">LLVM IR Encoding</a></div>
<h2><a name="llvmir">LLVM IR Encoding</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -669,11 +672,12 @@ reader is not allowed to build in any knowledge of this.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="basics">Basics</a>
</div>
<h3>
<a name="basics">Basics</a>
</h3>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="ir_magic">LLVM IR Magic Number</a></div>
<h4><a name="ir_magic">LLVM IR Magic Number</a></h4>
<div class="doc_text">
@ -695,7 +699,7 @@ When combined with the bitcode magic number and viewed as bytes, this is
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="ir_signed_vbr">Signed VBRs</a></div>
<h4><a name="ir_signed_vbr">Signed VBRs</a></h4>
<div class="doc_text">
@ -728,7 +732,7 @@ within <tt>CONSTANTS_BLOCK</tt> blocks.
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="ir_blocks">LLVM IR Blocks</a></div>
<h4><a name="ir_blocks">LLVM IR Blocks</a></h4>
<div class="doc_text">
@ -759,8 +763,9 @@ LLVM IR is defined with the following blocks:
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="MODULE_BLOCK">MODULE_BLOCK Contents</a>
</div>
<h3>
<a name="MODULE_BLOCK">MODULE_BLOCK Contents</a>
</h3>
<div class="doc_text">
@ -785,8 +790,7 @@ following sub-blocks:
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="MODULE_CODE_VERSION">MODULE_CODE_VERSION Record</a>
</div>
<h4><a name="MODULE_CODE_VERSION">MODULE_CODE_VERSION Record</a></h4>
<div class="doc_text">
@ -798,8 +802,7 @@ time.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="MODULE_CODE_TRIPLE">MODULE_CODE_TRIPLE Record</a>
</div>
<h4><a name="MODULE_CODE_TRIPLE">MODULE_CODE_TRIPLE Record</a></h4>
<div class="doc_text">
<p><tt>[TRIPLE, ...string...]</tt></p>
@ -810,8 +813,7 @@ specification string.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="MODULE_CODE_DATALAYOUT">MODULE_CODE_DATALAYOUT Record</a>
</div>
<h4><a name="MODULE_CODE_DATALAYOUT">MODULE_CODE_DATALAYOUT Record</a></h4>
<div class="doc_text">
<p><tt>[DATALAYOUT, ...string...]</tt></p>
@ -822,8 +824,7 @@ specification string.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="MODULE_CODE_ASM">MODULE_CODE_ASM Record</a>
</div>
<h4><a name="MODULE_CODE_ASM">MODULE_CODE_ASM Record</a></h4>
<div class="doc_text">
<p><tt>[ASM, ...string...]</tt></p>
@ -834,8 +835,7 @@ individual assembly blocks separated by newline (ASCII 10) characters.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="MODULE_CODE_SECTIONNAME">MODULE_CODE_SECTIONNAME Record</a>
</div>
<h4><a name="MODULE_CODE_SECTIONNAME">MODULE_CODE_SECTIONNAME Record</a></h4>
<div class="doc_text">
<p><tt>[SECTIONNAME, ...string...]</tt></p>
@ -850,8 +850,7 @@ referenced by the 1-based index in the <i>section</i> fields of
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="MODULE_CODE_DEPLIB">MODULE_CODE_DEPLIB Record</a>
</div>
<h4><a name="MODULE_CODE_DEPLIB">MODULE_CODE_DEPLIB Record</a></h4>
<div class="doc_text">
<p><tt>[DEPLIB, ...string...]</tt></p>
@ -864,8 +863,7 @@ library name referenced.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="MODULE_CODE_GLOBALVAR">MODULE_CODE_GLOBALVAR Record</a>
</div>
<h4><a name="MODULE_CODE_GLOBALVAR">MODULE_CODE_GLOBALVAR Record</a></h4>
<div class="doc_text">
<p><tt>[GLOBALVAR, pointer type, isconst, initid, linkage, alignment, section, visibility, threadlocal]</tt></p>
@ -929,8 +927,7 @@ has <tt>unnamed_addr</tt></li>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="MODULE_CODE_FUNCTION">MODULE_CODE_FUNCTION Record</a>
</div>
<h4><a name="MODULE_CODE_FUNCTION">MODULE_CODE_FUNCTION Record</a></h4>
<div class="doc_text">
@ -986,8 +983,7 @@ has <tt>unnamed_addr</tt></li>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="MODULE_CODE_ALIAS">MODULE_CODE_ALIAS Record</a>
</div>
<h4><a name="MODULE_CODE_ALIAS">MODULE_CODE_ALIAS Record</a></h4>
<div class="doc_text">
@ -1011,8 +1007,7 @@ for this alias</li>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="MODULE_CODE_PURGEVALS">MODULE_CODE_PURGEVALS Record</a>
</div>
<h4><a name="MODULE_CODE_PURGEVALS">MODULE_CODE_PURGEVALS Record</a></h4>
<div class="doc_text">
<p><tt>[PURGEVALS, numvals]</tt></p>
@ -1025,8 +1020,7 @@ new value indices will start from the given <i>numvals</i> value.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="MODULE_CODE_GCNAME">MODULE_CODE_GCNAME Record</a>
</div>
<h4><a name="MODULE_CODE_GCNAME">MODULE_CODE_GCNAME Record</a></h4>
<div class="doc_text">
<p><tt>[GCNAME, ...string...]</tt></p>
@ -1040,8 +1034,9 @@ fields of <tt>FUNCTION</tt> records.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="PARAMATTR_BLOCK">PARAMATTR_BLOCK Contents</a>
</div>
<h3>
<a name="PARAMATTR_BLOCK">PARAMATTR_BLOCK Contents</a>
</h3>
<div class="doc_text">
@ -1061,8 +1056,7 @@ attribute lists). </p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="PARAMATTR_CODE_ENTRY">PARAMATTR_CODE_ENTRY Record</a>
</div>
<h4><a name="PARAMATTR_CODE_ENTRY">PARAMATTR_CODE_ENTRY Record</a></h4>
<div class="doc_text">
@ -1106,8 +1100,9 @@ the logarithm base 2 of the requested alignment, plus 1</li>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="TYPE_BLOCK">TYPE_BLOCK Contents</a>
</div>
<h3>
<a name="TYPE_BLOCK">TYPE_BLOCK Contents</a>
</h3>
<div class="doc_text">
@ -1127,8 +1122,7 @@ equivalent types). </p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_NUMENTRY">TYPE_CODE_NUMENTRY Record</a>
</div>
<h4><a name="TYPE_CODE_NUMENTRY">TYPE_CODE_NUMENTRY Record</a></h4>
<div class="doc_text">
@ -1142,8 +1136,7 @@ in the block.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_VOID">TYPE_CODE_VOID Record</a>
</div>
<h4><a name="TYPE_CODE_VOID">TYPE_CODE_VOID Record</a></h4>
<div class="doc_text">
@ -1155,8 +1148,7 @@ type table.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_FLOAT">TYPE_CODE_FLOAT Record</a>
</div>
<h4><a name="TYPE_CODE_FLOAT">TYPE_CODE_FLOAT Record</a></h4>
<div class="doc_text">
@ -1168,8 +1160,7 @@ floating point) type to the type table.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_DOUBLE">TYPE_CODE_DOUBLE Record</a>
</div>
<h4><a name="TYPE_CODE_DOUBLE">TYPE_CODE_DOUBLE Record</a></h4>
<div class="doc_text">
@ -1181,8 +1172,7 @@ floating point) type to the type table.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_LABEL">TYPE_CODE_LABEL Record</a>
</div>
<h4><a name="TYPE_CODE_LABEL">TYPE_CODE_LABEL Record</a></h4>
<div class="doc_text">
@ -1194,8 +1184,7 @@ the type table.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_OPAQUE">TYPE_CODE_OPAQUE Record</a>
</div>
<h4><a name="TYPE_CODE_OPAQUE">TYPE_CODE_OPAQUE Record</a></h4>
<div class="doc_text">
@ -1208,8 +1197,7 @@ unified.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_INTEGER">TYPE_CODE_INTEGER Record</a>
</div>
<h4><a name="TYPE_CODE_INTEGER">TYPE_CODE_INTEGER Record</a></h4>
<div class="doc_text">
@ -1222,8 +1210,7 @@ integer type.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_POINTER">TYPE_CODE_POINTER Record</a>
</div>
<h4><a name="TYPE_CODE_POINTER">TYPE_CODE_POINTER Record</a></h4>
<div class="doc_text">
@ -1243,8 +1230,7 @@ default address space is zero.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_FUNCTION">TYPE_CODE_FUNCTION Record</a>
</div>
<h4><a name="TYPE_CODE_FUNCTION">TYPE_CODE_FUNCTION Record</a></h4>
<div class="doc_text">
@ -1268,8 +1254,7 @@ parameter types of the function</li>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_STRUCT">TYPE_CODE_STRUCT Record</a>
</div>
<h4><a name="TYPE_CODE_STRUCT">TYPE_CODE_STRUCT Record</a></h4>
<div class="doc_text">
@ -1287,8 +1272,7 @@ types of the structure</li>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_ARRAY">TYPE_CODE_ARRAY Record</a>
</div>
<h4><a name="TYPE_CODE_ARRAY">TYPE_CODE_ARRAY Record</a></h4>
<div class="doc_text">
@ -1305,8 +1289,7 @@ table. The operand fields are</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_VECTOR">TYPE_CODE_VECTOR Record</a>
</div>
<h4><a name="TYPE_CODE_VECTOR">TYPE_CODE_VECTOR Record</a></h4>
<div class="doc_text">
@ -1323,8 +1306,7 @@ table. The operand fields are</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_X86_FP80">TYPE_CODE_X86_FP80 Record</a>
</div>
<h4><a name="TYPE_CODE_X86_FP80">TYPE_CODE_X86_FP80 Record</a></h4>
<div class="doc_text">
@ -1336,8 +1318,7 @@ floating point) type to the type table.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_FP128">TYPE_CODE_FP128 Record</a>
</div>
<h4><a name="TYPE_CODE_FP128">TYPE_CODE_FP128 Record</a></h4>
<div class="doc_text">
@ -1349,8 +1330,7 @@ floating point) type to the type table.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_PPC_FP128">TYPE_CODE_PPC_FP128 Record</a>
</div>
<h4><a name="TYPE_CODE_PPC_FP128">TYPE_CODE_PPC_FP128 Record</a></h4>
<div class="doc_text">
@ -1362,8 +1342,7 @@ floating point) type to the type table.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TYPE_CODE_METADATA">TYPE_CODE_METADATA Record</a>
</div>
<h4><a name="TYPE_CODE_METADATA">TYPE_CODE_METADATA Record</a></h4>
<div class="doc_text">
@ -1375,8 +1354,9 @@ type to the type table.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="CONSTANTS_BLOCK">CONSTANTS_BLOCK Contents</a>
</div>
<h3>
<a name="CONSTANTS_BLOCK">CONSTANTS_BLOCK Contents</a>
</h3>
<div class="doc_text">
@ -1387,8 +1367,9 @@ type to the type table.
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="FUNCTION_BLOCK">FUNCTION_BLOCK Contents</a>
</div>
<h3>
<a name="FUNCTION_BLOCK">FUNCTION_BLOCK Contents</a>
</h3>
<div class="doc_text">
@ -1409,8 +1390,9 @@ type to the type table.
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="TYPE_SYMTAB_BLOCK">TYPE_SYMTAB_BLOCK Contents</a>
</div>
<h3>
<a name="TYPE_SYMTAB_BLOCK">TYPE_SYMTAB_BLOCK Contents</a>
</h3>
<div class="doc_text">
@ -1422,8 +1404,7 @@ indices.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a name="TST_CODE_ENTRY">TST_CODE_ENTRY Record</a>
</div>
<h4><a name="TST_CODE_ENTRY">TST_CODE_ENTRY Record</a></h4>
<div class="doc_text">
@ -1438,8 +1419,9 @@ name. Each entry corresponds to a single named type.
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="VALUE_SYMTAB_BLOCK">VALUE_SYMTAB_BLOCK Contents</a>
</div>
<h3>
<a name="VALUE_SYMTAB_BLOCK">VALUE_SYMTAB_BLOCK Contents</a>
</h3>
<div class="doc_text">
@ -1450,8 +1432,9 @@ name. Each entry corresponds to a single named type.
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="METADATA_BLOCK">METADATA_BLOCK Contents</a>
</div>
<h3>
<a name="METADATA_BLOCK">METADATA_BLOCK Contents</a>
</h3>
<div class="doc_text">
@ -1462,8 +1445,9 @@ name. Each entry corresponds to a single named type.
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="METADATA_ATTACHMENT">METADATA_ATTACHMENT Contents</a>
</div>
<h3>
<a name="METADATA_ATTACHMENT">METADATA_ATTACHMENT Contents</a>
</h3>
<div class="doc_text">

View File

@ -6,9 +6,9 @@
<link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<div class="doc_title">
<h1>
LLVM bugpoint tool: design and usage
</div>
</h1>
<ul>
<li><a href="#desc">Description</a></li>
@ -27,9 +27,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="desc">Description</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -50,9 +50,9 @@ href="HowToSubmitABug.html">How To Submit a Bug Report document</a>.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="design">Design Philosophy</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -71,9 +71,9 @@ executing it) takes a long time.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="autoselect">Automatic Debugger Selection</a>
</div>
</h3>
<div class="doc_text">
@ -104,9 +104,9 @@ Otherwise, there is no problem <tt>bugpoint</tt> can debug.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="crashdebug">Crash debugger</a>
</div>
</h3>
<div class="doc_text">
@ -129,9 +129,9 @@ reproduce the failure with <tt>opt</tt> or <tt>llc</tt>.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="codegendebug">Code generator debugger</a>
</div>
</h3>
<div class="doc_text">
@ -150,9 +150,9 @@ good code.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="miscompilationdebug">Miscompilation debugger</a>
</div>
</h3>
<div class="doc_text">
@ -167,9 +167,9 @@ assumes that the selected code generator is working properly.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="advice">Advice for using bugpoint</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -6,9 +6,9 @@
<link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<div class="doc_title">
<h1>
Building LLVM with CMake
</div>
</h1>
<ul>
<li><a href="#intro">Introduction</a></li>
@ -36,9 +36,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="intro">Introduction</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -59,9 +59,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="quickstart">Quick start</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -112,9 +112,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="usage">Basic CMake usage</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -160,9 +160,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="options">Options and variables</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -197,9 +197,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="freccmake">Frequently-used CMake variables</a>
</div>
</h3>
<div class="doc_text">
@ -240,9 +240,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="llvmvars">LLVM-specific variables</a>
</div>
</h3>
<div class="doc_text">
@ -358,9 +358,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="testing">Executing the test suite</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -378,9 +378,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="cross">Cross compiling</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -399,9 +399,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="embedding">Embedding LLVM in your project</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -462,9 +462,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="passdev">Developing LLVM pass out of source</a>
</div>
</h3>
<div class="doc_text">
@ -519,9 +519,9 @@
<!-- *********************************************************************** -->
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="specifics">Compiler/Platform specific topics</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -530,9 +530,9 @@
</div>
<div class="doc_subsection">
<h3>
<a name="msvc">Microsoft Visual C++</a>
</div>
</h3>
<div class="doc_text">

View File

@ -19,9 +19,9 @@
</head>
<body>
<div class="doc_title">
<h1>
The LLVM Target-Independent Code Generator
</div>
</h1>
<ol>
<li><a href="#introduction">Introduction</a>
@ -127,9 +127,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="introduction">Introduction</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -191,9 +191,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="required">Required components in the code generator</a>
</div>
</h3>
<div class="doc_text">
@ -223,9 +223,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="high-level-design">The high-level design of the code generator</a>
</div>
</h3>
<div class="doc_text">
@ -297,9 +297,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="tablegen">Using TableGen for target description</a>
</div>
</h3>
<div class="doc_text">
@ -325,9 +325,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="targetdesc">Target description classes</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -349,9 +349,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="targetmachine">The <tt>TargetMachine</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -369,9 +369,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="targetdata">The <tt>TargetData</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -385,9 +385,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="targetlowering">The <tt>TargetLowering</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -411,9 +411,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="targetregisterinfo">The <tt>TargetRegisterInfo</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -445,9 +445,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="targetinstrinfo">The <tt>TargetInstrInfo</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -463,9 +463,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="targetframeinfo">The <tt>TargetFrameInfo</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -479,9 +479,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="targetsubtarget">The <tt>TargetSubtarget</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -495,9 +495,9 @@
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="targetjitinfo">The <tt>TargetJITInfo</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -510,9 +510,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="codegendesc">Machine code description classes</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -531,9 +531,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="machineinstr">The <tt>MachineInstr</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -579,9 +579,9 @@
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="buildmi">Using the <tt>MachineInstrBuilder.h</tt> functions</a>
</div>
</h4>
<div class="doc_text">
@ -630,9 +630,9 @@ MI.addReg(Reg, RegState::Define);
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="fixedregs">Fixed (preassigned) registers</a>
</div>
</h4>
<div class="doc_text">
@ -702,9 +702,9 @@ ret
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ssa">Machine code in SSA form</a>
</div>
</h4>
<div class="doc_text">
@ -720,9 +720,9 @@ ret
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="machinebasicblock">The <tt>MachineBasicBlock</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -737,9 +737,9 @@ ret
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="machinefunction">The <tt>MachineFunction</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -756,9 +756,9 @@ ret
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="mc">The "MC" Layer</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -783,9 +783,9 @@ in this manual.
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="mcstreamer">The <tt>MCStreamer</tt> API</a>
</div>
</h3>
<div class="doc_text">
@ -817,9 +817,9 @@ MCObjectStreamer implements a full assembler.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="mccontext">The <tt>MCContext</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -832,9 +832,9 @@ interact with to create symbols and sections. This class can not be subclassed.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="mcsymbol">The <tt>MCSymbol</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -864,9 +864,9 @@ like this to the .s file:<p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="mcsection">The <tt>MCSection</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -882,9 +882,9 @@ directive in a .s file).
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="mcinst">The <tt>MCInst</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -906,9 +906,9 @@ printer, and the type generated by the assembly parser and disassembler.
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="codegenalgs">Target-independent code generation algorithms</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -920,9 +920,9 @@ printer, and the type generated by the assembly parser and disassembler.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="instselect">Instruction Selection</a>
</div>
</h3>
<div class="doc_text">
@ -939,9 +939,9 @@ printer, and the type generated by the assembly parser and disassembler.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="selectiondag_intro">Introduction to SelectionDAGs</a>
</div>
</h4>
<div class="doc_text">
@ -1001,9 +1001,9 @@ printer, and the type generated by the assembly parser and disassembler.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="selectiondag_process">SelectionDAG Instruction Selection Process</a>
</div>
</h4>
<div class="doc_text">
@ -1082,9 +1082,9 @@ printer, and the type generated by the assembly parser and disassembler.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="selectiondag_build">Initial SelectionDAG Construction</a>
</div>
</h4>
<div class="doc_text">
@ -1102,9 +1102,9 @@ printer, and the type generated by the assembly parser and disassembler.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="selectiondag_legalize_types">SelectionDAG LegalizeTypes Phase</a>
</div>
</h4>
<div class="doc_text">
@ -1135,9 +1135,9 @@ printer, and the type generated by the assembly parser and disassembler.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="selectiondag_legalize">SelectionDAG Legalize Phase</a>
</div>
</h4>
<div class="doc_text">
@ -1167,10 +1167,11 @@ printer, and the type generated by the assembly parser and disassembler.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="selectiondag_optimize">SelectionDAG Optimization Phase: the DAG
Combiner</a>
</div>
<h4>
<a name="selectiondag_optimize">
SelectionDAG Optimization Phase: the DAG Combiner
</a>
</h4>
<div class="doc_text">
@ -1202,9 +1203,9 @@ printer, and the type generated by the assembly parser and disassembler.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="selectiondag_select">SelectionDAG Select Phase</a>
</div>
</h4>
<div class="doc_text">
@ -1363,9 +1364,9 @@ def : Pat&lt;(i32 imm:$imm),
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="selectiondag_sched">SelectionDAG Scheduling and Formation Phase</a>
</div>
</h4>
<div class="doc_text">
@ -1384,9 +1385,9 @@ def : Pat&lt;(i32 imm:$imm),
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="selectiondag_future">Future directions for the SelectionDAG</a>
</div>
</h4>
<div class="doc_text">
@ -1399,15 +1400,15 @@ def : Pat&lt;(i32 imm:$imm),
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ssamco">SSA-based Machine Code Optimizations</a>
</div>
</h3>
<div class="doc_text"><p>To Be Written</p></div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="liveintervals">Live Intervals</a>
</div>
</h3>
<div class="doc_text">
@ -1420,9 +1421,9 @@ def : Pat&lt;(i32 imm:$imm),
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="livevariable_analysis">Live Variable Analysis</a>
</div>
</h4>
<div class="doc_text">
@ -1466,9 +1467,9 @@ def : Pat&lt;(i32 imm:$imm),
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="liveintervals_analysis">Live Intervals Analysis</a>
</div>
</h4>
<div class="doc_text">
@ -1486,9 +1487,9 @@ def : Pat&lt;(i32 imm:$imm),
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="regalloc">Register Allocation</a>
</div>
</h3>
<div class="doc_text">
@ -1504,9 +1505,9 @@ def : Pat&lt;(i32 imm:$imm),
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="regAlloc_represent">How registers are represented in LLVM</a>
</div>
</h4>
<div class="doc_text">
@ -1617,9 +1618,9 @@ bool RegMapping_Fer::compatible_class(MachineFunction &amp;mf,
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="regAlloc_howTo">Mapping virtual registers to physical registers</a>
</div>
</h4>
<div class="doc_text">
@ -1667,9 +1668,9 @@ bool RegMapping_Fer::compatible_class(MachineFunction &amp;mf,
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="regAlloc_twoAddr">Handling two address instructions</a>
</div>
</h4>
<div class="doc_text">
@ -1703,9 +1704,9 @@ bool RegMapping_Fer::compatible_class(MachineFunction &amp;mf,
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="regAlloc_ssaDecon">The SSA deconstruction phase</a>
</div>
</h4>
<div class="doc_text">
@ -1727,9 +1728,9 @@ bool RegMapping_Fer::compatible_class(MachineFunction &amp;mf,
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="regAlloc_fold">Instruction folding</a>
</div>
</h4>
<div class="doc_text">
@ -1764,9 +1765,9 @@ bool RegMapping_Fer::compatible_class(MachineFunction &amp;mf,
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="regAlloc_builtIn">Built in register allocators</a>
</div>
</h4>
<div class="doc_text">
@ -1806,20 +1807,20 @@ $ llc -regalloc=pbqp file.bc -o pbqp.s;
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="proepicode">Prolog/Epilog Code Insertion</a>
</div>
</h3>
<div class="doc_text"><p>To Be Written</p></div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="latemco">Late Machine Code Optimizations</a>
</div>
</h3>
<div class="doc_text"><p>To Be Written</p></div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="codeemit">Code Emission</a>
</div>
</h3>
<div class="doc_text">
@ -1882,9 +1883,9 @@ to implement an assembler for your target.</p>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="nativeassembler">Implementing a Native Assembler</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1899,15 +1900,15 @@ compiler.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection" id="na_instparsing">Instruction Parsing</div>
<h3 id="na_instparsing">Instruction Parsing</h3>
<div class="doc_text"><p>To Be Written</p></div>
<!-- ======================================================================= -->
<div class="doc_subsection" id="na_instaliases">
<h3 id="na_instaliases">
Instruction Alias Processing
</div>
</h3>
<div class="doc_text">
<p>Once the instruction is parsed, it enters the MatchInstructionImpl function.
@ -1925,7 +1926,7 @@ description.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">Mnemonic Aliases</div>
<h4>Mnemonic Aliases</h4>
<div class="doc_text">
@ -1965,7 +1966,7 @@ on the current instruction set.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">Instruction Aliases</div>
<h4>Instruction Aliases</h4>
<div class="doc_text">
@ -2031,7 +2032,7 @@ subtarget specific.</p>
<!-- ======================================================================= -->
<div class="doc_subsection" id="na_matching">Instruction Matching</div>
<h3 id="na_matching">Instruction Matching</h3>
<div class="doc_text"><p>To Be Written</p></div>
@ -2039,9 +2040,9 @@ subtarget specific.</p>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="targetimpls">Target-specific Implementation Notes</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -2053,9 +2054,9 @@ subtarget specific.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="targetfeatures">Target Feature Matrix</a>
</div>
</h3>
<div class="doc_text">
@ -2231,7 +2232,7 @@ is the key:</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection" id="feat_reliable">Is Generally Reliable</div>
<h4 id="feat_reliable">Is Generally Reliable</h4>
<div class="doc_text">
<p>This box indicates whether the target is considered to be production quality.
@ -2241,7 +2242,7 @@ continuous use.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection" id="feat_asmparser">Assembly Parser</div>
<h4 id="feat_asmparser">Assembly Parser</h4>
<div class="doc_text">
<p>This box indicates whether the target supports parsing target specific .s
@ -2253,7 +2254,7 @@ support in the native .o file writer.</p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection" id="feat_disassembler">Disassembler</div>
<h4 id="feat_disassembler">Disassembler</h4>
<div class="doc_text">
<p>This box indicates whether the target supports the MCDisassembler API for
@ -2262,7 +2263,7 @@ disassembling machine opcode bytes into MCInst's.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection" id="feat_inlineasm">Inline Asm</div>
<h4 id="feat_inlineasm">Inline Asm</h4>
<div class="doc_text">
<p>This box indicates whether the target supports most popular inline assembly
@ -2274,7 +2275,7 @@ constraints relating to the X86 floating point stack.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection" id="feat_jit">JIT Support</div>
<h4 id="feat_jit">JIT Support</h4>
<div class="doc_text">
<p>This box indicates whether the target supports the JIT compiler through
@ -2286,7 +2287,7 @@ in ARM codegen mode, but lacks NEON and full Thumb support.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection" id="feat_objectwrite">.o File Writing</div>
<h4 id="feat_objectwrite">.o File Writing</h4>
<div class="doc_text">
@ -2302,7 +2303,7 @@ file to a .o file (as is the case for many C compilers).</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection" id="feat_tailcall">Tail Calls</div>
<h4 id="feat_tailcall">Tail Calls</h4>
<div class="doc_text">
@ -2317,9 +2318,9 @@ more more details</a>.</p>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="tailcallopt">Tail call optimization</a>
</div>
</h3>
<div class="doc_text">
@ -2383,9 +2384,9 @@ define fastcc i32 @tailcaller(i32 %in1, i32 %in2) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="sibcallopt">Sibling call optimization</a>
</div>
</h3>
<div class="doc_text">
@ -2427,9 +2428,9 @@ entry:
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="x86">The X86 backend</a>
</div>
</h3>
<div class="doc_text">
@ -2440,9 +2441,9 @@ entry:
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="x86_tt">X86 Target Triples supported</a>
</div>
</h4>
<div class="doc_text">
@ -2469,9 +2470,9 @@ entry:
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="x86_cc">X86 Calling Conventions supported</a>
</div>
</h4>
<div class="doc_text">
@ -2489,9 +2490,9 @@ entry:
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="x86_memory">Representing X86 addressing modes in MachineInstrs</a>
</div>
</h4>
<div class="doc_text">
@ -2526,9 +2527,9 @@ OperandTy: VirtReg, | VirtReg, UnsImm, VirtReg, SignExtImm PhysReg
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="x86_memory">X86 address spaces supported</a>
</div>
</h4>
<div class="doc_text">
@ -2571,9 +2572,9 @@ OperandTy: VirtReg, | VirtReg, UnsImm, VirtReg, SignExtImm PhysReg
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="x86_names">Instruction naming</a>
</div>
</h4>
<div class="doc_text">
@ -2592,9 +2593,9 @@ MOVSX32rm16 -&gt; movsx, 32-bit register, 16-bit memory
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ppc">The PowerPC backend</a>
</div>
</h3>
<div class="doc_text">
@ -2605,9 +2606,9 @@ MOVSX32rm16 -&gt; movsx, 32-bit register, 16-bit memory
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ppc_abi">LLVM PowerPC ABI</a>
</div>
</h4>
<div class="doc_text">
@ -2625,9 +2626,9 @@ MOVSX32rm16 -&gt; movsx, 32-bit register, 16-bit memory
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ppc_frame">Frame Layout</a>
</div>
</h4>
<div class="doc_text">
@ -2772,9 +2773,9 @@ MOVSX32rm16 -&gt; movsx, 32-bit register, 16-bit memory
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ppc_prolog">Prolog/Epilog</a>
</div>
</h4>
<div class="doc_text">
@ -2789,9 +2790,9 @@ MOVSX32rm16 -&gt; movsx, 32-bit register, 16-bit memory
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ppc_dynamic">Dynamic Allocation</a>
</div>
</h4>
<div class="doc_text">

View File

@ -7,9 +7,9 @@
</head>
<body>
<div class="doc_title">
<h1>
LLVM Coding Standards
</div>
</h1>
<ol>
<li><a href="#introduction">Introduction</a></li>
@ -83,9 +83,9 @@
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="introduction">Introduction</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -117,20 +117,20 @@ href="mailto:sabre@nondot.org">Chris</a>.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="mechanicalissues">Mechanical Source Issues</a>
</div>
</h2>
<!-- *********************************************************************** -->
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="sourceformating">Source Code Formatting</a>
</div>
</h3>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="scf_commenting">Commenting</a>
</div>
</h4>
<div class="doc_text">
@ -208,9 +208,9 @@ happens: does the method return null? Abort? Format your hard disk?</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="scf_commentformat">Comment Formatting</a>
</div>
</h4>
<div class="doc_text">
@ -233,9 +233,9 @@ These nest properly and are better behaved in general than C style comments.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="scf_includes"><tt>#include</tt> Style</a>
</div>
</h4>
<div class="doc_text">
@ -273,9 +273,9 @@ implements are defined.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="scf_codewidth">Source Code Width</a>
</div>
</h4>
<div class="doc_text">
@ -298,9 +298,9 @@ for debate.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="scf_spacestabs">Use Spaces Instead of Tabs</a>
</div>
</h4>
<div class="doc_text">
@ -319,9 +319,9 @@ makes for incredible diffs that are absolutely worthless.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="scf_indentation">Indent Code Consistently</a>
</div>
</h4>
<div class="doc_text">
@ -333,15 +333,15 @@ Just do it.</p>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="compilerissues">Compiler Issues</a>
</div>
</h3>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ci_warningerrors">Treat Compiler Warnings Like Errors</a>
</div>
</h4>
<div class="doc_text">
@ -393,9 +393,9 @@ be fixed by massaging the code appropriately.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ci_portable_code">Write Portable Code</a>
</div>
</h4>
<div class="doc_text">
@ -412,9 +412,9 @@ libSystem.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ci_rtti_exceptions">Do not use RTTI or Exceptions</a>
</div>
</h4>
<div class="doc_text">
<p>In an effort to reduce code and executable size, LLVM does not use RTTI
@ -433,9 +433,9 @@ than <tt>dynamic_cast&lt;&gt;</tt>.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ci_class_struct">Use of <tt>class</tt> and <tt>struct</tt> Keywords</a>
</div>
</h4>
<div class="doc_text">
<p>In C++, the <tt>class</tt> and <tt>struct</tt> keywords can be used almost
@ -455,23 +455,23 @@ which case <tt>struct</tt> is allowed.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="styleissues">Style Issues</a>
</div>
</h2>
<!-- *********************************************************************** -->
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="macro">The High-Level Issues</a>
</div>
</h3>
<!-- ======================================================================= -->
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="hl_module">A Public Header File <b>is</b> a Module</a>
</div>
</h4>
<div class="doc_text">
@ -499,9 +499,9 @@ translation unit.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="hl_dontinclude"><tt>#include</tt> as Little as Possible</a>
</div>
</h4>
<div class="doc_text">
@ -528,9 +528,9 @@ dependencies that you'll find out about later.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="hl_privateheaders">Keep "Internal" Headers Private</a>
</div>
</h4>
<div class="doc_text">
@ -549,9 +549,9 @@ class itself. Just make them private (or protected) and all is well.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="hl_earlyexit">Use Early Exits and <tt>continue</tt> to Simplify Code</a>
</div>
</h4>
<div class="doc_text">
@ -658,9 +658,9 @@ can be a big understandability win.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="hl_else_after_return">Don't use <tt>else</tt> after a <tt>return</tt></a>
</div>
</h4>
<div class="doc_text">
@ -741,9 +741,9 @@ track of when reading the code.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="hl_predicateloops">Turn Predicate Loops into Predicate Functions</a>
</div>
</h4>
<div class="doc_text">
@ -804,16 +804,18 @@ locality.</p>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="micro">The Low-Level Issues</a>
</div>
</h3>
<!-- ======================================================================= -->
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="ll_naming">Name Types, Functions, Variables, and Enumerators Properly</a>
</div>
<h4>
<a name="ll_naming">
Name Types, Functions, Variables, and Enumerators Properly
</a>
</h4>
<div class="doc_text">
@ -894,9 +896,9 @@ Vehicle MakeVehicle(VehicleType Type) {
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ll_assert">Assert Liberally</a>
</div>
</h4>
<div class="doc_text">
@ -997,9 +999,9 @@ assert(NewToSet &amp;&amp; "The value shouldn't be in the set yet");
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ll_ns_std">Do Not Use '<tt>using namespace std</tt>'</a>
</div>
</h4>
<div class="doc_text">
@ -1035,10 +1037,11 @@ use any others.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="ll_virtual_anch">Provide a Virtual Method Anchor for Classes
in Headers</a>
</div>
<h4>
<a name="ll_virtual_anch">
Provide a Virtual Method Anchor for Classes in Headers
</a>
</h4>
<div class="doc_text">
@ -1052,9 +1055,9 @@ increasing link times.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ll_end">Don't evaluate <tt>end()</tt> every time through a loop</a>
</div>
</h4>
<div class="doc_text">
@ -1114,9 +1117,9 @@ prefer it.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ll_iostream"><tt>#include &lt;iostream&gt;</tt> is Forbidden</a>
</div>
</h4>
<div class="doc_text">
@ -1149,9 +1152,9 @@ the <tt>llvm::MemoryBuffer</tt> API for reading files.</b></p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ll_raw_ostream">Use <tt>raw_ostream</tt></a>
</div>
</h4>
<div class="doc_text">
@ -1169,9 +1172,9 @@ declarations and constant references to <tt>raw_ostream</tt> instances.</p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="ll_avoidendl">Avoid <tt>std::endl</tt></a>
</div>
</h4>
<div class="doc_text">
@ -1193,18 +1196,18 @@ it's better to use a literal <tt>'\n'</tt>.</p>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="nano">Microscopic Details</a>
</div>
</h3>
<!-- ======================================================================= -->
<p>This section describes preferred low-level formatting guidelines along with
reasoning on why we prefer them.</p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="micro_spaceparen">Spaces Before Parentheses</a>
</div>
</h4>
<div class="doc_text">
@ -1260,9 +1263,9 @@ this misinterpretation.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="micro_preincrement">Prefer Preincrement</a>
</div>
</h4>
<div class="doc_text">
@ -1280,9 +1283,9 @@ get in the habit of always using preincrement, and you won't have a problem.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="micro_namespaceindent">Namespace Indentation</a>
</div>
</h4>
<div class="doc_text">
@ -1368,9 +1371,9 @@ the contents of the namespace.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="micro_anonns">Anonymous Namespaces</a>
</div>
</h4>
<div class="doc_text">
@ -1455,9 +1458,9 @@ namespace just because it was declared there.
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="seealso">See Also</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -7,9 +7,9 @@
</head>
<body>
<div class="doc_title">
<h1>
LLVM Command Guide
</div>
</h1>
<div class="doc_text">
@ -23,9 +23,9 @@ options) arguments to the tool you are interested in.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="basic">Basic Commands</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -80,9 +80,9 @@ options) arguments to the tool you are interested in.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="frontend">C and C++ Front-end Commands</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -99,9 +99,9 @@ options) arguments to the tool you are interested in.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="debug">Debugging Tools</a>
</div>
</h2>
<!-- *********************************************************************** -->
@ -123,9 +123,9 @@ options) arguments to the tool you are interested in.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="internal">Internal Tools</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -8,9 +8,9 @@
</head>
<body>
<div class="doc_title">
<h1>
CommandLine 2.0 Library Manual
</div>
</h1>
<ol>
<li><a href="#introduction">Introduction</a></li>
@ -100,9 +100,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="introduction">Introduction</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -184,9 +184,9 @@ href="mailto:sabre@nondot.org">Chris Lattner</a>.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="quickstart">Quick Start Guide</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -324,9 +324,9 @@ OPTIONS:
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="bool">Boolean Arguments</a>
</div>
</h3>
<div class="doc_text">
@ -406,9 +406,9 @@ and <a href="#list">lists</a> of options.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="alias">Argument Aliases</a>
</div>
</h3>
<div class="doc_text">
@ -456,10 +456,10 @@ uses.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="onealternative">Selecting an alternative from a set of
possibilities</a>
</div>
</h3>
<div class="doc_text">
@ -567,9 +567,9 @@ which is when you would use it.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="namedalternatives">Named Alternatives</a>
</div>
</h3>
<div class="doc_text">
@ -629,9 +629,9 @@ that you can choose the form most appropriate for your application.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="list">Parsing a list of options</a>
</div>
</h3>
<div class="doc_text">
@ -699,9 +699,9 @@ checking we have to do.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="bits">Collecting options as a set of flags</a>
</div>
</h3>
<div class="doc_text">
@ -758,9 +758,9 @@ href="#list"> <tt>cl::list</tt></a> option.</p>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="description">Adding freeform text to help output</a>
</div>
</h3>
<div class="doc_text">
@ -802,9 +802,9 @@ OPTIONS:
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="referenceguide">Reference Guide</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -817,9 +817,9 @@ processing capabilities.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="positional">Positional Arguments</a>
</div>
</h3>
<div class="doc_text">
@ -858,9 +858,9 @@ define all of your positional arguments in one .cpp file.</p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="--">Specifying positional options with hyphens</a>
</div>
</h4>
<div class="doc_text">
@ -895,9 +895,9 @@ can use it like this:</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="getPosition">Determining absolute position with getPosition()</a>
</div>
</h4>
<div class="doc_text">
<p>Sometimes an option can affect or modify the meaning of another option. For
example, consider <tt>gcc</tt>'s <tt>-x LANG</tt> option. This tells
@ -954,9 +954,9 @@ can use it like this:</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="cl::ConsumeAfter">The <tt>cl::ConsumeAfter</tt> modifier</a>
</div>
</h4>
<div class="doc_text">
@ -1007,9 +1007,9 @@ href="#cl::list">cl::list</a> option.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="storage">Internal vs External Storage</a>
</div>
</h3>
<div class="doc_text">
@ -1076,9 +1076,9 @@ that <tt>DebugFlag</tt> is automatically set.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="attributes">Option Attributes</a>
</div>
</h3>
<div class="doc_text">
@ -1166,9 +1166,9 @@ obviously).</li>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="modifiers">Option Modifiers</a>
</div>
</h3>
<div class="doc_text">
@ -1199,9 +1199,9 @@ usually shouldn't have to worry about these.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="hiding">Hiding an option from <tt>-help</tt> output</a>
</div>
</h4>
<div class="doc_text">
@ -1230,10 +1230,10 @@ indicates that the option should not appear in any help output.</li>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="numoccurrences">Controlling the number of occurrences required and
allowed</a>
</div>
</h4>
<div class="doc_text">
@ -1279,9 +1279,9 @@ retained.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="valrequired">Controlling whether or not a value must be specified</a>
</div>
</h4>
<div class="doc_text">
@ -1328,9 +1328,9 @@ when <a href="#extensionguide">extending the library</a>.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="formatting">Controlling other formatting options</a>
</div>
</h4>
<div class="doc_text">
@ -1409,9 +1409,9 @@ strategy basically looks like this:</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="misc">Miscellaneous option modifiers</a>
</div>
</h4>
<div class="doc_text">
@ -1453,9 +1453,9 @@ only makes sense with a <a href="#cl::list">cl::list</a> option.</li>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="response">Response files</a>
</div>
</h4>
<div class="doc_text">
@ -1476,9 +1476,9 @@ and
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="toplevel">Top-Level Classes and Functions</a>
</div>
</h3>
<div class="doc_text">
@ -1493,10 +1493,10 @@ classes in detail.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="cl::ParseCommandLineOptions">The <tt>cl::ParseCommandLineOptions</tt>
function</a>
</div>
</h4>
<div class="doc_text">
@ -1514,10 +1514,10 @@ which holds <a href="#description">additional extra text</a> to emit when the
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="cl::ParseEnvironmentOptions">The <tt>cl::ParseEnvironmentOptions</tt>
function</a>
</div>
</h4>
<div class="doc_text">
@ -1551,10 +1551,10 @@ input.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="cl::SetVersionPrinter">The <tt>cl::SetVersionPrinter</tt>
function</a>
</div>
</h4>
<div class="doc_text">
@ -1572,9 +1572,9 @@ called when the <tt>--version</tt> option is given by the user.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="cl::opt">The <tt>cl::opt</tt> class</a>
</div>
</h4>
<div class="doc_text">
@ -1607,9 +1607,9 @@ href="#customparser">custom parser</a>.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="cl::list">The <tt>cl::list</tt> class</a>
</div>
</h4>
<div class="doc_text">
@ -1634,9 +1634,9 @@ be used.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="cl::bits">The <tt>cl::bits</tt> class</a>
</div>
</h4>
<div class="doc_text">
@ -1659,9 +1659,9 @@ must be of <b>type</b> <tt>unsigned</tt> if external storage is used.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="cl::alias">The <tt>cl::alias</tt> class</a>
</div>
</h4>
<div class="doc_text">
@ -1682,9 +1682,9 @@ the conversion from string to data.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="cl::extrahelp">The <tt>cl::extrahelp</tt> class</a>
</div>
</h4>
<div class="doc_text">
@ -1710,9 +1710,9 @@ single <tt>cl::extrahelp</tt> instance.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="builtinparsers">Builtin parsers</a>
</div>
</h3>
<div class="doc_text">
@ -1774,9 +1774,9 @@ exponential notation (ex: <tt>1.7e15</tt>) and properly supports locales.
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="extensionguide">Extension Guide</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1789,9 +1789,9 @@ the covers and illustrates how to do some simple, common, extensions.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="customparser">Writing a custom parser</a>
</div>
</h3>
<div class="doc_text">
@ -1932,9 +1932,9 @@ tutorial.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="explotingexternal">Exploiting external storage</a>
</div>
</h3>
<div class="doc_text">
<p>Several of the LLVM libraries define static <tt>cl::opt</tt> instances that
@ -1951,9 +1951,9 @@ tutorial.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="dynamicopts">Dynamically adding command line options</a>
</div>
</h3>
<div class="doc_text">

View File

@ -9,9 +9,9 @@
<body>
<div class="doc_title">
<h1>
Architecture/platform information for compiler writers
</div>
</h1>
<div class="doc_warning">
<p>Note: This document is a work-in-progress. Additions and clarifications
@ -43,11 +43,11 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="hw">Hardware</a></div>
<h2><a name="hw">Hardware</a></h2>
<!-- *********************************************************************** -->
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="alpha">Alpha</a></div>
<h3><a name="alpha">Alpha</a></h3>
<div class="doc_text">
<ul>
@ -58,7 +58,7 @@ href="http://ftp.digital.com/pub/Digital/info/semiconductor/literature/dsc-libra
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="arm">ARM</a></div>
<h3><a name="arm">ARM</a></h3>
<div class="doc_text">
<ul>
@ -70,7 +70,7 @@ Cores</a>)</li>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="ia64">Itanium (ia64)</a></div>
<h3><a name="ia64">Itanium (ia64)</a></h3>
<div class="doc_text">
<ul>
@ -81,7 +81,7 @@ href="http://developer.intel.com/design/itanium2/documentation.htm">Itanium docu
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="mips">MIPS</a></div>
<h3><a name="mips">MIPS</a></h3>
<div class="doc_text">
<ul>
@ -92,10 +92,10 @@ Processor Architecture</a></li>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="ppc">PowerPC</a></div>
<h3><a name="ppc">PowerPC</a></h3>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">IBM - Official manuals and docs</div>
<h4>IBM - Official manuals and docs</h4>
<div class="doc_text">
@ -129,7 +129,7 @@ PowerPC architecture</a></li>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">Other documents, collections, notes</div>
<h4>Other documents, collections, notes</h4>
<div class="doc_text">
@ -144,7 +144,7 @@ branch stubs for powerpc64-linux (from binutils)</a></li>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="sparc">SPARC</a></div>
<h3><a name="sparc">SPARC</a></h3>
<div class="doc_text">
@ -156,10 +156,10 @@ branch stubs for powerpc64-linux (from binutils)</a></li>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="x86">X86</a></div>
<h3><a name="x86">X86</a></h3>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">AMD - Official manuals and docs</div>
<h4>AMD - Official manuals and docs</h4>
<div class="doc_text">
<ul>
@ -170,7 +170,7 @@ href="http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_739,00.ht
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">Intel - Official manuals and docs</div>
<h4>Intel - Official manuals and docs</h4>
<div class="doc_text">
<ul>
@ -184,7 +184,7 @@ Itanium documentation</a></li>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">Other x86-specific information</div>
<h4>Other x86-specific information</h4>
<div class="doc_text">
<ul>
@ -194,7 +194,7 @@ conventions for different C++ compilers and operating systems</a></li>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="other">Other relevant lists</a></div>
<h3><a name="other">Other relevant lists</a></h3>
<div class="doc_text">
@ -205,11 +205,11 @@ conventions for different C++ compilers and operating systems</a></li>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="abi">ABI</a></div>
<h2><a name="abi">ABI</a></h2>
<!-- *********************************************************************** -->
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="linux">Linux</a></div>
<h3><a name="linux">Linux</a></h3>
<div class="doc_text">
<ol>
@ -219,7 +219,7 @@ Supplement</a></li>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="osx">OS X</a></div>
<h3><a name="osx">OS X</a></h3>
<div class="doc_text">
<ol>
@ -233,7 +233,7 @@ ABI</a></li>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="misc">Miscellaneous resources</a></div>
<h2><a name="misc">Miscellaneous resources</a></h2>
<!-- *********************************************************************** -->
<ul>

View File

@ -7,7 +7,7 @@
</head>
<body>
<div class="doc_title">Debugging JITed Code With GDB</div>
<h1>Debugging JITed Code With GDB</h1>
<ol>
<li><a href="#example">Example usage</a></li>
<li><a href="#background">Background</a></li>
@ -15,7 +15,7 @@
<div class="doc_author">Written by Reid Kleckner</div>
<!--=========================================================================-->
<div class="doc_section"><a name="example">Example usage</a></div>
<h2><a name="example">Example usage</a></h2>
<!--=========================================================================-->
<div class="doc_text">
@ -96,7 +96,7 @@ function names.
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="background">Background</a></div>
<h2><a name="background">Background</a></h2>
<!--=========================================================================-->
<div class="doc_text">

View File

@ -8,7 +8,7 @@
</head>
<body>
<div class="doc_title">LLVM Developer Policy</div>
<h1>LLVM Developer Policy</h1>
<ol>
<li><a href="#introduction">Introduction</a></li>
<li><a href="#policies">Developer Policies</a>
@ -34,7 +34,7 @@
<div class="doc_author">Written by the LLVM Oversight Team</div>
<!--=========================================================================-->
<div class="doc_section"><a name="introduction">Introduction</a></div>
<h2><a name="introduction">Introduction</a></h2>
<!--=========================================================================-->
<div class="doc_text">
<p>This document contains the LLVM Developer Policy which defines the project's
@ -63,7 +63,7 @@
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="policies">Developer Policies</a></div>
<h2><a name="policies">Developer Policies</a></h2>
<!--=========================================================================-->
<div class="doc_text">
<p>This section contains policies that pertain to frequent LLVM developers. We
@ -75,7 +75,7 @@
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"> <a name="informed">Stay Informed</a> </div>
<h3><a name="informed">Stay Informed</a></h3>
<div class="doc_text">
<p>Developers should stay informed by reading at least the "dev" mailing list
for the projects you are interested in, such as
@ -102,7 +102,7 @@
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"> <a name="patches">Making a Patch</a></div>
<h3><a name="patches">Making a Patch</a></h3>
<div class="doc_text">
<p>When making a patch for review, the goal is to make it as easy for the
@ -142,7 +142,7 @@
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"> <a name="reviews">Code Reviews</a></div>
<h3><a name="reviews">Code Reviews</a></h3>
<div class="doc_text">
<p>LLVM has a code review policy. Code review is one way to increase the quality
of software. We generally follow these policies:</p>
@ -174,7 +174,7 @@
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"> <a name="owners">Code Owners</a></div>
<h3><a name="owners">Code Owners</a></h3>
<div class="doc_text">
<p>The LLVM Project relies on two features of its process to maintain rapid
@ -225,7 +225,7 @@
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"> <a name="testcases">Test Cases</a></div>
<h3><a name="testcases">Test Cases</a></h3>
<div class="doc_text">
<p>Developers are required to create test cases for any bugs fixed and any new
features added. Some tips for getting your testcase approved:</p>
@ -258,7 +258,7 @@
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"> <a name="quality">Quality</a></div>
<h3><a name="quality">Quality</a></h3>
<div class="doc_text">
<p>The minimum quality standards that any change must satisfy before being
committed to the main development branch are:</p>
@ -318,8 +318,7 @@
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection">
<a name="commitaccess">Obtaining Commit Access</a></div>
<h3><a name="commitaccess">Obtaining Commit Access</a></h3>
<div class="doc_text">
<p>We grant commit access to contributors with a track record of submitting high
@ -381,7 +380,7 @@
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"> <a name="newwork">Making a Major Change</a></div>
<h3><a name="newwork">Making a Major Change</a></h3>
<div class="doc_text">
<p>When a developer begins a major new project with the aim of contributing it
back to LLVM, s/he should inform the community with an email to
@ -410,8 +409,7 @@
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"> <a name="incremental">Incremental Development</a>
</div>
<h3><a name="incremental">Incremental Development</a></h3>
<div class="doc_text">
<p>In the LLVM project, we do all significant changes as a series of incremental
patches. We have a strong dislike for huge changes or long-term development
@ -472,8 +470,7 @@
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="attribution">Attribution of
Changes</a></div>
<h3><a name="attribution">Attribution of Changes</a></h3>
<div class="doc_text">
<p>We believe in correct attribution of contributions to their contributors.
However, we do not want the source code to be littered with random
@ -487,9 +484,9 @@ Changes</a></div>
</div>
<!--=========================================================================-->
<div class="doc_section">
<h2>
<a name="clp">Copyright, License, and Patents</a>
</div>
</h2>
<!--=========================================================================-->
<div class="doc_text">
@ -507,7 +504,7 @@ Changes</a></div>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="copyright">Copyright</a></div>
<h3><a name="copyright">Copyright</a></h3>
<div class="doc_text">
<p>The LLVM project does not require copyright assignments, which means that the
@ -530,7 +527,7 @@ Changes</a></div>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="license">License</a></div>
<h3><a name="license">License</a></h3>
<div class="doc_text">
<p>We intend to keep LLVM perpetually open source and to use a liberal open
source license. All of the code in LLVM is available under the
@ -585,7 +582,7 @@ Changes</a></div>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="patents">Patents</a></div>
<h3><a name="patents">Patents</a></h3>
<div class="doc_text">
<p>To the best of our knowledge, LLVM does not infringe on any patents (we have
actually removed code from LLVM in the past that was found to infringe).

View File

@ -11,7 +11,7 @@
<body>
<div class="doc_title">Exception Handling in LLVM</div>
<h1>Exception Handling in LLVM</h1>
<table class="layout" style="width:100%">
<tr class="layout">
@ -58,7 +58,7 @@
<!-- *********************************************************************** -->
<div class="doc_section"><a name="introduction">Introduction</a></div>
<h2><a name="introduction">Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -73,9 +73,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="itanium">Itanium ABI Zero-cost Exception Handling</a>
</div>
</h3>
<div class="doc_text">
@ -106,9 +106,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="sjlj">Setjmp/Longjmp Exception Handling</a>
</div>
</h3>
<div class="doc_text">
@ -138,9 +138,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="overview">Overview</a>
</div>
</h3>
<div class="doc_text">
@ -186,9 +186,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_section">
<h2>
<a name="codegen">LLVM Code Generation</a>
</div>
</h2>
<div class="doc_text">
@ -203,9 +203,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="throw">Throw</a>
</div>
</h3>
<div class="doc_text">
@ -225,9 +225,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="try_catch">Try/Catch</a>
</div>
</h3>
<div class="doc_text">
@ -313,9 +313,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="cleanups">Cleanups</a>
</div>
</h3>
<div class="doc_text">
@ -332,9 +332,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="throw_filters">Throw Filters</a>
</div>
</h3>
<div class="doc_text">
@ -359,9 +359,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="restrictions">Restrictions</a>
</div>
</h3>
<div class="doc_text">
@ -385,9 +385,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_section">
<h2>
<a name="format_common_intrinsics">Exception Handling Intrinsics</a>
</div>
</h2>
<div class="doc_text">
@ -398,9 +398,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="llvm_eh_exception">llvm.eh.exception</a>
</div>
</h4>
<div class="doc_text">
@ -413,9 +413,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="llvm_eh_selector">llvm.eh.selector</a>
</div>
</h4>
<div class="doc_text">
@ -445,9 +445,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="llvm_eh_typeid_for">llvm.eh.typeid.for</a>
</div>
</h4>
<div class="doc_text">
@ -463,9 +463,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="llvm_eh_sjlj_setjmp">llvm.eh.sjlj.setjmp</a>
</div>
</h4>
<div class="doc_text">
@ -492,9 +492,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="llvm_eh_sjlj_longjmp">llvm.eh.sjlj.longjmp</a>
</div>
</h4>
<div class="doc_text">
@ -512,9 +512,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="llvm_eh_sjlj_lsda">llvm.eh.sjlj.lsda</a>
</div>
</h4>
<div class="doc_text">
@ -531,9 +531,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="llvm_eh_sjlj_callsite">llvm.eh.sjlj.callsite</a>
</div>
</h4>
<div class="doc_text">
@ -549,9 +549,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="llvm_eh_sjlj_dispatchsetup">llvm.eh.sjlj.dispatchsetup</a>
</div>
</h4>
<div class="doc_text">
@ -566,9 +566,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_section">
<h2>
<a name="asm">Asm Table Formats</a>
</div>
</h2>
<div class="doc_text">
@ -578,9 +578,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="unwind_tables">Exception Handling Frame</a>
</div>
</h3>
<div class="doc_text">
@ -596,9 +596,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="exception_tables">Exception Tables</a>
</div>
</h3>
<div class="doc_text">
@ -612,9 +612,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_section">
<h2>
<a name="todo">ToDo</a>
</div>
</h2>
<div class="doc_text">

View File

@ -8,9 +8,9 @@
<body>
<div class="doc_title">
<h1>
Extending LLVM: Adding instructions, intrinsics, types, etc.
</div>
</h1>
<ol>
<li><a href="#introduction">Introduction and Warning</a></li>
@ -31,9 +31,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="introduction">Introduction and Warning</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -68,9 +68,9 @@ effort by doing so.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="intrinsic">Adding a new intrinsic function</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -130,9 +130,9 @@ support for it. Generally you must do the following steps:</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="sdnode">Adding a new SelectionDAG node</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -220,9 +220,9 @@ complicated behavior in a single node (rotate).</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="instruction">Adding a new instruction</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -277,9 +277,9 @@ to understand this new instruction.</p>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="type">Adding a new type</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -291,9 +291,9 @@ installations.</span> Only add new types if it is absolutely necessary.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="fund_type">Adding a fundamental type</a>
</div>
</h3>
<div class="doc_text">
@ -317,9 +317,9 @@ installations.</span> Only add new types if it is absolutely necessary.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="derived_type">Adding a derived type</a>
</div>
</h3>
<div class="doc_text">

View File

@ -12,9 +12,9 @@
</head>
<body>
<div class="doc_title">
<h1>
LLVM: Frequently Asked Questions
</div>
</h1>
<ol>
<li><a href="#license">License</a>
@ -138,9 +138,9 @@
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="license">License</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="question">
@ -189,9 +189,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="source">Source Code</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="question">
@ -227,9 +227,9 @@ LLVM have been ported to a plethora of platforms.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="build">Build Problems</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="question">
@ -449,7 +449,9 @@ Stop.
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="felangs">Source Languages</a></div>
<h2>
<a name="felangs">Source Languages</a>
</h2>
<div class="question">
<p><a name="langs">What source languages are supported?</a></p>
@ -555,9 +557,9 @@ Stop.
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="cfe">Using the GCC Front End</a>
</div>
</h2>
<div class="question">
<p>When I compile software that uses a configure script, the configure script
@ -712,9 +714,9 @@ Stop.
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="cfe_code">Questions about code generated by the GCC front-end</a>
</div>
</h2>
<div class="question">
<p><a name="iosinit">What is this <tt>llvm.global_ctors</tt> and

View File

@ -8,9 +8,9 @@
</head>
<body>
<div class="doc_title">
<h1>
Building the LLVM GCC Front-End
</div>
</h1>
<ol>
<li><a href="#instructions">Building llvm-gcc from Source</a></li>

View File

@ -13,9 +13,9 @@
</head>
<body>
<div class="doc_title">
<h1>
Accurate Garbage Collection with LLVM
</div>
</h1>
<ol>
<li><a href="#introduction">Introduction</a>
@ -79,9 +79,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="introduction">Introduction</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -127,9 +127,9 @@ support accurate garbage collection.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="feature">Goals and non-goals</a>
</div>
</h3>
<div class="doc_text">
@ -199,9 +199,9 @@ compiler matures.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="quickstart">Getting started</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -249,9 +249,9 @@ into <tt>llc</tt> and works even with the interpreter and C backends.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="quickstart-compiler">In your compiler</a>
</div>
</h3>
<div class="doc_text">
@ -276,9 +276,9 @@ switching to a more advanced GC.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="quickstart-runtime">In your runtime</a>
</div>
</h3>
<div class="doc_text">
@ -343,9 +343,9 @@ void visitGCRoots(void (*Visitor)(void **Root, const void *Meta)) {
}</pre></div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="shadow-stack">About the shadow stack</a>
</div>
</h3>
<div class="doc_text">
@ -373,9 +373,9 @@ in order to improve performance.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="core">IR features</a><a name="intrinsics"></a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -393,9 +393,9 @@ program.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="gcattr">Specifying GC code generation: <tt>gc "..."</tt></a>
</div>
</h3>
<div class="doc_code"><tt>
define <i>ty</i> @<i>name</i>(...) <span style="text-decoration: underline">gc "<i>name</i>"</span> { ...
@ -418,9 +418,9 @@ programs that use different garbage collection algorithms (or none at all).</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="gcroot">Identifying GC roots on the stack: <tt>llvm.gcroot</tt></a>
</div>
</h3>
<div class="doc_code"><tt>
void @llvm.gcroot(i8** %ptrloc, i8* %metadata)
@ -494,9 +494,9 @@ CodeBlock:
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="barriers">Reading and writing references in the heap</a>
</div>
</h3>
<div class="doc_text">
@ -537,9 +537,9 @@ are used.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="gcwrite">Write barrier: <tt>llvm.gcwrite</tt></a>
</div>
</h4>
<div class="doc_code"><tt>
void @llvm.gcwrite(i8* %value, i8* %object, i8** %derived)
@ -559,9 +559,9 @@ implement reference counting.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="gcread">Read barrier: <tt>llvm.gcread</tt></a>
</div>
</h4>
<div class="doc_code"><tt>
i8* @llvm.gcread(i8* %object, i8** %derived)<br>
@ -581,9 +581,9 @@ writes.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="plugin">Implementing a collector plugin</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -669,9 +669,9 @@ as a language-specific compiler front-end.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="collector-algos">Overview of available features</a>
</div>
</h3>
<div class="doc_text">
@ -958,9 +958,9 @@ interest.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="stack-map">Computing stack maps</a>
</div>
</h3>
<div class="doc_text">
@ -1014,9 +1014,9 @@ for collector plugins which implement reference counting or a shadow stack.</p>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="init-roots">Initializing roots to null: <tt>InitRoots</tt></a>
</div>
</h3>
<div class="doc_text">
@ -1039,10 +1039,10 @@ this feature should be used by all GC plugins. It is enabled by default.</p>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="custom">Custom lowering of intrinsics: <tt>CustomRoots</tt>,
<tt>CustomReadBarriers</tt>, and <tt>CustomWriteBarriers</tt></a>
</div>
</h3>
<div class="doc_text">
@ -1129,9 +1129,9 @@ bool MyGC::performCustomLowering(Function &amp;F) {
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="safe-points">Generating safe points: <tt>NeededSafePoints</tt></a>
</div>
</h3>
<div class="doc_text">
@ -1193,9 +1193,9 @@ safe point (because only the topmost function has been patched).</p>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="assembly">Emitting assembly code: <tt>GCMetadataPrinter</tt></a>
</div>
</h3>
<div class="doc_text">
@ -1343,9 +1343,9 @@ void MyGCPrinter::finishAssembly(std::ostream &amp;OS, AsmPrinter &amp;AP,
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="references">References</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -11,9 +11,9 @@
</head>
<body>
<div class="doc_title">
<h1>
The Often Misunderstood GEP Instruction
</div>
</h1>
<ol>
<li><a href="#intro">Introduction</a></li>
@ -58,7 +58,7 @@
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro"><b>Introduction</b></a></div>
<h2><a name="intro">Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -72,7 +72,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="addresses"><b>Address Computation</b></a></div>
<h2><a name="addresses">Address Computation</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
<p>When people are first confronted with the GEP instruction, they tend to
@ -83,9 +83,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="firstptr"><b>What is the first index of the GEP instruction?</b></a>
</div>
<h3>
<a name="firstptr">What is the first index of the GEP instruction?</a>
</h3>
<div class="doc_text">
<p>Quick answer: The index stepping through the first operand.</p>
<p>The confusion with the first index usually arises from thinking about
@ -205,9 +205,9 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="extra_index"><b>Why is the extra 0 index required?</b></a>
</div>
<h3>
<a name="extra_index">Why is the extra 0 index required?</a>
</h3>
<!-- *********************************************************************** -->
<div class="doc_text">
<p>Quick answer: there are no superfluous indices.</p>
@ -247,9 +247,9 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="deref"><b>What is dereferenced by GEP?</b></a>
</div>
<h3>
<a name="deref">What is dereferenced by GEP?</a>
</h3>
<div class="doc_text">
<p>Quick answer: nothing.</p>
<p>The GetElementPtr instruction dereferences nothing. That is, it doesn't
@ -302,9 +302,9 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="lead0"><b>Why don't GEP x,0,0,1 and GEP x,1 alias?</b></a>
</div>
<h3>
<a name="lead0">Why don't GEP x,0,0,1 and GEP x,1 alias?</a>
</h3>
<div class="doc_text">
<p>Quick Answer: They compute different address locations.</p>
<p>If you look at the first indices in these GEP
@ -331,9 +331,9 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="trail0"><b>Why do GEP x,1,0,0 and GEP x,1 alias?</b></a>
</div>
<h3>
<a name="trail0">Why do GEP x,1,0,0 and GEP x,1 alias?</a>
</h3>
<div class="doc_text">
<p>Quick Answer: They compute the same address location.</p>
<p>These two GEP instructions will compute the same address because indexing
@ -355,9 +355,9 @@ idx3 = (char*) &amp;MyVar + 8
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="vectors"><b>Can GEP index into vector elements?</b></a>
</div>
<h3>
<a name="vectors">Can GEP index into vector elements?</a>
</h3>
<div class="doc_text">
<p>This hasn't always been forcefully disallowed, though it's not recommended.
It leads to awkward special cases in the optimizers, and fundamental
@ -368,9 +368,9 @@ idx3 = (char*) &amp;MyVar + 8
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="addrspace"><b>What effect do address spaces have on GEPs?</b></a>
</div>
<h3>
<a name="addrspace">What effect do address spaces have on GEPs?</a>
</h3>
<div class="doc_text">
<p>None, except that the address space qualifier on the first operand pointer
type always matches the address space qualifier on the result type.</p>
@ -379,10 +379,11 @@ idx3 = (char*) &amp;MyVar + 8
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="int"><b>How is GEP different from ptrtoint, arithmetic,
and inttoptr?</b></a>
</div>
<h3>
<a name="int">
How is GEP different from ptrtoint, arithmetic, and inttoptr?
</a>
</h3>
<div class="doc_text">
<p>It's very similar; there are only subtle differences.</p>
@ -409,10 +410,12 @@ idx3 = (char*) &amp;MyVar + 8
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="be"><b>I'm writing a backend for a target which needs custom
lowering for GEP. How do I do this?</b></a>
</div>
<h3>
<a name="be">
I'm writing a backend for a target which needs custom lowering for GEP.
How do I do this?
</a>
</h3>
<div class="doc_text">
<p>You don't. The integer computation implied by a GEP is target-independent.
Typically what you'll need to do is make your backend pattern-match
@ -431,9 +434,9 @@ idx3 = (char*) &amp;MyVar + 8
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="vla"><b>How does VLA addressing work with GEPs?</b></a>
</div>
<h3>
<a name="vla">How does VLA addressing work with GEPs?</a>
</h3>
<div class="doc_text">
<p>GEPs don't natively support VLAs. LLVM's type system is entirely static,
and GEP address computations are guided by an LLVM type.</p>
@ -451,14 +454,14 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="rules"><b>Rules</b></a></div>
<h2><a name="rules">Rules</a></h2>
<!-- *********************************************************************** -->
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="bounds"><b>What happens if an array index is out of bounds?</b></a>
</div>
<h3>
<a name="bounds">What happens if an array index is out of bounds?</a>
</h3>
<div class="doc_text">
<p>There are two senses in which an array index can be out of bounds.</p>
@ -498,9 +501,9 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="negative"><b>Can array indices be negative?</b></a>
</div>
<h3>
<a name="negative">Can array indices be negative?</a>
</h3>
<div class="doc_text">
<p>Yes. This is basically a special case of array indices being out
of bounds.</p>
@ -508,9 +511,9 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="compare"><b>Can I compare two values computed with GEPs?</b></a>
</div>
<h3>
<a name="compare">Can I compare two values computed with GEPs?</a>
</h3>
<div class="doc_text">
<p>Yes. If both addresses are within the same allocated object, or
one-past-the-end, you'll get the comparison result you expect. If either
@ -520,10 +523,12 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="types"><b>Can I do GEP with a different pointer type than the type of
the underlying object?</b></a>
</div>
<h3>
<a name="types">
Can I do GEP with a different pointer type than the type of
the underlying object?
</a>
</h3>
<div class="doc_text">
<p>Yes. There are no restrictions on bitcasting a pointer value to an arbitrary
pointer type. The types in a GEP serve only to define the parameters for the
@ -538,10 +543,11 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="null"><b>Can I cast an object's address to integer and add it
to null?</b></a>
</div>
<h3>
<a name="null">
Can I cast an object's address to integer and add it to null?
</a>
</h3>
<div class="doc_text">
<p>You can compute an address that way, but if you use GEP to do the add,
you can't use that pointer to actually access the object, unless the
@ -562,10 +568,12 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="ptrdiff"><b>Can I compute the distance between two objects, and add
that value to one address to compute the other address?</b></a>
</div>
<h3>
<a name="ptrdiff">
Can I compute the distance between two objects, and add
that value to one address to compute the other address?
</a>
</h3>
<div class="doc_text">
<p>As with arithmetic on null, You can use GEP to compute an address that
way, but you can't use that pointer to actually access the object if you
@ -577,9 +585,9 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="tbaa"><b>Can I do type-based alias analysis on LLVM IR?</b></a>
</div>
<h3>
<a name="tbaa">Can I do type-based alias analysis on LLVM IR?</a>
</h3>
<div class="doc_text">
<p>You can't do type-based alias analysis using LLVM's built-in type system,
because LLVM has no restrictions on mixing types in addressing, loads or
@ -594,9 +602,9 @@ idx3 = (char*) &amp;MyVar + 8
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="overflow"><b>What happens if a GEP computation overflows?</b></a>
</div>
<h3>
<a name="overflow">What happens if a GEP computation overflows?</a>
</h3>
<div class="doc_text">
<p>If the GEP lacks the <tt>inbounds</tt> keyword, the value is the result
from evaluating the implied two's complement integer computation. However,
@ -624,10 +632,11 @@ idx3 = (char*) &amp;MyVar + 8
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="check"><b>How can I tell if my front-end is following the
rules?</b></a>
</div>
<h3>
<a name="check">
How can I tell if my front-end is following the rules?
</a>
</h3>
<div class="doc_text">
<p>There is currently no checker for the getelementptr rules. Currently,
the only way to do this is to manually check each place in your front-end
@ -642,14 +651,14 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="rationale"><b>Rationale</b></a></div>
<h2><a name="rationale">Rationale</a></h2>
<!-- *********************************************************************** -->
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="goals"><b>Why is GEP designed this way?</b></a>
</div>
<h3>
<a name="goals">Why is GEP designed this way?</a>
</h3>
<div class="doc_text">
<p>The design of GEP has the following goals, in rough unofficial
order of priority:</p>
@ -669,9 +678,9 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="i32"><b>Why do struct member indices always use i32?</b></a>
</div>
<h3>
<a name="i32">Why do struct member indices always use i32?</a>
</h3>
<div class="doc_text">
<p>The specific type i32 is probably just a historical artifact, however it's
wide enough for all practical purposes, so there's been no need to change it.
@ -684,9 +693,9 @@ idx3 = (char*) &amp;MyVar + 8
<!-- *********************************************************************** -->
<div class="doc_subsection">
<a name="uglygep"><b>What's an uglygep?</b></a>
</div>
<h3>
<a name="uglygep">What's an uglygep?</a>
</h3>
<div class="doc_text">
<p>Some LLVM optimizers operate on GEPs by internally lowering them into
more primitive integer expressions, which allows them to be combined
@ -705,7 +714,7 @@ idx3 = (char*) &amp;MyVar + 8
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="summary"><b>Summary</b></a></div>
<h2><a name="summary">Summary</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -8,9 +8,9 @@
</head>
<body>
<div class="doc_title">
<h1>
Getting Started with the LLVM System
</div>
</h1>
<ul>
<li><a href="#overview">Overview</a>
@ -70,9 +70,9 @@
<!-- *********************************************************************** -->
<div class="doc_section">
<a name="overview"><b>Overview</b></a>
</div>
<h2>
<a name="overview">Overview</a>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -102,9 +102,9 @@ and performance.
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<a name="quickstart"><b>Getting Started Quickly (A Summary)</b></a>
</div>
<h2>
<a name="quickstart">Getting Started Quickly (A Summary)</a>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -191,9 +191,9 @@ Layout</a> to learn about the layout of the source code tree.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<a name="requirements"><b>Requirements</b></a>
</div>
<h2>
<a name="requirements">Requirements</a>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -205,9 +205,9 @@ software you will need.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<a name="hardware"><b>Hardware</b></a>
</div>
<h3>
<a name="hardware">Hardware</a>
</h3>
<div class="doc_text">
@ -370,7 +370,9 @@ href="GCCFEBuildInstrs.html">try to compile it</a> on your platform.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="software"><b>Software</b></a></div>
<h3>
<a name="software">Software</a>
</h3>
<div class="doc_text">
<p>Compiling LLVM requires that you have several software packages
installed. The table below lists those required packages. The Package column
@ -508,9 +510,9 @@ href="GCCFEBuildInstrs.html">try to compile it</a> on your platform.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="brokengcc">Broken versions of GCC and other tools</a>
</div>
</h3>
<div class="doc_text">
@ -608,9 +610,9 @@ upgrading to a newer version of Gold.</p>
<!-- *********************************************************************** -->
<div class="doc_section">
<a name="starting"><b>Getting Started with LLVM</b></a>
</div>
<h2>
<a name="starting">Getting Started with LLVM</a>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -626,9 +628,9 @@ help via e-mail.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="terminology">Terminology and Notation</a>
</div>
</h3>
<div class="doc_text">
@ -663,9 +665,9 @@ All these paths are absolute:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="environment">Setting Up Your Environment</a>
</div>
</h3>
<div class="doc_text">
@ -686,9 +688,9 @@ variables.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="unpack">Unpacking the LLVM Archives</a>
</div>
</h3>
<div class="doc_text">
@ -720,9 +722,9 @@ compressed with the gzip program.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="checkout">Checkout LLVM from Subversion</a>
</div>
</h3>
<div class="doc_text">
@ -791,9 +793,9 @@ instructions</a> to successfully get and build the LLVM GCC front-end.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="git_mirror">GIT mirror</a>
</div>
</h3>
<div class="doc_text">
@ -810,9 +812,9 @@ instructions</a> to successfully get and build the LLVM GCC front-end.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="installcf">Install the GCC Front End</a>
</div>
</h3>
<div class="doc_text">
@ -880,9 +882,9 @@ please let us know how you would like to see things improved by dropping us a no
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="config">Local LLVM Configuration</a>
</div>
</h3>
<div class="doc_text">
@ -1002,9 +1004,9 @@ script to configure the build system:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="compile">Compiling the LLVM Suite Source Code</a>
</div>
</h3>
<div class="doc_text">
@ -1136,9 +1138,9 @@ that directory that is out of date.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="cross-compile">Cross-Compiling LLVM</a>
</div>
</h3>
<div class="doc_text">
<p>It is possible to cross-compile LLVM itself. That is, you can create LLVM
@ -1154,9 +1156,9 @@ that directory that is out of date.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="objfiles">The Location of LLVM Object Files</a>
</div>
</h3>
<div class="doc_text">
@ -1214,9 +1216,9 @@ named after the build type:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="optionalconfig">Optional Configuration Items</a>
</div>
</h3>
<div class="doc_text">
@ -1250,9 +1252,9 @@ $ sudo update-binfmts --install llvm /path/to/lli --magic 'BC'
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<a name="layout"><b>Program Layout</b></a>
</div>
<h2>
<a name="layout">Program Layout</a>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1265,14 +1267,20 @@ The following is a brief introduction to code layout:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="examples"><tt>llvm/examples</tt></a></div>
<h3>
<a name="examples"><tt>llvm/examples</tt></a>
</h3>
<div class="doc_text">
<p>This directory contains some simple examples of how to use the LLVM IR and
JIT.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="include"><tt>llvm/include</tt></a></div>
<h3>
<a name="include"><tt>llvm/include</tt></a>
</h3>
<div class="doc_text">
<p>This directory contains public header files exported from the LLVM
@ -1300,7 +1308,10 @@ library. The three main subdirectories of this directory are:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="lib"><tt>llvm/lib</tt></a></div>
<h3>
<a name="lib"><tt>llvm/lib</tt></a>
</h3>
<div class="doc_text">
<p>This directory contains most of the source files of the LLVM system. In LLVM,
@ -1366,7 +1377,10 @@ different <a href="#tools">tools</a>.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="projects"><tt>llvm/projects</tt></a></div>
<h3>
<a name="projects"><tt>llvm/projects</tt></a>
</h3>
<div class="doc_text">
<p>This directory contains projects that are not strictly part of LLVM but are
shipped with LLVM. This is also the directory where you should create your own
@ -1375,7 +1389,10 @@ different <a href="#tools">tools</a>.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="runtime"><tt>llvm/runtime</tt></a></div>
<h3>
<a name="runtime"><tt>llvm/runtime</tt></a>
</h3>
<div class="doc_text">
<p>This directory contains libraries which are compiled into LLVM bitcode and
@ -1389,7 +1406,10 @@ end to compile.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="test"><tt>llvm/test</tt></a></div>
<h3>
<a name="test"><tt>llvm/test</tt></a>
</h3>
<div class="doc_text">
<p>This directory contains feature and regression tests and other basic sanity
checks on the LLVM infrastructure. These are intended to run quickly and cover
@ -1397,7 +1417,10 @@ end to compile.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="test-suite"><tt>test-suite</tt></a></div>
<h3>
<a name="test-suite"><tt>test-suite</tt></a>
</h3>
<div class="doc_text">
<p>This is not a directory in the normal llvm module; it is a separate
Subversion
@ -1413,7 +1436,10 @@ end to compile.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="tools"><tt>llvm/tools</tt></a></div>
<h3>
<a name="tools"><tt>llvm/tools</tt></a>
</h3>
<div class="doc_text">
<p>The <b>tools</b> directory contains the executables built out of the
@ -1498,7 +1524,10 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="utils"><tt>llvm/utils</tt></a></div>
<h3>
<a name="utils"><tt>llvm/utils</tt></a>
</h3>
<div class="doc_text">
<p>This directory contains utilities for working with LLVM source code, and some
@ -1561,9 +1590,9 @@ are code generators for parts of LLVM infrastructure.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="tutorial">An Example Using the LLVM Tool Chain</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1580,7 +1609,9 @@ output.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="tutorial4">Example with llvm-gcc4</a></div>
<h3>
<a name="tutorial4">Example with llvm-gcc4</a>
</h3>
<div class="doc_text">
@ -1665,9 +1696,9 @@ int main() {
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="problems">Common Problems</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1679,9 +1710,9 @@ Asked Questions</a> page.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="links">Links</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -8,9 +8,9 @@
</head>
<body>
<div class="doc_title">
<h1>
Getting Started with the LLVM System using Microsoft Visual Studio
</div>
</h1>
<ul>
<li><a href="#overview">Overview</a>
@ -31,9 +31,9 @@
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="overview"><b>Overview</b></a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -70,9 +70,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="requirements"><b>Requirements</b></a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -84,9 +84,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="hardware"><b>Hardware</b></a>
</div>
</h3>
<div class="doc_text">
@ -97,7 +97,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="software"><b>Software</b></a></div>
<h3><a name="software"><b>Software</b></a></h3>
<div class="doc_text">
<p>You will need Visual Studio .NET 2005 SP1 or higher. The VS2005 SP1
@ -119,9 +119,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="quickstart"><b>Getting Started</b></a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -229,9 +229,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="tutorial">An Example Using the LLVM Tool Chain</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -319,9 +319,9 @@ int main() {
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="problems">Common Problems</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -333,9 +333,9 @@ Asked Questions</a> page.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="links">Links</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -7,7 +7,7 @@
</head>
<body>
<div class="doc_title">LLVM gold plugin</div>
<h1>LLVM gold plugin</h1>
<ol>
<li><a href="#introduction">Introduction</a></li>
<li><a href="#build">How to build it</a></li>
@ -21,7 +21,7 @@
<div class="doc_author">Written by Nick Lewycky</div>
<!--=========================================================================-->
<div class="doc_section"><a name="introduction">Introduction</a></div>
<h2><a name="introduction">Introduction</a></h2>
<!--=========================================================================-->
<div class="doc_text">
<p>Building with link time optimization requires cooperation from the
@ -38,7 +38,7 @@ The same plugin can also be used by other tools such as <tt>ar</tt> and
<tt>nm</tt>.
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="build">How to build it</a></div>
<h2><a name="build">How to build it</a></h2>
<!--=========================================================================-->
<div class="doc_text">
<p>You need to have gold with plugin support and build the LLVMgold
@ -72,7 +72,7 @@ placed.
</ul>
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="usage">Usage</a></div>
<h2><a name="usage">Usage</a></h2>
<!--=========================================================================-->
<div class="doc_text">
<p>The linker takes a <tt>-plugin</tt> option that points to the path of
@ -98,9 +98,9 @@ placed.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="example1">Example of link time optimization</a>
</div>
</h3>
<div class="doc_text">
<p>The following example shows a worked example of the gold plugin mixing
@ -150,7 +150,11 @@ $ llvm-gcc -use-gold-plugin a.a b.o -o main # &lt;-- link with LLVMgold plugin
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="lto_autotools">Quickstart for using LTO with autotooled projects</a></div>
<h2>
<a name="lto_autotools">
Quickstart for using LTO with autotooled projects
</a>
</h2>
<!--=========================================================================-->
<div class="doc_text">
<p>Once your system <tt>ld</tt>, <tt>ar</tt> and <tt>nm</tt> all support LLVM
@ -189,7 +193,7 @@ export CFLAGS="-O4"
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="licensing">Licensing</a></div>
<h2><a name="licensing">Licensing</a></h2>
<!--=========================================================================-->
<div class="doc_text">
<p>Gold is licensed under the GPLv3. LLVMgold uses the interface file

View File

@ -7,7 +7,7 @@
</head>
<body>
<div class="doc_title">How To Release LLVM To The Public</div>
<h1>How To Release LLVM To The Public</h1>
<ol>
<li><a href="#introduction">Introduction</a></li>
<li><a href="#criteria">Qualification Criteria</a></li>
@ -23,7 +23,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="introduction">Introduction</a></div>
<h2><a name="introduction">Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -36,7 +36,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="process">Release Timeline</a></div>
<h2><a name="process">Release Timeline</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -76,7 +76,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="process">Release Process</a></div>
<h2><a name="process">Release Process</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -122,7 +122,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="release-admin">Release Administrative Tasks</a></div>
<h3><a name="release-admin">Release Administrative Tasks</a></h3>
<div class="doc_text">
@ -138,7 +138,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="branch">Create Release Branch</a></div>
<h4><a name="branch">Create Release Branch</a></h4>
<div class="doc_text">
@ -198,7 +198,7 @@ $ svn co https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i> clang-
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="verchanges">Update LLVM Version</a></div>
<h4><a name="verchanges">Update LLVM Version</a></h4>
<div class="doc_text">
@ -214,7 +214,7 @@ $ svn co https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i> clang-
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="dist">Build the LLVM Release Candidates</a></div>
<h4><a name="dist">Build the LLVM Release Candidates</a></h4>
<div class="doc_text">
@ -269,7 +269,7 @@ $ tar -cvf - clang-<i>X.Y</i>rc1 | gzip &gt; clang-<i>X.Y</i>rc1.src.tar.g
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="release-build">Building the Release</a></div>
<h3><a name="release-build">Building the Release</a></h3>
<div class="doc_text">
@ -290,7 +290,7 @@ $ tar -cvf - clang-<i>X.Y</i>rc1 | gzip &gt; clang-<i>X.Y</i>rc1.src.tar.g
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="build">Build LLVM</a></div>
<h4><a name="build">Build LLVM</a></h4>
<div class="doc_text">
@ -302,7 +302,7 @@ $ tar -cvf - clang-<i>X.Y</i>rc1 | gzip &gt; clang-<i>X.Y</i>rc1.src.tar.g
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="llvmgccbin">Build the LLVM GCC Binary Distribution</a></div>
<h4><a name="llvmgccbin">Build the LLVM GCC Binary Distribution</a></h4>
<div class="doc_text">
@ -329,7 +329,7 @@ $ tar -cvf - clang-<i>X.Y</i>rc1 | gzip &gt; clang-<i>X.Y</i>rc1.src.tar.g
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="clangbin">Build Clang Binary Distribution</a></div>
<h4><a name="clangbin">Build Clang Binary Distribution</a></h4>
<div class="doc_text">
@ -350,7 +350,7 @@ $ tar -cvf - clang-<i>X.Y</i>rc1 | gzip &gt; clang-<i>X.Y</i>rc1.src.tar.g
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="target-build">Target Specific Build Details</a></div>
<h4><a name="target-build">Target Specific Build Details</a></h4>
<div class="doc_text">
@ -372,8 +372,7 @@ $ tar -cvf - clang-<i>X.Y</i>rc1 | gzip &gt; clang-<i>X.Y</i>rc1.src.tar.g
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="release-qualify">
Building the Release</a></div>
<h3><a name="release-qualify">Building the Release</a></h3>
<div class="doc_text">
@ -394,7 +393,7 @@ Building the Release</a></div>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="llvm-qualify">Qualify LLVM</a></div>
<h4><a name="llvm-qualify">Qualify LLVM</a></h4>
<div class="doc_text">
@ -405,7 +404,7 @@ Building the Release</a></div>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="llvmgcc-qualify">Qualify LLVM-GCC</a></div>
<h4><a name="llvmgcc-qualify">Qualify LLVM-GCC</a></h4>
<div class="doc_text">
@ -418,7 +417,7 @@ Building the Release</a></div>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="clang-qualify">Qualify Clang</a></div>
<h4><a name="clang-qualify">Qualify Clang</a></h4>
<div class="doc_text">
@ -429,8 +428,7 @@ Building the Release</a></div>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="targets">Specific Target
Qualification Details</a></div>
<h4><a name="targets">Specific Target Qualification Details</a></h4>
<div class="doc_text">
@ -447,7 +445,7 @@ Qualification Details</a></div>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="commTest">Community Testing</a></div>
<h3><a name="commTest">Community Testing</a></h3>
<div class="doc_text">
<p>Once all testing has been completed and appropriate bugs filed, the release
@ -484,7 +482,7 @@ Qualification Details</a></div>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="release-patch">Release Patch Rules</a></div>
<h3><a name="release-patch">Release Patch Rules</a></h3>
<div class="doc_text">
@ -508,8 +506,7 @@ Qualification Details</a></div>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="release-final">Release Final Tasks
</a></div>
<h3><a name="release-final">Release Final Tasks</a></h3>
<div class="doc_text">
@ -521,7 +518,7 @@ Qualification Details</a></div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="updocs">Update Documentation</a></div>
<h4><a name="updocs">Update Documentation</a></h4>
<div class="doc_text">
@ -535,7 +532,7 @@ Qualification Details</a></div>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="tag">Tag the LLVM Final Release</a></div>
<h4><a name="tag">Tag the LLVM Final Release</a></h4>
<div class="doc_text">
@ -560,7 +557,7 @@ $ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_XY \
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="updemo">Update the LLVM Demo Page</a></div>
<h3><a name="updemo">Update the LLVM Demo Page</a></h3>
<div class="doc_text">
@ -570,7 +567,7 @@ $ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_XY \
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="webupdates">Update the LLVM Website</a></div>
<h4><a name="webupdates">Update the LLVM Website</a></h4>
<div class="doc_text">
@ -606,7 +603,7 @@ $ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_XY \
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="announce">Announce the Release</a></div>
<h4><a name="announce">Announce the Release</a></h4>
<div class="doc_text">

View File

@ -7,9 +7,9 @@
</head>
<body>
<div class="doc_title">
<h1>
How to submit an LLVM bug report
</div>
</h1>
<table class="layout" style="width: 90%" >
<tr class="layout">
@ -37,9 +37,9 @@
</table>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="introduction">Introduction - Got bugs?</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -76,9 +76,9 @@ information:</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="crashers">Crashing Bugs</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -112,9 +112,9 @@ with the following extra command line options:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="front-end">Front-end bugs</a>
</div>
</h3>
<div class="doc_text">
@ -137,9 +137,9 @@ has instructions on the best way to use delta.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ct_optimizer">Compile-time optimization bugs</a>
</div>
</h3>
<div class="doc_text">
@ -171,9 +171,9 @@ that bugpoint emits. If something goes wrong with bugpoint, please submit the
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ct_codegen">Code generator bugs</a>
</div>
</h3>
<div class="doc_text">
@ -208,9 +208,9 @@ that bugpoint emits. If something goes wrong with bugpoint, please submit the
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="miscompilations">Miscompilations</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -241,9 +241,9 @@ error.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="codegen">Incorrect code generation</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">

File diff suppressed because it is too large Load Diff

View File

@ -9,10 +9,10 @@
content="A glossary of terms used with the LLVM project.">
</head>
<body>
<div class="doc_title">The LLVM Lexicon</div>
<h1>The LLVM Lexicon</h1>
<p class="doc_warning">NOTE: This document is a work in progress!</p>
<!-- *********************************************************************** -->
<div class="doc_section">Table Of Contents</div>
<h2>Table Of Contents</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
<table>
@ -83,10 +83,10 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">Definitions</div>
<h2>Definitions</h2>
<!-- *********************************************************************** -->
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="A">- A -</a></div>
<h3><a name="A">- A -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="ADCE"><b>ADCE</b></a></dt>
@ -94,7 +94,7 @@
</dl>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="B">- B -</a></div>
<h3><a name="B">- B -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="BURS"><b>BURS</b></a></dt>
@ -104,7 +104,7 @@ href="http://www.program-transformation.org/Transform/BURG">BURG</a> tool.</dd>
</dl>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="C">- C -</a></div>
<h3><a name="C">- C -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="CSE"><b>CSE</b></a></dt>
@ -116,7 +116,7 @@ href="http://www.program-transformation.org/Transform/BURG">BURG</a> tool.</dd>
</dl>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="D">- D -</a></div>
<h3><a name="D">- D -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="DAG"><b>DAG</b></a></dt>
@ -136,7 +136,7 @@ href="http://www.program-transformation.org/Transform/BURG">BURG</a> tool.</dd>
</dl>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="G">- G -</a></div>
<h3><a name="G">- G -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="GC"><b>GC</b></a></dt>
@ -145,7 +145,7 @@ href="http://www.program-transformation.org/Transform/BURG">BURG</a> tool.</dd>
</dl>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="H">- H -</a></div>
<h3><a name="H">- H -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="Heap"><b>Heap</b></a></dt>
@ -154,7 +154,7 @@ href="http://www.program-transformation.org/Transform/BURG">BURG</a> tool.</dd>
</dl>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="I">- I -</a></div>
<h3><a name="I">- I -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="IPA"><b>IPA</b></a></dt>
@ -169,7 +169,7 @@ href="http://www.program-transformation.org/Transform/BURG">BURG</a> tool.</dd>
</dl>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="L">- L -</a></div>
<h3><a name="L">- L -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="LCSSA"><b>LCSSA</b></a></dt>
@ -183,7 +183,7 @@ href="http://www.program-transformation.org/Transform/BURG">BURG</a> tool.</dd>
</dl>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="M">- M -</a></div>
<h3><a name="M">- M -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="MC"><b>MC</b></a></dt>
@ -191,7 +191,7 @@ href="http://www.program-transformation.org/Transform/BURG">BURG</a> tool.</dd>
</dl>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="O">- O -</a></div>
<h3><a name="O">- O -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="Object_Pointer"><b>Object Pointer</b></a></dt>
@ -202,7 +202,7 @@ href="http://www.program-transformation.org/Transform/BURG">BURG</a> tool.</dd>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="P">- P -</a></div>
<h3><a name="P">- P -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="PRE"><b>PRE</b></a></dt>
@ -211,7 +211,7 @@ href="http://www.program-transformation.org/Transform/BURG">BURG</a> tool.</dd>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="R">- R -</a></div>
<h3><a name="R">- R -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="RAUW"><b>RAUW</b></a></dt> <dd>An abbreviation for Replace
@ -234,7 +234,7 @@ href="http://www.program-transformation.org/Transform/BURG">BURG</a> tool.</dd>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="S">- S -</a></div>
<h3><a name="S">- S -</a></h3>
<div class="doc_text">
<dl>
<dt><a name="Safe_Point"><b>Safe Point</b></a></dt>

View File

@ -6,9 +6,9 @@
<link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<div class="doc_title">
<h1>
LLVM Link Time Optimization: Design and Implementation
</div>
</h1>
<ul>
<li><a href="#desc">Description</a></li>
@ -36,9 +36,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="desc">Description</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -50,9 +50,9 @@ and design between the LTO optimizer and the linker.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="design">Design Philosophy</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -72,9 +72,9 @@ conservative escape analysis.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="example1">Example of link time optimization</a>
</div>
</h3>
<div class="doc_text">
<p>The following example illustrates the advantages of LTO's integrated
@ -145,9 +145,9 @@ $ llvm-gcc a.o main.o -o main # &lt;-- standard link command without any modific
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="alternative_approaches">Alternative Approaches</a>
</div>
</h3>
<div class="doc_text">
<dl>
@ -176,9 +176,9 @@ $ llvm-gcc a.o main.o -o main # &lt;-- standard link command without any modific
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="multiphase">Multi-phase communication between libLTO and linker</a>
</div>
</h2>
<div class="doc_text">
<p>The linker collects information about symbol defininitions and uses in
@ -195,9 +195,9 @@ $ llvm-gcc a.o main.o -o main # &lt;-- standard link command without any modific
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="phase1">Phase 1 : Read LLVM Bitcode Files</a>
</div>
</h3>
<div class="doc_text">
<p>The linker first reads all object files in natural order and collects
@ -219,9 +219,9 @@ $ llvm-gcc a.o main.o -o main # &lt;-- standard link command without any modific
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="phase2">Phase 2 : Symbol Resolution</a>
</div>
</h3>
<div class="doc_text">
<p>In this stage, the linker resolves symbols using global symbol table.
@ -233,9 +233,9 @@ $ llvm-gcc a.o main.o -o main # &lt;-- standard link command without any modific
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="phase3">Phase 3 : Optimize Bitcode Files</a>
</div>
</h3>
<div class="doc_text">
<p>After symbol resolution, the linker tells the LTO shared object which
symbols are needed by native object files. In the example above, the linker
@ -248,9 +248,9 @@ $ llvm-gcc a.o main.o -o main # &lt;-- standard link command without any modific
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="phase4">Phase 4 : Symbol Resolution after optimization</a>
</div>
</h3>
<div class="doc_text">
<p>In this phase, the linker reads optimized a native object file and
@ -265,9 +265,9 @@ $ llvm-gcc a.o main.o -o main # &lt;-- standard link command without any modific
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="lto">libLTO</a>
</div>
</h2>
<div class="doc_text">
<p><tt>libLTO</tt> is a shared object that is part of the LLVM tools, and
@ -281,9 +281,9 @@ $ llvm-gcc a.o main.o -o main # &lt;-- standard link command without any modific
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="lto_module_t">lto_module_t</a>
</div>
</h3>
<div class="doc_text">
@ -325,9 +325,9 @@ lto_module_get_symbol_attribute(lto_module_t, unsigned int)
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="lto_code_gen_t">lto_code_gen_t</a>
</div>
</h3>
<div class="doc_text">

View File

@ -7,7 +7,7 @@
</head>
<body>
<div class="doc_title">LLVM Makefile Guide</div>
<h1>LLVM Makefile Guide</h1>
<ol>
<li><a href="#introduction">Introduction</a></li>
@ -77,7 +77,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="introduction">Introduction </a></div>
<h2><a name="introduction">Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -99,7 +99,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="general">General Concepts</a></div>
<h2><a name="general">General Concepts</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -111,7 +111,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="projects">Projects</a></div>
<h3><a name="projects">Projects</a></h3>
<div class="doc_text">
<p>The LLVM Makefile System is quite generous. It not only builds its own
software, but it can build yours too. Built into the system is knowledge of
@ -129,7 +129,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="varvalues">Variable Values</a></div>
<h3><a name="varvalues">Variable Values</a></h3>
<div class="doc_text">
<p>To use the makefile system, you simply create a file named
<tt>Makefile</tt> in your directory and declare values for certain variables.
@ -139,7 +139,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="including">Including Makefiles</a></div>
<h3><a name="including">Including Makefiles</a></h3>
<div class="doc_text">
<p>Setting variables alone is not enough. You must include into your Makefile
additional files that provide the rules of the LLVM Makefile system. The
@ -147,7 +147,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="Makefile">Makefile</a></div>
<h4><a name="Makefile">Makefile</a></h4>
<div class="doc_text">
<p>Each directory to participate in the build needs to have a file named
<tt>Makefile</tt>. This is the file first read by <tt>make</tt>. It has three
@ -163,8 +163,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="Makefile.common">Makefile.common</a>
</div>
<h4><a name="Makefile.common">Makefile.common</a></h4>
<div class="doc_text">
<p>Every project must have a <tt>Makefile.common</tt> file at its top source
directory. This file serves three purposes:</p>
@ -182,8 +181,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="Makefile.config">Makefile.config</a>
</div>
<h4><a name="Makefile.config">Makefile.config</a></h4>
<div class="doc_text">
<p>Every project must have a <tt>Makefile.config</tt> at the top of its
<em>build</em> directory. This file is <b>generated</b> by the
@ -196,7 +194,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="Makefile.rules">Makefile.rules</a></div>
<h4><a name="Makefile.rules">Makefile.rules</a></h4>
<div class="doc_text">
<p>This file, located at <tt>$(LLVM_SRC_ROOT)/Makefile.rules</tt> is the heart
of the LLVM Makefile System. It provides all the logic, dependencies, and
@ -206,7 +204,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="Comments">Comments</a></div>
<h3><a name="Comments">Comments</a></h3>
<div class="doc_text">
<p>User Makefiles need not have comments in them unless the construction is
unusual or it does not strictly follow the rules and patterns of the LLVM
@ -216,7 +214,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="tutorial">Tutorial</a></div>
<h2><a name="tutorial">Tutorial</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
<p>This section provides some examples of the different kinds of modules you
@ -226,7 +224,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="libraries">Libraries</a></div>
<h3><a name="libraries">Libraries</a></h3>
<div class="doc_text">
<p>Only a few variable definitions are needed to build a regular library.
Normally, the makefile system will build all the software into a single
@ -259,7 +257,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="BCModules">Bitcode Modules</a></div>
<h4><a name="BCModules">Bitcode Modules</a></h4>
<div class="doc_text">
<p>In some situations, it is desirable to build a single bitcode module from
a variety of sources, instead of an archive, shared library, or bitcode
@ -280,9 +278,9 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="LoadableModules">Loadable Modules</a>
</div>
</h4>
<div class="doc_text">
<p>In some situations, you need to create a loadable module. Loadable modules
can be loaded into programs like <tt>opt</tt> or <tt>llc</tt> to specify
@ -312,7 +310,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="tools">Tools</a></div>
<h3><a name="tools">Tools</a></h3>
<div class="doc_text">
<p>For building executable programs (tools), you must provide the name of the
tool and the names of the libraries you wish to link with the tool. For
@ -347,7 +345,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="JIT">JIT Tools</a></div>
<h4><a name="JIT">JIT Tools</a></h4>
<div class="doc_text">
<p>Many tools will want to use the JIT features of LLVM. To do this, you
simply specify that you want an execution 'engine', and the makefiles will
@ -368,7 +366,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="targets">Targets Supported</a></div>
<h2><a name="targets">Targets Supported</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -429,7 +427,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="all">all (default)</a></div>
<h3><a name="all">all (default)</a></h3>
<div class="doc_text">
<p>When you invoke <tt>make</tt> with no arguments, you are implicitly
instructing it to seek the "all" target (goal). This target is used for
@ -440,14 +438,14 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="all-local">all-local</a></div>
<h3><a name="all-local">all-local</a></h3>
<div class="doc_text">
<p>This target is the same as <a href="#all">all</a> but it operates only on
the current directory instead of recursively.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="check">check</a></div>
<h3><a name="check">check</a></h3>
<div class="doc_text">
<p>This target can be invoked from anywhere within a project's directories
but always invokes the <a href="#check-local"><tt>check-local</tt></a> target
@ -464,7 +462,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="check-local">check-local</a></div>
<h3><a name="check-local">check-local</a></h3>
<div class="doc_text">
<p>This target should be implemented by the <tt>Makefile</tt> in the project's
<tt>test</tt> directory. It is invoked by the <tt>check</tt> target elsewhere.
@ -475,7 +473,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="clean">clean</a></div>
<h3><a name="clean">clean</a></h3>
<div class="doc_text">
<p>This target cleans the build directory, recursively removing all things
that the Makefile builds. The cleaning rules have been made guarded so they
@ -484,14 +482,14 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="clean-local">clean-local</a></div>
<h3><a name="clean-local">clean-local</a></h3>
<div class="doc_text">
<p>This target does the same thing as <tt>clean</tt> but only for the current
(local) directory.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="dist">dist</a></div>
<h3><a name="dist">dist</a></h3>
<div class="doc_text">
<p>This target builds a distribution tarball. It first builds the entire
project using the <tt>all</tt> target and then tars up the necessary files and
@ -500,7 +498,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="dist-check">dist-check</a></div>
<h3><a name="dist-check">dist-check</a></h3>
<div class="doc_text">
<p>This target does the same thing as the <tt>dist</tt> target but also checks
the distribution tarball. The check is made by unpacking the tarball to a new
@ -512,7 +510,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="dist-clean">dist-clean</a></div>
<h3><a name="dist-clean">dist-clean</a></h3>
<div class="doc_text">
<p>This is a special form of the <tt>clean</tt> clean target. It performs a
normal <tt>clean</tt> but also removes things pertaining to building the
@ -520,7 +518,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="install">install</a></div>
<h3><a name="install">install</a></h3>
<div class="doc_text">
<p>This target finalizes shared objects and executables and copies all
libraries, headers, executables and documentation to the directory given
@ -538,7 +536,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="preconditions">preconditions</a></div>
<h3><a name="preconditions">preconditions</a></h3>
<div class="doc_text">
<p>This utility target checks to see if the <tt>Makefile</tt> in the object
directory is older than the <tt>Makefile</tt> in the source directory and
@ -549,14 +547,14 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="printvars">printvars</a></div>
<h3><a name="printvars">printvars</a></h3>
<div class="doc_text">
<p>This utility target just causes the LLVM makefiles to print out some of
the makefile variables so that you can double check how things are set. </p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="reconfigure">reconfigure</a></div>
<h3><a name="reconfigure">reconfigure</a></h3>
<div class="doc_text">
<p>This utility target will force a reconfigure of LLVM or your project. It
simply runs <tt>$(PROJ_OBJ_ROOT)/config.status --recheck</tt> to rerun the
@ -566,7 +564,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="spotless">spotless</a></div>
<h3><a name="spotless">spotless</a></h3>
<div class="doc_text">
<p>This utility target, only available when <tt>$(PROJ_OBJ_ROOT)</tt> is not
the same as <tt>$(PROJ_SRC_ROOT)</tt>, will completely clean the
@ -578,7 +576,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="tags">tags</a></div>
<h3><a name="tags">tags</a></h3>
<div class="doc_text">
<p>This target will generate a <tt>TAGS</tt> file in the top-level source
directory. It is meant for use with emacs, XEmacs, or ViM. The TAGS file
@ -587,7 +585,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="uninstall">uninstall</a></div>
<h3><a name="uninstall">uninstall</a></h3>
<div class="doc_text">
<p>This target is the opposite of the <tt>install</tt> target. It removes the
header, library and executable files from the installation directories. Note
@ -596,7 +594,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="variables">Variables</a></div>
<h2><a name="variables">Variables</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
<p>Variables are used to tell the LLVM Makefile System what to do and to
@ -609,7 +607,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="setvars">Control Variables</a></div>
<h3><a name="setvars">Control Variables</a></h3>
<div class="doc_text">
<p>Variables listed in the table below should be set <em>before</em> the
inclusion of <a href="#Makefile.common"><tt>$(LEVEL)/Makefile.common</tt></a>.
@ -762,7 +760,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="overvars">Override Variables</a></div>
<h3><a name="overvars">Override Variables</a></h3>
<div class="doc_text">
<p>Override variables can be used to override the default
values provided by the LLVM makefile system. These variables can be set in
@ -868,7 +866,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="getvars">Readable Variables</a></div>
<h3><a name="getvars">Readable Variables</a></h3>
<div class="doc_text">
<p>Variables listed in the table below can be used by the user's Makefile but
should not be changed. Changing the value will generally cause the build to go
@ -939,7 +937,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="intvars">Internal Variables</a></div>
<h3><a name="intvars">Internal Variables</a></h3>
<div class="doc_text">
<p>Variables listed below are used by the LLVM Makefile System
and considered internal. You should not use these variables under any

View File

@ -7,7 +7,7 @@
</head>
<body>
<div class="doc_title">Advice on Packaging LLVM</div>
<h1>Advice on Packaging LLVM</h1>
<ol>
<li><a href="#overview">Overview</a></li>
<li><a href="#compilation">Compile Flags</a></li>
@ -17,7 +17,7 @@
</ol>
<!--=========================================================================-->
<div class="doc_section"><a name="overview">Overview</a></div>
<h2><a name="overview">Overview</a></h2>
<!--=========================================================================-->
<div class="doc_text">
@ -34,7 +34,7 @@ developed against each.
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="compilation">Compile Flags</a></div>
<h2><a name="compilation">Compile Flags</a></h2>
<!--=========================================================================-->
<div class="doc_text">
@ -65,7 +65,7 @@ versions of LLVM in parallel. The following configure flags are relevant:
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="cxx-features">C++ Features</a></div>
<h2><a name="cxx-features">C++ Features</a></h2>
<!--=========================================================================-->
<div class="doc_text">
@ -78,7 +78,7 @@ versions of LLVM in parallel. The following configure flags are relevant:
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="shared-library">Shared Library</a></div>
<h2><a name="shared-library">Shared Library</a></h2>
<!--=========================================================================-->
<div class="doc_text">
@ -89,7 +89,7 @@ against it. This saves lots of binary size at the cost of some startup time.
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="deps">Dependencies</a></div>
<h2><a name="deps">Dependencies</a></h2>
<!--=========================================================================-->
<div class="doc_text">

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@
</head>
<body>
<div class="doc_title">Creating an LLVM Project</div>
<h1>Creating an LLVM Project</h1>
<ol>
<li><a href="#overview">Overview</a></li>
@ -30,7 +30,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="overview">Overview</a></div>
<h2><a name="overview">Overview</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -73,9 +73,9 @@ provide enough information on how to write your own Makefiles.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="create">Create a Project from the Sample Project</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -145,9 +145,9 @@ project should build.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="source">Source Tree Layout</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -230,9 +230,9 @@ your <b>tools</b> directory.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="makefiles">Writing LLVM Style Makefiles</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -245,9 +245,9 @@ do:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="reqVars">Required Variables</a>
</div>
</h3>
<div class="doc_text">
@ -263,9 +263,9 @@ do:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="varsBuildDir">Variables for Building Subdirectories</a>
</div>
</h3>
<div class="doc_text">
@ -294,9 +294,9 @@ do:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="varsBuildLib">Variables for Building Libraries</a>
</div>
</h3>
<div class="doc_text">
@ -325,9 +325,9 @@ do:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="varsBuildProg">Variables for Building Programs</a>
</div>
</h3>
<div class="doc_text">
@ -368,9 +368,9 @@ do:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="miscVars">Miscellaneous Variables</a>
</div>
</h3>
<div class="doc_text">
@ -399,9 +399,9 @@ do:</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="objcode">Placement of Object Code</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -427,9 +427,9 @@ whether you do a Debug, Release, or Profile build.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="help">Further Help</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -8,7 +8,7 @@
</head>
<body>
<div class="doc_title">Source Level Debugging with LLVM</div>
<h1>Source Level Debugging with LLVM</h1>
<table class="layout" style="width:100%">
<tr class="layout">
@ -68,7 +68,7 @@ height="369">
<!-- *********************************************************************** -->
<div class="doc_section"><a name="introduction">Introduction</a></div>
<h2><a name="introduction">Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -83,9 +83,9 @@ height="369">
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="phil">Philosophy behind LLVM debugging information</a>
</div>
</h3>
<div class="doc_text">
@ -133,9 +133,9 @@ height="369">
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="consumers">Debug information consumers</a>
</div>
</h3>
<div class="doc_text">
@ -157,9 +157,9 @@ height="369">
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="debugopt">Debugging optimized code</a>
</div>
</h3>
<div class="doc_text">
@ -227,9 +227,9 @@ height="369">
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="format">Debugging information format</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -268,9 +268,9 @@ height="369">
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="debug_info_descriptors">Debug information descriptors</a>
</div>
</h3>
<div class="doc_text">
@ -315,9 +315,9 @@ height="369">
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_compile_units">Compile unit descriptors</a>
</div>
</h4>
<div class="doc_text">
@ -351,9 +351,9 @@ height="369">
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_files">File descriptors</a>
</div>
</h4>
<div class="doc_text">
@ -380,9 +380,9 @@ height="369">
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_global_variables">Global variable descriptors</a>
</div>
</h4>
<div class="doc_text">
@ -413,9 +413,9 @@ global variables are collected by named metadata <tt>!llvm.dbg.gv</tt>.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_subprograms">Subprogram descriptors</a>
</div>
</h4>
<div class="doc_text">
@ -456,9 +456,9 @@ global variables are collected by named metadata <tt>!llvm.dbg.gv</tt>.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_blocks">Block descriptors</a>
</div>
</h4>
<div class="doc_text">
@ -482,9 +482,9 @@ global variables are collected by named metadata <tt>!llvm.dbg.gv</tt>.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_basic_type">Basic type descriptors</a>
</div>
</h4>
<div class="doc_text">
@ -534,9 +534,9 @@ DW_ATE_unsigned_char = 8
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_derived_type">Derived type descriptors</a>
</div>
</h4>
<div class="doc_text">
@ -606,9 +606,9 @@ DW_TAG_restrict_type = 55
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_composite_type">Composite type descriptors</a>
</div>
</h4>
<div class="doc_text">
@ -693,9 +693,9 @@ DW_TAG_inheritance = 28
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_subrange">Subrange descriptors</a>
</div>
</h4>
<div class="doc_text">
@ -719,9 +719,9 @@ DW_TAG_inheritance = 28
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_enumeration">Enumerator descriptors</a>
</div>
</h4>
<div class="doc_text">
@ -743,9 +743,9 @@ DW_TAG_inheritance = 28
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_variables">Local variables</a>
</div>
</h4>
<div class="doc_text">
@ -787,9 +787,9 @@ DW_TAG_return_variable = 258
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="format_common_intrinsics">Debugger intrinsic functions</a>
</div>
</h3>
<div class="doc_text">
@ -799,9 +799,9 @@ DW_TAG_return_variable = 258
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_common_declare">llvm.dbg.declare</a>
</div>
</h4>
<div class="doc_text">
<pre>
@ -814,9 +814,9 @@ DW_TAG_return_variable = 258
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="format_common_value">llvm.dbg.value</a>
</div>
</h4>
<div class="doc_text">
<pre>
@ -831,9 +831,9 @@ DW_TAG_return_variable = 258
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="format_common_lifetime">Object lifetimes and scoping</a>
</div>
</h3>
<div class="doc_text">
<p>In many languages, the local variables in functions can have their lifetimes
@ -994,9 +994,9 @@ call void @llvm.dbg.declare(metadata, metadata !12), !dbg !14
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="ccxx_frontend">C/C++ front-end specific debug information</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1023,9 +1023,9 @@ call void @llvm.dbg.declare(metadata, metadata !12), !dbg !14
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ccxx_compile_units">C/C++ source file information</a>
</div>
</h3>
<div class="doc_text">
@ -1101,9 +1101,9 @@ using <tt>Instruction::getMetadata()</tt> and
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ccxx_global_variable">C/C++ global variable information</a>
</div>
</h3>
<div class="doc_text">
@ -1171,9 +1171,9 @@ int MyGlobal = 100;
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ccxx_subprogram">C/C++ function information</a>
</div>
</h3>
<div class="doc_text">
@ -1228,9 +1228,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ccxx_basic_types">C/C++ basic types</a>
</div>
</h3>
<div class="doc_text">
@ -1239,9 +1239,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="ccxx_basic_type_bool">bool</a>
</div>
</h4>
<div class="doc_text">
@ -1265,9 +1265,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="ccxx_basic_char">char</a>
</div>
</h4>
<div class="doc_text">
@ -1291,9 +1291,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="ccxx_basic_unsigned_char">unsigned char</a>
</div>
</h4>
<div class="doc_text">
@ -1317,9 +1317,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="ccxx_basic_short">short</a>
</div>
</h4>
<div class="doc_text">
@ -1343,9 +1343,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="ccxx_basic_unsigned_short">unsigned short</a>
</div>
</h4>
<div class="doc_text">
@ -1369,9 +1369,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="ccxx_basic_int">int</a>
</div>
</h4>
<div class="doc_text">
@ -1394,9 +1394,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="ccxx_basic_unsigned_int">unsigned int</a>
</div>
</h4>
<div class="doc_text">
@ -1420,9 +1420,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="ccxx_basic_long_long">long long</a>
</div>
</h4>
<div class="doc_text">
@ -1446,9 +1446,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="ccxx_basic_unsigned_long_long">unsigned long long</a>
</div>
</h4>
<div class="doc_text">
@ -1472,9 +1472,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="ccxx_basic_float">float</a>
</div>
</h4>
<div class="doc_text">
@ -1498,9 +1498,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection">
<h4>
<a name="ccxx_basic_double">double</a>
</div>
</h4>
<div class="doc_text">
@ -1524,9 +1524,9 @@ define i32 @main(i32 %argc, i8** %argv) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ccxx_derived_types">C/C++ derived types</a>
</div>
</h3>
<div class="doc_text">
@ -1609,9 +1609,9 @@ typedef const int *IntPtr;
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ccxx_composite_types">C/C++ struct/union types</a>
</div>
</h3>
<div class="doc_text">
@ -1722,9 +1722,9 @@ struct Color {
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ccxx_enumeration_types">C/C++ enumeration types</a>
</div>
</h3>
<div class="doc_text">

View File

@ -7,7 +7,7 @@
</head>
<body>
<div class="doc_title">System Library</div>
<h1>System Library</h1>
<ul>
<li><a href="#abstract">Abstract</a></li>
<li><a href="#requirements">Keeping LLVM Portable</a>
@ -36,7 +36,7 @@
<!-- *********************************************************************** -->
<div class="doc_section"><a name="abstract">Abstract</a></div>
<h2><a name="abstract">Abstract</a></h2>
<div class="doc_text">
<p>This document provides some details on LLVM's System Library, located in
the source at <tt>lib/System</tt> and <tt>include/llvm/System</tt>. The
@ -63,9 +63,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="requirements">Keeping LLVM Portable</a>
</div>
</h2>
<div class="doc_text">
<p>In order to keep LLVM portable, LLVM developers should adhere to a set of
portability rules associated with the System Library. Adherence to these rules
@ -75,8 +75,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="headers">Don't Include System Headers</a>
</div>
<h3><a name="headers">Don't Include System Headers</a></h3>
<div class="doc_text">
<p>Except in <tt>lib/System</tt>, no LLVM source code should directly
<tt>#include</tt> a system header. Care has been taken to remove all such
@ -91,8 +90,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="expose">Don't Expose System Headers</a>
</div>
<h3><a name="expose">Don't Expose System Headers</a></h3>
<div class="doc_text">
<p>The System Library must shield LLVM from <em>all</em> system headers. To
obtain system level functionality, LLVM source must
@ -103,7 +101,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="c_headers">Use Standard C Headers</a></div>
<h3><a name="c_headers">Use Standard C Headers</a></h3>
<div class="doc_text">
<p>The <em>standard</em> C headers (the ones beginning with "c") are allowed
to be exposed through the <tt>lib/System</tt> interface. These headers and
@ -113,8 +111,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="cpp_headers">Use Standard C++ Headers</a>
</div>
<h3><a name="cpp_headers">Use Standard C++ Headers</a></h3>
<div class="doc_text">
<p>The <em>standard</em> C++ headers from the standard C++ library and
standard template library may be exposed through the <tt>lib/System</tt>
@ -124,7 +121,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="highlev">High Level Interface</a></div>
<h3><a name="highlev">High Level Interface</a></h3>
<div class="doc_text">
<p>The entry points specified in the interface of lib/System must be aimed at
completing some reasonably high level task needed by LLVM. We do not want to
@ -143,7 +140,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="nounused">No Unused Functionality</a></div>
<h3><a name="nounused">No Unused Functionality</a></h3>
<div class="doc_text">
<p>There must be no functionality specified in the interface of lib/System
that isn't actually used by LLVM. We're not writing a general purpose
@ -153,8 +150,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="nodupl">No Duplicate Implementations</a>
</div>
<h3><a name="nodupl">No Duplicate Implementations</a></h3>
<div class="doc_text">
<p>The implementation of a function for a given platform must be written
exactly once. This implies that it must be possible to apply a function's
@ -165,7 +161,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="virtuals">No Virtual Methods</a></div>
<h3><a name="virtuals">No Virtual Methods</a></h3>
<div class="doc_text">
<p>The System Library interfaces can be called quite frequently by LLVM. In
order to make those calls as efficient as possible, we discourage the use of
@ -175,7 +171,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="nofunc">No Exposed Functions</a></div>
<h3><a name="nofunc">No Exposed Functions</a></h3>
<div class="doc_text">
<p>Any functions defined by system libraries (i.e. not defined by lib/System)
must not be exposed through the lib/System interface, even if the header file
@ -191,7 +187,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="nodata">No Exposed Data</a></div>
<h3><a name="nodata">No Exposed Data</a></h3>
<div class="doc_text">
<p>Any data defined by system libraries (i.e. not defined by lib/System) must
not be exposed through the lib/System interface, even if the header file for
@ -200,7 +196,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="softerrors">Minimize Soft Errors</a></div>
<h3><a name="softerrors">Minimize Soft Errors</a></h3>
<div class="doc_text">
<p>Operating system interfaces will generally provide error results for every
little thing that could go wrong. In almost all cases, you can divide these
@ -239,8 +235,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="throw_spec">No throw Specifications</a>
</div>
<h3><a name="throw_spec">No throw Specifications</a></h3>
<div class="doc_text">
<p>None of the lib/System interface functions may be declared with C++
<tt>throw()</tt> specifications on them. This requirement makes sure that the
@ -252,7 +247,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="organization">Code Organization</a></div>
<h3><a name="organization">Code Organization</a></h3>
<div class="doc_text">
<p>Implementations of the System Library interface are separated by their
general class of operating system. Currently only Unix and Win32 classes are
@ -281,7 +276,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="semantics">Consistent Semantics</a></div>
<h3><a name="semantics">Consistent Semantics</a></h3>
<div class="doc_text">
<p>The implementation of a lib/System interface can vary drastically between
platforms. That's okay as long as the end result of the interface function
@ -296,7 +291,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="bug">Bug 351</a></div>
<h3><a name="bug">Bug 351</a></h3>
<div class="doc_text">
<p>See <a href="http://llvm.org/PR351">bug 351</a>
for further details on the progress of this work</p>

View File

@ -7,7 +7,7 @@
</head>
<body>
<div class="doc_title">TableGen Fundamentals</div>
<h1>TableGen Fundamentals</h1>
<div class="doc_text">
<ul>
@ -50,7 +50,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="introduction">Introduction</a></div>
<h2><a name="introduction">Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -75,7 +75,7 @@ distribution, respectively.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="concepts">Basic concepts</a></div>
<h3><a name="concepts">Basic concepts</a></h3>
<div class="doc_text">
@ -112,7 +112,7 @@ multiclass, as if they were declared in the current multiclass.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="example">An example record</a></div>
<h3><a name="example">An example record</a></h3>
<div class="doc_text">
@ -212,7 +212,7 @@ abstractions they prefer to use when describing their information.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="running">Running TableGen</a></div>
<h3><a name="running">Running TableGen</a></h3>
<div class="doc_text">
@ -258,7 +258,7 @@ what you need and formats it in the appropriate way.</p>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="syntax">TableGen syntax</a></div>
<h2><a name="syntax">TableGen syntax</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -271,10 +271,10 @@ This section describes the syntax and the constructs allowed in a TableGen file.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="primitives">TableGen primitives</a></div>
<h3><a name="primitives">TableGen primitives</a></h3>
<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection"><a name="comments">TableGen comments</a></div>
<h4><a name="comments">TableGen comments</a></h4>
<div class="doc_text">
@ -284,9 +284,9 @@ the line, and it also supports <b>nestable</b> "<tt>/* */</tt>" comments.</p>
</div>
<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
<h4>
<a name="types">The TableGen type system</a>
</div>
</h4>
<div class="doc_text">
@ -344,9 +344,9 @@ needed.</p>
</div>
<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
<h4>
<a name="values">TableGen values and expressions</a>
</div>
</h4>
<div class="doc_text">
@ -434,9 +434,9 @@ to a "<tt>bits&lt;4&gt;</tt>" value, for example.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="classesdefs">Classes and definitions</a>
</div>
</h3>
<div class="doc_text">
@ -476,9 +476,9 @@ subclasses to override them as they wish.</p>
</div>
<!---------------------------------------------------------------------------->
<div class="doc_subsubsection">
<h4>
<a name="valuedef">Value definitions</a>
</div>
</h4>
<div class="doc_text">
@ -492,9 +492,9 @@ equal sign. Value definitions require terminating semicolons.</p>
</div>
<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
<h4>
<a name="recordlet">'let' expressions</a>
</div>
</h4>
<div class="doc_text">
@ -519,9 +519,9 @@ because the <tt>D</tt> class overrode its value.</p>
</div>
<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
<h4>
<a name="templateargs">Class template arguments</a>
</div>
</h4>
<div class="doc_text">
@ -610,9 +610,9 @@ X86 backend.</p>
</div>
<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
<h4>
<a name="multiclass">Multiclass definitions and instances</a>
</div>
</h4>
<div class="doc_text">
@ -773,14 +773,14 @@ before them.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="filescope">File scope entities</a>
</div>
</h3>
<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
<h4>
<a name="include">File inclusion</a>
</div>
</h4>
<div class="doc_text">
<p>TableGen supports the '<tt>include</tt>' token, which textually substitutes
@ -797,9 +797,9 @@ keyword. Example:</p>
</div>
<!-- -------------------------------------------------------------------------->
<div class="doc_subsubsection">
<h4>
<a name="globallet">'let' expressions</a>
</div>
</h4>
<div class="doc_text">
@ -865,7 +865,7 @@ several levels of multiclass instanciations. This also avoids the need of using
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="codegen">Code Generator backend info</a></div>
<h2><a name="codegen">Code Generator backend info</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -882,7 +882,7 @@ patterns:</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="backends">TableGen backends</a></div>
<h2><a name="backends">TableGen backends</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -7,9 +7,9 @@
</head>
<body>
<div class="doc_title">
<h1>
LLVM Testing Infrastructure Guide
</div>
</h1>
<ol>
<li><a href="#overview">Overview</a></li>
@ -52,7 +52,7 @@
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="overview">Overview</a></div>
<h2><a name="overview">Overview</a></h2>
<!--=========================================================================-->
<div class="doc_text">
@ -64,7 +64,7 @@ use it, and how to add and run tests.</p>
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="requirements">Requirements</a></div>
<h2><a name="requirements">Requirements</a></h2>
<!--=========================================================================-->
<div class="doc_text">
@ -76,7 +76,7 @@ as <a href="http://python.org">Python</a> 2.4 or later.</p>
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="org">LLVM testing infrastructure organization</a></div>
<h2><a name="org">LLVM testing infrastructure organization</a></h2>
<!--=========================================================================-->
<div class="doc_text">
@ -92,7 +92,7 @@ in subversion.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="regressiontests">Regression tests</a></div>
<h3><a name="regressiontests">Regression tests</a></h3>
<!-- _______________________________________________________________________ -->
<div class="doc_text">
@ -119,7 +119,7 @@ application or benchmark.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="testsuite">Test suite</a></div>
<h3><a name="testsuite">Test suite</a></h3>
<!-- _______________________________________________________________________ -->
<div class="doc_text">
@ -144,8 +144,7 @@ generates code.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="debuginfotests">Debugging Information
tests</a></div>
<h3><a name="debuginfotests">Debugging Information tests</a></h3>
<!-- _______________________________________________________________________ -->
<div class="doc_text">
@ -161,7 +160,7 @@ test suite for more information . This test suite is located in the
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="quick">Quick start</a></div>
<h2><a name="quick">Quick start</a></h2>
<!--=========================================================================-->
<div class="doc_text">
@ -179,7 +178,7 @@ the <tt>test-suite</tt> directory will be automatically configured.
Alternatively, you can configure the <tt>test-suite</tt> module manually.</p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="quickregressiontests">Regression tests</a></div>
<h3><a name="quickregressiontests">Regression tests</a></h3>
<!-- _______________________________________________________________________ -->
<p>To run all of the LLVM regression tests, use master Makefile in
the <tt>llvm/test</tt> directory:</p>
@ -240,7 +239,7 @@ script which is built as part of LLVM. For example, to run the
'lit' man page.</p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="quicktestsuite">Test suite</a></div>
<h3><a name="quicktestsuite">Test suite</a></h3>
<!-- _______________________________________________________________________ -->
<p>To run the comprehensive test suite (tests that compile and execute whole
@ -292,8 +291,7 @@ that subdirectory.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="quickdebuginfotests">Debugging Information
tests</a></div>
<h3><a name="quickdebuginfotests">Debugging Information tests</a></h3>
<!-- _______________________________________________________________________ -->
<div class="doc_text">
@ -312,7 +310,7 @@ clang/test directory. </p>
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="rtstructure">Regression test structure</a></div>
<h2><a name="rtstructure">Regression test structure</a></h2>
<!--=========================================================================-->
<div class="doc_text">
<p>The LLVM regression tests are driven by 'lit' and are located in
@ -339,7 +337,7 @@ clang/test directory. </p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="rtcustom">Writing new regression tests</a></div>
<h3><a name="rtcustom">Writing new regression tests</a></h3>
<!-- _______________________________________________________________________ -->
<div class="doc_text">
<p>The regression test structure is very simple, but does require some
@ -493,7 +491,7 @@ negatives).</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="FileCheck">The FileCheck utility</a></div>
<h3><a name="FileCheck">The FileCheck utility</a></h3>
<!-- _______________________________________________________________________ -->
<div class="doc_text">
@ -565,8 +563,9 @@ file.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a
name="FileCheck-check-prefix">The FileCheck -check-prefix option</a></div>
<h4>
<a name="FileCheck-check-prefix">The FileCheck -check-prefix option</a>
</h4>
<div class="doc_text">
@ -599,8 +598,9 @@ both 32-bit and 64-bit code generation.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a
name="FileCheck-CHECK-NEXT">The "CHECK-NEXT:" directive</a></div>
<h4>
<a name="FileCheck-CHECK-NEXT">The "CHECK-NEXT:" directive</a>
</h4>
<div class="doc_text">
@ -639,8 +639,9 @@ directive in a file.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a
name="FileCheck-CHECK-NOT">The "CHECK-NOT:" directive</a></div>
<h4>
<a name="FileCheck-CHECK-NOT">The "CHECK-NOT:" directive</a>
</h4>
<div class="doc_text">
@ -669,8 +670,9 @@ define i8 @coerce_offset0(i32 %V, i32* %P) {
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a
name="FileCheck-Matching">FileCheck Pattern Matching Syntax</a></div>
<h4>
<a name="FileCheck-Matching">FileCheck Pattern Matching Syntax</a>
</h4>
<div class="doc_text">
@ -701,8 +703,9 @@ braces explicitly from the input, you can use something ugly like
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection"><a
name="FileCheck-Variables">FileCheck Variables</a></div>
<h4>
<a name="FileCheck-Variables">FileCheck Variables</a>
</h4>
<div class="doc_text">
@ -740,8 +743,7 @@ define two separate CHECK lines that match on the same line.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="rtvars">Variables and
substitutions</a></div>
<h3><a name="rtvars">Variables and substitutions</a></h3>
<!-- _______________________________________________________________________ -->
<div class="doc_text">
<p>With a RUN line there are a number of substitutions that are permitted. In
@ -836,7 +838,7 @@ substitutions</a></div>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection"><a name="rtfeatures">Other Features</a></div>
<h3><a name="rtfeatures">Other Features</a></h3>
<!-- _______________________________________________________________________ -->
<div class="doc_text">
<p>To make RUN line writing easier, there are several shell scripts located
@ -894,8 +896,7 @@ substitutions</a></div>
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="testsuitestructure">Test suite
Structure</a></div>
<h2><a name="testsuitestructure">Test suite Structure</a></h2>
<!--=========================================================================-->
<div class="doc_text">
@ -963,7 +964,7 @@ will help you separate benign warnings from actual test failures.</p>
</div>
<!--=========================================================================-->
<div class="doc_section"><a name="testsuiterun">Running the test suite</a></div>
<h2><a name="testsuiterun">Running the test suite</a></h2>
<!--=========================================================================-->
<div class="doc_text">
@ -1024,8 +1025,9 @@ the test code or configure script changes).</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection">
<a name="testsuiteexternal">Configuring External Tests</a></div>
<h3>
<a name="testsuiteexternal">Configuring External Tests</a>
</h3>
<!-- _______________________________________________________________________ -->
<div class="doc_text">
@ -1056,8 +1058,9 @@ the test code or configure script changes).</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection">
<a name="testsuitetests">Running different tests</a></div>
<h3>
<a name="testsuitetests">Running different tests</a>
</h3>
<!-- _______________________________________________________________________ -->
<div class="doc_text">
<p>In addition to the regular "whole program" tests, the <tt>test-suite</tt>
@ -1079,8 +1082,9 @@ LLVM.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection">
<a name="testsuiteoutput">Generating test output</a></div>
<h3>
<a name="testsuiteoutput">Generating test output</a>
</h3>
<!-- _______________________________________________________________________ -->
<div class="doc_text">
<p>There are a number of ways to run the tests and generate output. The most
@ -1110,8 +1114,9 @@ LLVM.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection">
<a name="testsuitecustom">Writing custom tests for the test suite</a></div>
<h3>
<a name="testsuitecustom">Writing custom tests for the test suite</a>
</h3>
<!-- _______________________________________________________________________ -->
<div class="doc_text">

View File

@ -5,7 +5,7 @@
<link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>
<div class="doc_title">Using The LLVM Libraries</div>
<h1>Using The LLVM Libraries</h1>
<ol>
<li><a href="#abstract">Abstract</a></li>
<li><a href="#introduction">Introduction</a></li>
@ -30,7 +30,7 @@
guide</a>.</p>
<!-- ======================================================================= -->
<div class="doc_section"><a name="abstract">Abstract</a></div>
<h2><a name="abstract">Abstract</a></h2>
<div class="doc_text">
<p>Amongst other things, LLVM is a toolkit for building compilers, linkers,
runtime executives, virtual machines, and other program execution related
@ -45,7 +45,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_section"> <a name="introduction">Introduction</a></div>
<h2><a name="introduction">Introduction</a></h2>
<div class="doc_text">
<p>If you're writing a compiler, virtual machine, or any other utility based
on LLVM, you'll need to figure out which of the many libraries files you will
@ -74,7 +74,7 @@
correct for your tool can sometimes be challenging.
</div>
<!-- ======================================================================= -->
<div class="doc_section"><a name="descriptions"></a>Library Descriptions</div>
<h2><a name="descriptions">Library Descriptions</a></h2>
<div class="doc_text">
<p>The table below categorizes each library
<table style="text-align:left">
@ -152,7 +152,7 @@
</div>
<!-- ======================================================================= -->
<div class="doc_section"><a name="dependencies"></a>Using llvm-config</div>
<h2><a name="dependencies">Using llvm-config</a></h2>
<div class="doc_text">
<p>The <tt>llvm-config</tt> tool is a perl script that produces on its output
various kinds of information. For example, the source or object directories
@ -401,14 +401,15 @@
</div>
<!-- ======================================================================= -->
<div class="doc_section"><a name="rot">Linkage Rules Of Thumb</a></div>
<h2><a name="rot">Linkage Rules Of Thumb</a></h2>
<div class="doc_text">
<p>This section contains various "rules of thumb" about what files you
should link into your programs.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="always">Always Link LLVMCore, LLVMSupport,
and LLVMSystem</a></div>
<h3>
<a name="always">Always Link LLVMCore, LLVMSupport, and LLVMSystem</a>
</h3>
<div class="doc_text">
<p>No matter what you do with LLVM, the last three entries in the value of
your LLVMLIBS make variable should always be:
@ -416,8 +417,9 @@
programs that don't depend on these three.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection"><a name="onlyone">Never link both archive and
re-linked library</a></div>
<h3>
<a name="onlyone">Never link both archive and re-linked library</a>
</h3>
<div class="doc_text">
<p>There is never any point to linking both the re-linked (<tt>.o</tt>) and
the archive (<tt>.a</tt>) versions of a library. Since the re-linked version

View File

@ -9,9 +9,9 @@
<body>
<div class="doc_title">
<h1>
Writing an LLVM Compiler Backend
</div>
</h1>
<ol>
<li><a href="#intro">Introduction</a>
@ -61,9 +61,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="intro">Introduction</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -93,9 +93,9 @@ conventions.
</div>
<div class="doc_subsection">
<h3>
<a name="Audience">Audience</a>
</div>
</h3>
<div class="doc_text">
@ -106,9 +106,9 @@ generate code for a specific hardware or software target.
</div>
<div class="doc_subsection">
<h3>
<a name="Prerequisite">Prerequisite Reading</a>
</div>
</h3>
<div class="doc_text">
@ -155,9 +155,9 @@ machine dependent features.
</div>
<div class="doc_subsection">
<h3>
<a name="Basic">Basic Steps</a>
</div>
</h3>
<div class="doc_text">
@ -220,9 +220,9 @@ that the class will need and which components will need to be subclassed.
</div>
<div class="doc_subsection">
<h3>
<a name="Preliminaries">Preliminaries</a>
</div>
</h3>
<div class="doc_text">
@ -282,9 +282,9 @@ regenerate configure by running <tt>./autoconf/AutoRegen.sh</tt>.
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="TargetMachine">Target Machine</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -424,9 +424,9 @@ SparcTargetMachine::SparcTargetMachine(const Module &amp;M, const std::string &a
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="TargetRegistration">Target Registration</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -480,9 +480,9 @@ For more information, see
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="RegisterSet">Register Set and Register Classes</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -517,9 +517,9 @@ implementation of <tt>XXXRegisterInfo</tt> requires hand-coding.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="RegisterDef">Defining a Register</a>
</div>
</h3>
<div class="doc_text">
@ -700,9 +700,9 @@ fields of a register's TargetRegisterDesc.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="RegisterClassDef">Defining a Register Class</a>
</div>
</h3>
<div class="doc_text">
@ -894,10 +894,10 @@ namespace SP { // Register class instances
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="implementRegister">Implement a subclass of</a>
<a href="CodeGenerator.html#targetregisterinfo">TargetRegisterInfo</a>
</div>
</h3>
<div class="doc_text">
@ -934,9 +934,9 @@ implementation in <tt>SparcRegisterInfo.cpp</tt>:
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="InstructionSet">Instruction Set</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1191,9 +1191,9 @@ correspond to the values in <tt>SparcInstrInfo.td</tt>. I.e.,
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="operandMapping">Instruction Operand Mapping</a>
</div>
</h3>
<div class="doc_text">
@ -1283,10 +1283,10 @@ the <tt>rd</tt>, <tt>rs1</tt>, and <tt>rs2</tt> fields respectively.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="implementInstr">Implement a subclass of </a>
<a href="CodeGenerator.html#targetinstrinfo">TargetInstrInfo</a>
</div>
</h3>
<div class="doc_text">
@ -1327,9 +1327,9 @@ implementation in <tt>SparcInstrInfo.cpp</tt>:
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="branchFolding">Branch Folding and If Conversion</a>
</div>
</h3>
<div class="doc_text">
<p>
@ -1486,9 +1486,9 @@ branch.
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="InstructionSelector">Instruction Selector</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1645,9 +1645,9 @@ SDNode *Select_ISD_STORE(const SDValue &amp;N) {
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="LegalizePhase">The SelectionDAG Legalize Phase</a>
</div>
</h3>
<div class="doc_text">
@ -1719,9 +1719,9 @@ contains examples of all four <tt>LegalAction</tt> values.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="promote">Promote</a>
</div>
</h4>
<div class="doc_text">
@ -1742,9 +1742,9 @@ setLoadExtAction(ISD::SEXTLOAD, MVT::i1, Promote);
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="expand">Expand</a>
</div>
</h4>
<div class="doc_text">
@ -1767,9 +1767,9 @@ setOperationAction(ISD::FCOS, MVT::f32, Expand);
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="custom">Custom</a>
</div>
</h4>
<div class="doc_text">
@ -1833,9 +1833,9 @@ static SDValue LowerFP_TO_SINT(SDValue Op, SelectionDAG &amp;DAG) {
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="legal">Legal</a>
</div>
</h4>
<div class="doc_text">
@ -1866,9 +1866,9 @@ if (TM.getSubtarget&lt;SparcSubtarget&gt;().isV9())
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="callingConventions">Calling Conventions</a>
</div>
</h3>
<div class="doc_text">
@ -2016,9 +2016,9 @@ def RetCC_X86_32 : CallingConv&lt;[
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="assemblyPrinter">Assembly Printer</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -2171,9 +2171,9 @@ output.
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="subtargetSupport">Subtarget Support</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -2289,9 +2289,9 @@ XXXSubtarget::XXXSubtarget(const Module &amp;M, const std::string &amp;FS) {
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="jitSupport">JIT Support</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -2336,9 +2336,9 @@ that write data (in bytes, words, strings, etc.) to the output stream.
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="mce">Machine Code Emitter</a>
</div>
</h3>
<div class="doc_text">
@ -2478,9 +2478,9 @@ enum RelocationType {
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="targetJITInfo">Target JIT Info</a>
</div>
</h3>
<div class="doc_text">

View File

@ -8,9 +8,9 @@
</head>
<body>
<div class="doc_title">
<h1>
Writing an LLVM Pass
</div>
</h1>
<ol>
<li><a href="#introduction">Introduction - What is a pass?</a></li>
@ -121,9 +121,9 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="introduction">Introduction - What is a pass?</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -156,9 +156,9 @@ more advanced features are discussed.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="quickstart">Quick Start - Writing hello world</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -172,9 +172,9 @@ source tree in the <tt>lib/Transforms/Hello</tt> directory.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="makefile">Setting up the build environment</a>
</div>
</h3>
<div class="doc_text">
@ -220,9 +220,9 @@ the pass itself.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="basiccode">Basic code required</a>
</div>
</h3>
<div class="doc_text">
@ -356,9 +356,9 @@ them) to be useful.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="running">Running a pass with <tt>opt</tt></a>
</div>
</h3>
<div class="doc_text">
@ -447,9 +447,9 @@ about some more details of how they work and how to use them.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="passtype">Pass classes and requirements</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -470,9 +470,9 @@ slow.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ImmutablePass">The <tt>ImmutablePass</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -493,9 +493,9 @@ invalidated, and are never "run".</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="ModulePass">The <tt>ModulePass</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -522,9 +522,9 @@ following signature:</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="runOnModule">The <tt>runOnModule</tt> method</a>
</div>
</h4>
<div class="doc_text">
@ -539,9 +539,9 @@ false otherwise.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="CallGraphSCCPass">The <tt>CallGraphSCCPass</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -587,10 +587,11 @@ false if they didn't.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="doInitialization_scc">The <tt>doInitialization(CallGraph &amp;)</tt>
method</a>
</div>
<h4>
<a name="doInitialization_scc">
The <tt>doInitialization(CallGraph &amp;)</tt> method
</a>
</h4>
<div class="doc_text">
@ -609,9 +610,9 @@ fast).</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="runOnSCC">The <tt>runOnSCC</tt> method</a>
</div>
</h4>
<div class="doc_text">
@ -626,10 +627,11 @@ otherwise.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="doFinalization_scc">The <tt>doFinalization(CallGraph
&amp;)</tt> method</a>
</div>
<h4>
<a name="doFinalization_scc">
The <tt>doFinalization(CallGraph &amp;)</tt> method
</a>
</h4>
<div class="doc_text">
@ -645,9 +647,9 @@ program being compiled.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="FunctionPass">The <tt>FunctionPass</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -677,10 +679,11 @@ should return true if they modified the program, or false if they didn't.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="doInitialization_mod">The <tt>doInitialization(Module &amp;)</tt>
method</a>
</div>
<h4>
<a name="doInitialization_mod">
The <tt>doInitialization(Module &amp;)</tt> method
</a>
</h4>
<div class="doc_text">
@ -706,9 +709,9 @@ free functions that it needs, adding prototypes to the module if necessary.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="runOnFunction">The <tt>runOnFunction</tt> method</a>
</div>
</h4>
<div class="doc_text">
@ -723,10 +726,11 @@ be returned if the function is modified.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="doFinalization_mod">The <tt>doFinalization(Module
&amp;)</tt> method</a>
</div>
<h4>
<a name="doFinalization_mod">
The <tt>doFinalization(Module &amp;)</tt> method
</a>
</h4>
<div class="doc_text">
@ -742,9 +746,9 @@ program being compiled.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="LoopPass">The <tt>LoopPass</tt> class </a>
</div>
</h3>
<div class="doc_text">
@ -760,11 +764,11 @@ program, or false if they didn't. </p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="doInitialization_loop">The <tt>doInitialization(Loop *,
LPPassManager &amp;)</tt>
method</a>
</div>
<h4>
<a name="doInitialization_loop">
The <tt>doInitialization(Loop *,LPPassManager &amp;)</tt> method
</a>
</h4>
<div class="doc_text">
@ -783,9 +787,9 @@ information.</p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="runOnLoop">The <tt>runOnLoop</tt> method</a>
</div>
</h4>
<div class="doc_text">
@ -801,9 +805,9 @@ should be used to update loop nest.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="doFinalization_loop">The <tt>doFinalization()</tt> method</a>
</div>
</h4>
<div class="doc_text">
@ -819,9 +823,9 @@ program being compiled. </p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="RegionPass">The <tt>RegionPass</tt> class </a>
</div>
</h3>
<div class="doc_text">
@ -838,11 +842,11 @@ methods should return true if they modified the program, or false if they didn n
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="doInitialization_region">The <tt>doInitialization(Region *,
RGPassManager &amp;)</tt>
method</a>
</div>
<h4>
<a name="doInitialization_region">
The <tt>doInitialization(Region *, RGPassManager &amp;)</tt> method
</a>
</h4>
<div class="doc_text">
@ -861,9 +865,9 @@ information.</p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="runOnRegion">The <tt>runOnRegion</tt> method</a>
</div>
</h4>
<div class="doc_text">
@ -879,9 +883,9 @@ should be used to update region tree.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="doFinalization_region">The <tt>doFinalization()</tt> method</a>
</div>
</h4>
<div class="doc_text">
@ -899,9 +903,9 @@ program being compiled. </p>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="BasicBlockPass">The <tt>BasicBlockPass</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -928,10 +932,11 @@ href="#FunctionPass"><tt>FunctionPass</tt></a>'s have, but also have the followi
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="doInitialization_fn">The <tt>doInitialization(Function
&amp;)</tt> method</a>
</div>
<h4>
<a name="doInitialization_fn">
The <tt>doInitialization(Function &amp;)</tt> method
</a>
</h4>
<div class="doc_text">
@ -950,9 +955,9 @@ fast).</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="runOnBasicBlock">The <tt>runOnBasicBlock</tt> method</a>
</div>
</h4>
<div class="doc_text">
@ -968,10 +973,11 @@ if the basic block is modified.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="doFinalization_fn">The <tt>doFinalization(Function &amp;)</tt>
method</a>
</div>
<h4>
<a name="doFinalization_fn">
The <tt>doFinalization(Function &amp;)</tt> method
</a>
</h4>
<div class="doc_text">
@ -988,9 +994,9 @@ finalization.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<h3>
<a name="MachineFunctionPass">The <tt>MachineFunctionPass</tt> class</a>
</div>
</h3>
<div class="doc_text">
@ -1020,10 +1026,11 @@ data)</li>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="runOnMachineFunction">The <tt>runOnMachineFunction(MachineFunction
&amp;MF)</tt> method</a>
</div>
<h4>
<a name="runOnMachineFunction">
The <tt>runOnMachineFunction(MachineFunction &amp;MF)</tt> method
</a>
</h4>
<div class="doc_text">
@ -1047,9 +1054,9 @@ remember, you may not modify the LLVM <tt>Function</tt> or its contents from a
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="registration">Pass registration</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1072,9 +1079,9 @@ implement the virtual <tt>print</tt> method:</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="print">The <tt>print</tt> method</a>
</div>
</h4>
<div class="doc_text">
@ -1097,9 +1104,9 @@ depended on.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="interaction">Specifying interactions between passes</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1122,9 +1129,9 @@ having any prerequisite passes, and invalidating <b>all</b> other passes.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="getAnalysisUsage">The <tt>getAnalysisUsage</tt> method</a>
</div>
</h4>
<div class="doc_text">
@ -1142,9 +1149,12 @@ object:</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="AU::addRequired">The <tt>AnalysisUsage::addRequired&lt;&gt;</tt> and <tt>AnalysisUsage::addRequiredTransitive&lt;&gt;</tt> methods</a>
</div>
<h4>
<a name="AU::addRequired">
The <tt>AnalysisUsage::addRequired&lt;&gt;</tt>
and <tt>AnalysisUsage::addRequiredTransitive&lt;&gt;</tt> methods
</a>
</h4>
<div class="doc_text">
<p>
@ -1168,9 +1178,11 @@ pass is.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="AU::addPreserved">The <tt>AnalysisUsage::addPreserved&lt;&gt;</tt> method</a>
</div>
<h4>
<a name="AU::addPreserved">
The <tt>AnalysisUsage::addPreserved&lt;&gt;</tt> method
</a>
</h4>
<div class="doc_text">
<p>
@ -1203,9 +1215,11 @@ the fact that it hacks on the CFG.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="AU::examples">Example implementations of <tt>getAnalysisUsage</tt></a>
</div>
<h4>
<a name="AU::examples">
Example implementations of <tt>getAnalysisUsage</tt>
</a>
</h4>
<div class="doc_text">
@ -1220,10 +1234,12 @@ the fact that it hacks on the CFG.
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="getAnalysis">The <tt>getAnalysis&lt;&gt;</tt> and
<tt>getAnalysisIfAvailable&lt;&gt;</tt> methods</a>
</div>
<h4>
<a name="getAnalysis">
The <tt>getAnalysis&lt;&gt;</tt> and
<tt>getAnalysisIfAvailable&lt;&gt;</tt> methods
</a>
</h4>
<div class="doc_text">
@ -1278,9 +1294,9 @@ if it is active. For example:</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="analysisgroup">Implementing Analysis Groups</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1305,9 +1321,9 @@ Analysis Groups.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="agconcepts">Analysis Group Concepts</a>
</div>
</h4>
<div class="doc_text">
@ -1356,9 +1372,9 @@ hypothetical example) instead.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="registerag">Using <tt>RegisterAnalysisGroup</tt></a>
</div>
</h4>
<div class="doc_text">
@ -1418,9 +1434,9 @@ pass is the default implementation for the interface.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="passStatistics">Pass Statistics</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1435,9 +1451,9 @@ line. See the <a href="http://llvm.org/docs/ProgrammersManual.html#Statistic">St
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="passmanager">What PassManager does</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1610,9 +1626,9 @@ anymore, and therefore do not have to compute it twice.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="releaseMemory">The <tt>releaseMemory</tt> method</a>
</div>
</h4>
<div class="doc_text">
@ -1636,9 +1652,9 @@ class, before the next call of <tt>run*</tt> in your pass.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="registering">Registering dynamically loaded passes</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1671,9 +1687,9 @@ register on load and unregister at unload.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection">
<h3>
<a name="registering_existing">Using existing registries</a>
</div>
</h3>
<div class="doc_text">
@ -1736,9 +1752,9 @@ call line to <tt>llvm/Codegen/LinkAllCodegenComponents.h</tt>.</p>
<!-- _______________________________________________________________________ -->
<div class="doc_subsection">
<h3>
<a name="registering_new">Creating new registries</a>
</div>
</h3>
<div class="doc_text">
@ -1769,9 +1785,9 @@ creator.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="debughints">Using GDB with dynamically loaded passes</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1789,9 +1805,9 @@ on that.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="breakpoint">Setting a breakpoint in your pass</a>
</div>
</h4>
<div class="doc_text">
@ -1834,9 +1850,9 @@ or do other standard debugging stuff.</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="debugmisc">Miscellaneous Problems</a>
</div>
</h4>
<div class="doc_text">
@ -1867,9 +1883,9 @@ href="mailto:sabre@nondot.org">Chris</a>.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
<h2>
<a name="future">Future extensions planned</a>
</div>
</h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -1881,9 +1897,9 @@ where we are going:</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<h4>
<a name="SMP">Multithreaded LLVM</a>
</div>
</h4>
<div class="doc_text">

View File

@ -7,7 +7,7 @@
</head>
<body>
<div class="doc_title">Documentation for the LLVM System at SVN head</div>
<h1>Documentation for the LLVM System at SVN head</h1>
<p class="doc_warning">If you are using a released version of LLVM,
see <a href="http://llvm.org/releases/">the download page</a> to find
@ -39,7 +39,7 @@ your documentation.</p>
</div>
<!--=======================================================================-->
<div class="doc_section"><a name="llvmdesign">LLVM Design &amp; Overview</a></div>
<h2><a name="llvmdesign">LLVM Design &amp; Overview</a></h2>
<!--=======================================================================-->
<ul>
@ -57,7 +57,7 @@ frequent questions about LLVM's most frequently misunderstood instruction.</li>
</ul>
<!--=======================================================================-->
<div class="doc_section"><a name="userguide">LLVM User Guides</a></div>
<h2><a name="userguide">LLVM User Guides</a></h2>
<!--=======================================================================-->
<ul>
@ -131,7 +131,7 @@ href="irc://irc.oftc.net/llvm">join #llvm on irc.oftc.net</a> directly.</li>
<!--=======================================================================-->
<div class="doc_section"><a name="llvmprog">General LLVM Programming Documentation</a></div>
<h2><a name="llvmprog">General LLVM Programming Documentation</a></h2>
<!--=======================================================================-->
<ul>
@ -179,7 +179,7 @@ href="http://llvm.org/doxygen/inherits.html">classes</a>)
</ul>
<!--=======================================================================-->
<div class="doc_section"><a name="subsystems">LLVM Subsystem Documentation</a></div>
<h2><a name="subsystems">LLVM Subsystem Documentation</a></h2>
<!--=======================================================================-->
<ul>
@ -246,7 +246,7 @@ JITed code with GDB.</li>
<!--=======================================================================-->
<div class="doc_section"><a name="maillist">LLVM Mailing Lists</a></div>
<h2><a name="maillist">LLVM Mailing Lists</a></h2>
<!--=======================================================================-->
<ul>

View File

@ -11,7 +11,7 @@
<body>
<div class="doc_title">Kaleidoscope: Tutorial Introduction and the Lexer</div>
<h1>Kaleidoscope: Tutorial Introduction and the Lexer</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -30,7 +30,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Tutorial Introduction</a></div>
<h2><a name="intro">Tutorial Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -123,7 +123,7 @@ languages!</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="language">The Basic Language</a></div>
<h2><a name="language">The Basic Language</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -181,7 +181,7 @@ a Mandelbrot Set</a> at various levels of magnification.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="lexer">The Lexer</a></div>
<h2><a name="lexer">The Lexer</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -11,7 +11,7 @@
<body>
<div class="doc_title">Kaleidoscope: Implementing a Parser and AST</div>
<h1>Kaleidoscope: Implementing a Parser and AST</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -36,7 +36,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Chapter 2 Introduction</a></div>
<h2><a name="intro">Chapter 2 Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -61,7 +61,7 @@ Tree.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="ast">The Abstract Syntax Tree (AST)</a></div>
<h2><a name="ast">The Abstract Syntax Tree (AST)</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -178,7 +178,7 @@ bodies in Kaleidoscope.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="parserbasics">Parser Basics</a></div>
<h2><a name="parserbasics">Parser Basics</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -239,8 +239,7 @@ piece of our grammar: numeric literals.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="parserprimexprs">Basic Expression
Parsing</a></div>
<h2><a name="parserprimexprs">Basic Expression Parsing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -394,8 +393,7 @@ They are a bit more complex.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="parserbinops">Binary Expression
Parsing</a></div>
<h2><a name="parserbinops">Binary Expression Parsing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -617,7 +615,7 @@ handle function definitions, etc.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="parsertop">Parsing the Rest</a></div>
<h2><a name="parsertop">Parsing the Rest</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -714,7 +712,7 @@ actually <em>execute</em> this code we've built!</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="driver">The Driver</a></div>
<h2><a name="driver">The Driver</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -753,7 +751,7 @@ type "4+5;", and the parser will know you are done.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="conclusions">Conclusions</a></div>
<h2><a name="conclusions">Conclusions</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -790,7 +788,7 @@ Representation (IR) from the AST.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="code">Full Code Listing</a></div>
<h2><a name="code">Full Code Listing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -11,7 +11,7 @@
<body>
<div class="doc_title">Kaleidoscope: Code generation to LLVM IR</div>
<h1>Kaleidoscope: Code generation to LLVM IR</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -34,7 +34,7 @@ Support</li>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Chapter 3 Introduction</a></div>
<h2><a name="intro">Chapter 3 Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -57,7 +57,7 @@ releases page</a>.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="basics">Code Generation Setup</a></div>
<h2><a name="basics">Code Generation Setup</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -147,7 +147,7 @@ has already been done, and we'll just use it to emit code.
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="exprs">Expression Code Generation</a></div>
<h2><a name="exprs">Expression Code Generation</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -293,7 +293,7 @@ basic framework.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="funcs">Function Code Generation</a></div>
<h2><a name="funcs">Function Code Generation</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -515,8 +515,7 @@ def bar() foo(1, 2); # error, unknown function "foo"
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="driver">Driver Changes and
Closing Thoughts</a></div>
<h2><a name="driver">Driver Changes and Closing Thoughts</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -657,7 +656,7 @@ support</a> to this so we can actually start running code!</p>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="code">Full Code Listing</a></div>
<h2><a name="code">Full Code Listing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -11,7 +11,7 @@
<body>
<div class="doc_title">Kaleidoscope: Adding JIT and Optimizer Support</div>
<h1>Kaleidoscope: Adding JIT and Optimizer Support</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -33,7 +33,7 @@ Flow</li>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Chapter 4 Introduction</a></div>
<h2><a name="intro">Chapter 4 Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -48,8 +48,7 @@ for the Kaleidoscope language.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="trivialconstfold">Trivial Constant
Folding</a></div>
<h2><a name="trivialconstfold">Trivial Constant Folding</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -134,8 +133,7 @@ range of optimizations that you can use, in the form of "passes".</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="optimizerpasses">LLVM Optimization
Passes</a></div>
<h2><a name="optimizerpasses">LLVM Optimization Passes</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -266,7 +264,7 @@ executing it!</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="jit">Adding a JIT Compiler</a></div>
<h2><a name="jit">Adding a JIT Compiler</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -474,7 +472,7 @@ tackling some interesting LLVM IR issues along the way.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="code">Full Code Listing</a></div>
<h2><a name="code">Full Code Listing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -11,7 +11,7 @@
<body>
<div class="doc_title">Kaleidoscope: Extending the Language: Control Flow</div>
<h1>Kaleidoscope: Extending the Language: Control Flow</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -48,7 +48,7 @@ User-defined Operators</li>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Chapter 5 Introduction</a></div>
<h2><a name="intro">Chapter 5 Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -65,7 +65,7 @@ have an if/then/else expression plus a simple 'for' loop.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="ifthen">If/Then/Else</a></div>
<h2><a name="ifthen">If/Then/Else</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -111,8 +111,7 @@ pieces.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="iflexer">Lexer Extensions for
If/Then/Else</a></div>
<h4><a name="iflexer">Lexer Extensions for If/Then/Else</a></h4>
<!-- ======================================================================= -->
@ -146,8 +145,7 @@ stuff:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="ifast">AST Extensions for
If/Then/Else</a></div>
<h4><a name="ifast">AST Extensions for If/Then/Else</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -172,8 +170,7 @@ public:
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="ifparser">Parser Extensions for
If/Then/Else</a></div>
<h4><a name="ifparser">Parser Extensions for If/Then/Else</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -231,7 +228,7 @@ static ExprAST *ParsePrimary() {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="ifir">LLVM IR for If/Then/Else</a></div>
<h4><a name="ifir">LLVM IR for If/Then/Else</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -347,8 +344,7 @@ directly.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="ifcodegen">Code Generation for
If/Then/Else</a></div>
<h4><a name="ifcodegen">Code Generation for If/Then/Else</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -501,7 +497,7 @@ another useful expression that is familiar from non-functional languages...</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="for">'for' Loop Expression</a></div>
<h2><a name="for">'for' Loop Expression</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -536,8 +532,7 @@ support this.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="forlexer">Lexer Extensions for
the 'for' Loop</a></div>
<h4><a name="forlexer">Lexer Extensions for the 'for' Loop</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -566,8 +561,7 @@ the 'for' Loop</a></div>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="forast">AST Extensions for
the 'for' Loop</a></div>
<h4><a name="forast">AST Extensions for the 'for' Loop</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -593,8 +587,7 @@ public:
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="forparser">Parser Extensions for
the 'for' Loop</a></div>
<h4><a name="forparser">Parser Extensions for the 'for' Loop</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -653,8 +646,7 @@ static ExprAST *ParseForExpr() {
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="forir">LLVM IR for
the 'for' Loop</a></div>
<h4><a name="forir">LLVM IR for the 'for' Loop</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -699,8 +691,7 @@ expressions, and some basic blocks. Lets see how this fits together.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="forcodegen">Code Generation for
the 'for' Loop</a></div>
<h4><a name="forcodegen">Code Generation for the 'for' Loop</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -877,7 +868,7 @@ language.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="code">Full Code Listing</a></div>
<h2><a name="code">Full Code Listing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -11,7 +11,7 @@
<body>
<div class="doc_title">Kaleidoscope: Extending the Language: User-defined Operators</div>
<h1>Kaleidoscope: Extending the Language: User-defined Operators</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -34,7 +34,7 @@ Variables / SSA Construction</li>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Chapter 6 Introduction</a></div>
<h2><a name="intro">Chapter 6 Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -60,7 +60,7 @@ an example of what you can build with Kaleidoscope and its feature set.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="idea">User-defined Operators: the Idea</a></div>
<h2><a name="idea">User-defined Operators: the Idea</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -125,7 +125,7 @@ operators.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="binary">User-defined Binary Operators</a></div>
<h2><a name="binary">User-defined Binary Operators</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -342,7 +342,7 @@ see what it takes.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="unary">User-defined Unary Operators</a></div>
<h2><a name="unary">User-defined Unary Operators</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -491,7 +491,7 @@ is simpler primarily because it doesn't need to handle any predefined operators.
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="example">Kicking the Tires</a></div>
<h2><a name="example">Kicking the Tires</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -796,7 +796,7 @@ add variable mutation without building SSA in your front-end.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="code">Full Code Listing</a></div>
<h2><a name="code">Full Code Listing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -12,7 +12,7 @@
<body>
<div class="doc_title">Kaleidoscope: Extending the Language: Mutable Variables</div>
<h1>Kaleidoscope: Extending the Language: Mutable Variables</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -38,7 +38,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Chapter 7 Introduction</a></div>
<h2><a name="intro">Chapter 7 Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -66,7 +66,7 @@ support for this, though the way it works is a bit unexpected for some.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="why">Why is this a hard problem?</a></div>
<h2><a name="why">Why is this a hard problem?</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -140,7 +140,7 @@ logic.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="memory">Memory in LLVM</a></div>
<h2><a name="memory">Memory in LLVM</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -321,8 +321,7 @@ variables now!
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="kalvars">Mutable Variables in
Kaleidoscope</a></div>
<h2><a name="kalvars">Mutable Variables in Kaleidoscope</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -378,8 +377,7 @@ Kaleidoscope to support new variable definitions.
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="adjustments">Adjusting Existing Variables for
Mutation</a></div>
<h2><a name="adjustments">Adjusting Existing Variables for Mutation</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -648,7 +646,7 @@ we'll add the assignment operator.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="assignment">New Assignment Operator</a></div>
<h2><a name="assignment">New Assignment Operator</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -745,8 +743,7 @@ add this next!
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="localvars">User-defined Local
Variables</a></div>
<h2><a name="localvars">User-defined Local Variables</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -979,7 +976,7 @@ anywhere in sight.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="code">Full Code Listing</a></div>
<h2><a name="code">Full Code Listing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -11,8 +11,7 @@
<body>
<div class="doc_title">Kaleidoscope: Conclusion and other useful LLVM
tidbits</div>
<h1>Kaleidoscope: Conclusion and other useful LLVM tidbits</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -43,7 +42,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="conclusion">Tutorial Conclusion</a></div>
<h2><a name="conclusion">Tutorial Conclusion</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -154,8 +153,7 @@ are very useful if you want to take advantage of LLVM's capabilities.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="llvmirproperties">Properties of the LLVM
IR</a></div>
<h2><a name="llvmirproperties">Properties of the LLVM IR</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -166,8 +164,7 @@ get these out of the way right now, shall we?</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="targetindep">Target
Independence</a></div>
<h4><a name="targetindep">Target Independence</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -221,7 +218,7 @@ in-kernel language.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="safety">Safety Guarantees</a></div>
<h4><a name="safety">Safety Guarantees</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -243,8 +240,7 @@ list</a> if you are interested in more details.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="langspecific">Language-Specific
Optimizations</a></div>
<h4><a name="langspecific">Language-Specific Optimizations</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -298,7 +294,7 @@ language-specific AST.
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="tipsandtricks">Tips and Tricks</a></div>
<h2><a name="tipsandtricks">Tips and Tricks</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -310,8 +306,7 @@ everyone rediscover them, this section talks about some of these issues.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="offsetofsizeof">Implementing portable
offsetof/sizeof</a></div>
<h4><a name="offsetofsizeof">Implementing portable offsetof/sizeof</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -331,8 +326,7 @@ in a portable way.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="gcstack">Garbage Collected
Stack Frames</a></div>
<h4><a name="gcstack">Garbage Collected Stack Frames</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">

View File

@ -12,7 +12,7 @@
<body>
<div class="doc_title">Kaleidoscope: Tutorial Introduction and the Lexer</div>
<h1>Kaleidoscope: Tutorial Introduction and the Lexer</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -35,7 +35,7 @@ AST</li>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Tutorial Introduction</a></div>
<h2><a name="intro">Tutorial Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -130,7 +130,7 @@ languages!</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="language">The Basic Language</a></div>
<h2><a name="language">The Basic Language</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -188,7 +188,7 @@ a Mandelbrot Set</a> at various levels of magnification.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="lexer">The Lexer</a></div>
<h2><a name="lexer">The Lexer</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -12,7 +12,7 @@
<body>
<div class="doc_title">Kaleidoscope: Implementing a Parser and AST</div>
<h1>Kaleidoscope: Implementing a Parser and AST</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -40,7 +40,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Chapter 2 Introduction</a></div>
<h2><a name="intro">Chapter 2 Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -65,7 +65,7 @@ Tree.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="ast">The Abstract Syntax Tree (AST)</a></div>
<h2><a name="ast">The Abstract Syntax Tree (AST)</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -146,7 +146,7 @@ bodies in Kaleidoscope.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="parserbasics">Parser Basics</a></div>
<h2><a name="parserbasics">Parser Basics</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -181,8 +181,7 @@ piece of our grammar: numeric literals.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="parserprimexprs">Basic Expression
Parsing</a></div>
<h2><a name="parserprimexprs">Basic Expression Parsing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -303,8 +302,7 @@ They are a bit more complex.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="parserbinops">Binary Expression
Parsing</a></div>
<h2><a name="parserbinops">Binary Expression Parsing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -517,7 +515,7 @@ handle function definitions, etc.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="parsertop">Parsing the Rest</a></div>
<h2><a name="parsertop">Parsing the Rest</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -596,7 +594,7 @@ actually <em>execute</em> this code we've built!</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="driver">The Driver</a></div>
<h2><a name="driver">The Driver</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -652,7 +650,7 @@ type "4+5;", and the parser will know you are done.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="conclusions">Conclusions</a></div>
<h2><a name="conclusions">Conclusions</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -689,7 +687,7 @@ Representation (IR) from the AST.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="code">Full Code Listing</a></div>
<h2><a name="code">Full Code Listing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -12,7 +12,7 @@
<body>
<div class="doc_title">Kaleidoscope: Code generation to LLVM IR</div>
<h1>Kaleidoscope: Code generation to LLVM IR</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -38,7 +38,7 @@ Support</li>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Chapter 3 Introduction</a></div>
<h2><a name="intro">Chapter 3 Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -57,7 +57,7 @@ LLVM SVN to work. LLVM 2.2 and before will not work with it.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="basics">Code Generation Setup</a></div>
<h2><a name="basics">Code Generation Setup</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -128,7 +128,7 @@ that this has already been done, and we'll just use it to emit code.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="exprs">Expression Code Generation</a></div>
<h2><a name="exprs">Expression Code Generation</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -263,7 +263,7 @@ basic framework.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="funcs">Function Code Generation</a></div>
<h2><a name="funcs">Function Code Generation</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -466,8 +466,7 @@ def bar() foo(1, 2); # error, unknown function "foo"
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="driver">Driver Changes and
Closing Thoughts</a></div>
<h2><a name="driver">Driver Changes and Closing Thoughts</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -607,7 +606,7 @@ support</a> to this so we can actually start running code!</p>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="code">Full Code Listing</a></div>
<h2><a name="code">Full Code Listing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -12,7 +12,7 @@
<body>
<div class="doc_title">Kaleidoscope: Adding JIT and Optimizer Support</div>
<h1>Kaleidoscope: Adding JIT and Optimizer Support</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -37,7 +37,7 @@ Flow</li>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Chapter 4 Introduction</a></div>
<h2><a name="intro">Chapter 4 Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -52,8 +52,7 @@ for the Kaleidoscope language.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="trivialconstfold">Trivial Constant
Folding</a></div>
<h2><a name="trivialconstfold">Trivial Constant Folding</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -148,8 +147,7 @@ range of optimizations that you can use, in the form of "passes".</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="optimizerpasses">LLVM Optimization
Passes</a></div>
<h2><a name="optimizerpasses">LLVM Optimization Passes</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -283,7 +281,7 @@ executing it!</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="jit">Adding a JIT Compiler</a></div>
<h2><a name="jit">Adding a JIT Compiler</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -486,7 +484,7 @@ constructs</a>, tackling some interesting LLVM IR issues along the way.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="code">Full Code Listing</a></div>
<h2><a name="code">Full Code Listing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -12,7 +12,7 @@
<body>
<div class="doc_title">Kaleidoscope: Extending the Language: Control Flow</div>
<h1>Kaleidoscope: Extending the Language: Control Flow</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -52,7 +52,7 @@ User-defined Operators</li>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Chapter 5 Introduction</a></div>
<h2><a name="intro">Chapter 5 Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -69,7 +69,7 @@ have an if/then/else expression plus a simple 'for' loop.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="ifthen">If/Then/Else</a></div>
<h2><a name="ifthen">If/Then/Else</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -115,8 +115,7 @@ pieces.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="iflexer">Lexer Extensions for
If/Then/Else</a></div>
<h4><a name="iflexer">Lexer Extensions for If/Then/Else</a></h4>
<!-- ======================================================================= -->
@ -153,8 +152,7 @@ stuff:</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="ifast">AST Extensions for
If/Then/Else</a></div>
<h4><a name="ifast">AST Extensions for If/Then/Else</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -175,8 +173,7 @@ type expr =
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="ifparser">Parser Extensions for
If/Then/Else</a></div>
<h4><a name="ifparser">Parser Extensions for If/Then/Else</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -214,7 +211,7 @@ let rec parse_primary = parser
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="ifir">LLVM IR for If/Then/Else</a></div>
<h4><a name="ifir">LLVM IR for If/Then/Else</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -331,8 +328,7 @@ directly.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="ifcodegen">Code Generation for
If/Then/Else</a></div>
<h4><a name="ifcodegen">Code Generation for If/Then/Else</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -493,7 +489,7 @@ another useful expression that is familiar from non-functional languages...</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="for">'for' Loop Expression</a></div>
<h2><a name="for">'for' Loop Expression</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -528,8 +524,7 @@ support this.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="forlexer">Lexer Extensions for
the 'for' Loop</a></div>
<h4><a name="forlexer">Lexer Extensions for the 'for' Loop</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -559,8 +554,7 @@ the 'for' Loop</a></div>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="forast">AST Extensions for
the 'for' Loop</a></div>
<h4><a name="forast">AST Extensions for the 'for' Loop</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -580,8 +574,7 @@ type expr =
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="forparser">Parser Extensions for
the 'for' Loop</a></div>
<h4><a name="forparser">Parser Extensions for the 'for' Loop</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -628,8 +621,7 @@ let rec parse_primary = parser
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="forir">LLVM IR for
the 'for' Loop</a></div>
<h4><a name="forir">LLVM IR for the 'for' Loop</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -674,8 +666,7 @@ expressions, and some basic blocks. Lets see how this fits together.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="forcodegen">Code Generation for
the 'for' Loop</a></div>
<h4><a name="forcodegen">Code Generation for the 'for' Loop</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -852,7 +843,7 @@ to our poor innocent language.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="code">Full Code Listing</a></div>
<h2><a name="code">Full Code Listing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -12,7 +12,7 @@
<body>
<div class="doc_title">Kaleidoscope: Extending the Language: User-defined Operators</div>
<h1>Kaleidoscope: Extending the Language: User-defined Operators</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -38,7 +38,7 @@ Variables / SSA Construction</li>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Chapter 6 Introduction</a></div>
<h2><a name="intro">Chapter 6 Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -64,7 +64,7 @@ an example of what you can build with Kaleidoscope and its feature set.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="idea">User-defined Operators: the Idea</a></div>
<h2><a name="idea">User-defined Operators: the Idea</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -129,7 +129,7 @@ operators.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="binary">User-defined Binary Operators</a></div>
<h2><a name="binary">User-defined Binary Operators</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -320,7 +320,7 @@ see what it takes.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="unary">User-defined Unary Operators</a></div>
<h2><a name="unary">User-defined Unary Operators</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -472,7 +472,7 @@ is simpler primarily because it doesn't need to handle any predefined operators.
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="example">Kicking the Tires</a></div>
<h2><a name="example">Kicking the Tires</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -778,7 +778,7 @@ add variable mutation without building SSA in your front-end.</p>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="code">Full Code Listing</a></div>
<h2><a name="code">Full Code Listing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -13,7 +13,7 @@
<body>
<div class="doc_title">Kaleidoscope: Extending the Language: Mutable Variables</div>
<h1>Kaleidoscope: Extending the Language: Mutable Variables</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -42,7 +42,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="intro">Chapter 7 Introduction</a></div>
<h2><a name="intro">Chapter 7 Introduction</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -70,7 +70,7 @@ support for this, though the way it works is a bit unexpected for some.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="why">Why is this a hard problem?</a></div>
<h2><a name="why">Why is this a hard problem?</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -144,7 +144,7 @@ logic.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="memory">Memory in LLVM</a></div>
<h2><a name="memory">Memory in LLVM</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -325,8 +325,7 @@ variables now!
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="kalvars">Mutable Variables in
Kaleidoscope</a></div>
<h2><a name="kalvars">Mutable Variables in Kaleidoscope</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -382,8 +381,7 @@ Kaleidoscope to support new variable definitions.
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="adjustments">Adjusting Existing Variables for
Mutation</a></div>
<h2><a name="adjustments">Adjusting Existing Variables for Mutation</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -672,7 +670,7 @@ we'll add the assignment operator.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="assignment">New Assignment Operator</a></div>
<h2><a name="assignment">New Assignment Operator</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -773,8 +771,7 @@ add this next!
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="localvars">User-defined Local
Variables</a></div>
<h2><a name="localvars">User-defined Local Variables</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -956,7 +953,7 @@ anywhere in sight.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="code">Full Code Listing</a></div>
<h2><a name="code">Full Code Listing</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">

View File

@ -11,8 +11,7 @@
<body>
<div class="doc_title">Kaleidoscope: Conclusion and other useful LLVM
tidbits</div>
<h1>Kaleidoscope: Conclusion and other useful LLVM tidbits</h1>
<ul>
<li><a href="index.html">Up to Tutorial Index</a></li>
@ -43,7 +42,7 @@
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="conclusion">Tutorial Conclusion</a></div>
<h2><a name="conclusion">Tutorial Conclusion</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -154,8 +153,7 @@ are very useful if you want to take advantage of LLVM's capabilities.</p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="llvmirproperties">Properties of the LLVM
IR</a></div>
<h2><a name="llvmirproperties">Properties of the LLVM IR</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -166,8 +164,7 @@ get these out of the way right now, shall we?</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="targetindep">Target
Independence</a></div>
<h4><a name="targetindep">Target Independence</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -221,7 +218,7 @@ in-kernel language.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="safety">Safety Guarantees</a></div>
<h4><a name="safety">Safety Guarantees</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -243,8 +240,7 @@ list</a> if you are interested in more details.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="langspecific">Language-Specific
Optimizations</a></div>
<h4><a name="langspecific">Language-Specific Optimizations</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -298,7 +294,7 @@ language-specific AST.
</div>
<!-- *********************************************************************** -->
<div class="doc_section"><a name="tipsandtricks">Tips and Tricks</a></div>
<h2><a name="tipsandtricks">Tips and Tricks</a></h2>
<!-- *********************************************************************** -->
<div class="doc_text">
@ -310,8 +306,7 @@ everyone rediscover them, this section talks about some of these issues.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="offsetofsizeof">Implementing portable
offsetof/sizeof</a></div>
<h4><a name="offsetofsizeof">Implementing portable offsetof/sizeof</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">
@ -331,8 +326,7 @@ in a portable way.</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsubsection"><a name="gcstack">Garbage Collected
Stack Frames</a></div>
<h4><a name="gcstack">Garbage Collected Stack Frames</a></h4>
<!-- ======================================================================= -->
<div class="doc_text">

View File

@ -12,7 +12,7 @@
<body>
<div class="doc_title"> LLVM Tutorial: Table of Contents </div>
<h1>LLVM Tutorial: Table of Contents</h1>
<ol>
<li>Kaleidoscope: Implementing a Language with LLVM