[llvm-commits] CVS: llvm-www/releases/1.0/docs/ProgrammersManual.html WritingAnLLVMPass.html
Tanya Brethour
tbrethou at cs.uiuc.edu
Tue Jun 22 03:10:13 PDT 2004
Changes in directory llvm-www/releases/1.0/docs:
ProgrammersManual.html updated: 1.2 -> 1.3
WritingAnLLVMPass.html updated: 1.1 -> 1.2
---
Log message:
Fixing broken links
---
Diffs of the changes: (+28 -28)
Index: llvm-www/releases/1.0/docs/ProgrammersManual.html
diff -u llvm-www/releases/1.0/docs/ProgrammersManual.html:1.2 llvm-www/releases/1.0/docs/ProgrammersManual.html:1.3
--- llvm-www/releases/1.0/docs/ProgrammersManual.html:1.2 Mon Jun 21 23:25:28 2004
+++ llvm-www/releases/1.0/docs/ProgrammersManual.html Tue Jun 22 03:01:35 2004
@@ -747,7 +747,7 @@
use-def chains</h4><ul>
Frequently, we might have an instance of the <a
-href="/doxygen/classValue.html">Value Class</a> and we want to
+href="/doxygen/structllvm_1_1Value.html">Value Class</a> and we want to
determine which <tt>User</tt>s use the <tt>Value</tt>. The list of
all <tt>User</tt>s of a particular <tt>Value</tt> is called a
<i>def-use</i> chain. For example, let's say we have a
@@ -964,7 +964,7 @@
You can use <tt>Value::replaceAllUsesWith</tt> and
<tt>User::replaceUsesOfWith</tt> to change more than one use at a
time. See the doxygen documentation for the <a
-href="/doxygen/classValue.html">Value Class</a> and <a
+href="/doxygen/structllvm_1_1Value.html">Value Class</a> and <a
href="/doxygen/classUser.html">User Class</a>, respectively, for more
information.
@@ -994,7 +994,7 @@
</b></font></td></tr></table><ul>
<tt>#include "<a href="/doxygen/Value_8h-source.html">llvm/Value.h</a>"</tt></b><br>
-doxygen info: <a href="/doxygen/classValue.html">Value Class</a><p>
+doxygen info: <a href="/doxygen/structllvm_1_1Value.html">Value Class</a><p>
The <tt>Value</tt> class is the most important class in LLVM Source base. It
@@ -1501,7 +1501,7 @@
<tt>#include "<a
href="/doxygen/GlobalVariable_8h-source.html">llvm/GlobalVariable.h</a>"</tt></b><br>
-doxygen info: <a href="/doxygen/classGlobalVariable.html">GlobalVariable Class</a><br>
+doxygen info: <a href="/doxygen/classllvm_1_1GlobalVariable.html">GlobalVariable Class</a><br>
Superclasses: <a href="#GlobalValue"><tt>GlobalValue</tt></a>, <a
href="#User"><tt>User</tt></a>, <a href="#Value"><tt>Value</tt></a><p>
Index: llvm-www/releases/1.0/docs/WritingAnLLVMPass.html
diff -u llvm-www/releases/1.0/docs/WritingAnLLVMPass.html:1.1 llvm-www/releases/1.0/docs/WritingAnLLVMPass.html:1.2
--- llvm-www/releases/1.0/docs/WritingAnLLVMPass.html:1.1 Fri Oct 24 15:51:39 2003
+++ llvm-www/releases/1.0/docs/WritingAnLLVMPass.html Tue Jun 22 03:01:35 2004
@@ -96,13 +96,13 @@
all, a structuring technique for compiler code.<p>
All LLVM passes are subclasses of the <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/classPass.html">Pass</a></tt> class, which
+href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1Pass.html">Pass</a></tt> class, which
implement functionality by overriding virtual methods inherited from
<tt>Pass</tt>. Depending on how your pass works, you may be able to inherit
from the <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/structFunctionPass.html">FunctionPass</a></tt>
+href="http://llvm.cs.uiuc.edu/doxygen/structllvm_1_1FunctionPass.html">FunctionPass</a></tt>
or <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/structBasicBlockPass.html">BasicBlockPass</a></tt>,
+href="http://llvm.cs.uiuc.edu/doxygen/structllvm_1_1BasicBlockPass.html">BasicBlockPass</a></tt>,
which gives the system more information about what your pass does, and how it
can be combined with other passes. One of the main features of the LLVM Pass
Framework is that it schedules passes to run in an efficient way based on the
@@ -181,9 +181,9 @@
</pre>
Which are needed because we are writing a <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/classPass.html">Pass</a></tt>, and we are
+href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1Pass.html">Pass</a></tt>, and we are
operating on <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/classFunction.html">Function</a></tt>'s.<p>
+href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1Function.html">Function</a></tt>'s.<p>
Next we have:<p>
@@ -204,7 +204,7 @@
</pre><p>
This declares a "<tt>Hello</tt>" class that is a subclass of <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/structFunctionPass.html">FunctionPass</a></tt>.
+href="http://llvm.cs.uiuc.edu/doxygen/structllvm_1_1FunctionPass.html">FunctionPass</a></tt>.
The different builtin pass subclasses are described in detail <a
href="#passtype">later</a>, but for now, know that <a href="#FunctionPass"><tt>FunctionPass</tt></a>'s
operate a function at a time.<p>
@@ -380,7 +380,7 @@
</b></font></td></tr></table><ul>
The most plain and boring type of pass is the "<tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/structImmutablePass.html">ImmutablePass</a></tt>"
+href="http://llvm.cs.uiuc.edu/doxygen/structllvm_1_1ImmutablePass.html">ImmutablePass</a></tt>"
class. This pass type is used for passes that do not have to be run, do not
change state, and never need to be updated. This is not a normal type of
transformation or analysis, but can provide information about the current
@@ -401,7 +401,7 @@
<a name="Pass">The <tt>Pass</tt> class
</b></font></td></tr></table><ul>
-The "<tt><a href="http://llvm.cs.uiuc.edu/doxygen/classPass.html">Pass</a></tt>"
+The "<tt><a href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1Pass.html">Pass</a></tt>"
class is the most general of all superclasses that you can use. Deriving from
<tt>Pass</tt> indicates that your pass uses the entire program as a unit,
refering to function bodies in no predictable order, or adding and removing
@@ -433,7 +433,7 @@
</b></font></td></tr></table><ul>
In contrast to direct <tt>Pass</tt> subclasses, direct <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/classPass.html">FunctionPass</a></tt>
+href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1Pass.html">FunctionPass</a></tt>
subclasses do have a predictable, local behavior that can be expected by the
system. All <tt>FunctionPass</tt> execute on each function in the program
independent of all of the other functions in the program.
@@ -730,9 +730,9 @@
By implementing the <tt>getAnalysisUsage</tt> method, the required and
invalidated sets may be specified for your transformation. The implementation
should fill in the <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/classAnalysisUsage.html">AnalysisUsage</a></tt>
+href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1AnalysisUsage.html">AnalysisUsage</a></tt>
object with information about which passes are required and not invalidated. To do this, the following set methods are provided by the <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/classAnalysisUsage.html">AnalysisUsage</a></tt> class:<p>
+href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1AnalysisUsage.html">AnalysisUsage</a></tt> class:<p>
<pre>
<i>// addRequires - Add the specified pass to the required set for your pass.</i>
@@ -762,9 +762,9 @@
<pre>
<i>// This is an example implementation from an analysis, which does not modify
// the program at all, yet has a prerequisite.</i>
- <b>void</b> <a href="http://llvm.cs.uiuc.edu/doxygen/structPostDominanceFrontier.html">PostDominanceFrontier</a>::getAnalysisUsage(AnalysisUsage &AU) <b>const</b> {
+ <b>void</b> <a href="http://llvm.cs.uiuc.edu/doxygen/structllvm_1_1PostDominanceFrontier.html">PostDominanceFrontier</a>::getAnalysisUsage(AnalysisUsage &AU) <b>const</b> {
AU.setPreservesAll();
- AU.addRequired<<a href="http://llvm.cs.uiuc.edu/doxygen/structPostDominatorTree.html">PostDominatorTree</a>>();
+ AU.addRequired<<a href="http://llvm.cs.uiuc.edu/doxygen/structllvm_1_1PostDominatorTree.html">PostDominatorTree</a>>();
}
</pre><p>
@@ -774,7 +774,7 @@
<i>// This example modifies the program, but does not modify the CFG</i>
<b>void</b> <a href="http://llvm.cs.uiuc.edu/doxygen/structLICM.html">LICM</a>::getAnalysisUsage(AnalysisUsage &AU) <b>const</b> {
AU.setPreservesCFG();
- AU.addRequired<<a href="http://llvm.cs.uiuc.edu/doxygen/classLoopInfo.html">LoopInfo</a>>();
+ AU.addRequired<<a href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1LoopInfo.html">LoopInfo</a>>();
}
</pre><p>
@@ -848,16 +848,16 @@
href="#registerag"><tt>RegisterAnalysisGroup</tt></a>.<p>
As a concrete example of an Analysis Group in action, consider the <a
-href="http://llvm.cs.uiuc.edu/doxygen/structAliasAnalysis.html">AliasAnalysis</a>
+href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>
analysis group. The default implementation of the alias analysis interface (the
<tt><a
href="http://llvm.cs.uiuc.edu/doxygen/structBasicAliasAnalysis.html">basicaa</a></tt>
pass) just does a few simple checks that don't require significant analysis to
compute (such as: two different globals can never alias each other, etc).
Passes that use the <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/structAliasAnalysis.html">AliasAnalysis</a></tt>
+href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1AliasAnalysis.html">AliasAnalysis</a></tt>
interface (for example the <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/classGCSE.html">gcse</a></tt> pass), do not care which implementation
+href="http://llvm.cs.uiuc.edu/doxygen/structGCSE.html">gcse</a></tt> pass), do not care which implementation
of alias analysis is actually provided, they just use the designated
interface.<p>
@@ -879,7 +879,7 @@
for the Analysis Group Interface itself, because it is "abstract":<p>
<pre>
- <b>static</b> RegisterAnalysisGroup<<a href="http://llvm.cs.uiuc.edu/doxygen/structAliasAnalysis.html">AliasAnalysis</a>> A("<i>Alias Analysis</i>");
+ <b>static</b> RegisterAnalysisGroup<<a href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>> A("<i>Alias Analysis</i>");
</pre><p>
Once the analysis is registered, passes can declare that they are valid
@@ -892,13 +892,13 @@
B("<i>somefancyaa</i>", "<i>A more complex alias analysis implementation</i>");
//<i> Declare that we implement the AliasAnalysis interface</i>
- RegisterAnalysisGroup<<a href="http://llvm.cs.uiuc.edu/doxygen/structAliasAnalysis.html">AliasAnalysis</a>, FancyAA> C;
+ RegisterAnalysisGroup<<a href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>, FancyAA> C;
}
</pre><p>
This just shows a class <tt>FancyAA</tt> that is registered normally, then uses
the <tt>RegisterAnalysisGroup</tt> template to "join" the <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/structAliasAnalysis.html">AliasAnalysis</a></tt>
+href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1AliasAnalysis.html">AliasAnalysis</a></tt>
analysis group. Every implementation of an analysis group should join using
this template. A single pass may join multiple different analysis groups with
no problem.<p>
@@ -910,7 +910,7 @@
D("<i>basicaa</i>", "<i>Basic Alias Analysis (default AA impl)</i>");
//<i> Declare that we implement the AliasAnalysis interface</i>
- RegisterAnalysisGroup<<a href="http://llvm.cs.uiuc.edu/doxygen/structAliasAnalysis.html">AliasAnalysis</a>, <a href="http://llvm.cs.uiuc.edu/doxygen/structBasicAliasAnalysis.html">BasicAliasAnalysis</a>, <b>true</b>> E;
+ RegisterAnalysisGroup<<a href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>, <a href="http://llvm.cs.uiuc.edu/doxygen/structBasicAliasAnalysis.html">BasicAliasAnalysis</a>, <b>true</b>> E;
}
</pre><p>
@@ -931,7 +931,7 @@
The <a
href="http://llvm.cs.uiuc.edu/doxygen/PassManager_8h-source.html"><tt>PassManager</tt></a>
-<a href="http://llvm.cs.uiuc.edu/doxygen/classPassManager.html">class</a> takes
+<a href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1PassManager.html">class</a> takes
a list of passes, ensures their <a href="#interaction">prerequisites</a> are set
up correctly, and then schedules passes to run efficiently. All of the LLVM
tools that run passes use the <tt>PassManager</tt> for execution of these
@@ -962,7 +962,7 @@
the LLVM program representation for a single function at a time, instead of
traversing the entire program. It reduces the memory consumption of compiler,
because, for example, only one <a
-href="http://llvm.cs.uiuc.edu/doxygen/structDominatorSet.html"><tt>DominatorSet</tt></a>
+href="http://llvm.cs.uiuc.edu/doxygen/structllvm_1_1DominatorSet.html"><tt>DominatorSet</tt></a>
needs to be calculated at a time. This also makes it possible some <a
href="#SMP">interesting enhancements</a> in the future.<p>
@@ -1233,7 +1233,7 @@
</ul><h4><a name="ModuleSource"><hr size=0>A new <tt>ModuleSource</tt> interface</h4><ul>
Currently, the <tt>PassManager</tt>'s <tt>run</tt> method takes a <tt><a
-href="http://llvm.cs.uiuc.edu/doxygen/classModule.html">Module</a></tt> as
+href="http://llvm.cs.uiuc.edu/doxygen/classllvm_1_1Module.html">Module</a></tt> as
input, and runs all of the passes on this module. The problem with this
approach is that none of the <tt>PassManager</tt> features can be used for
timing and debugging the actual <b>loading</b> of the module from disk or
More information about the llvm-commits
mailing list