[llvm-commits] CVS: llvm/www/docs/ProgrammersManual.html
Christopher Lattner
lattner at cs.uiuc.edu
Fri Sep 6 13:32:01 PDT 2002
Changes in directory llvm/www/docs:
ProgrammersManual.html updated: 1.4 -> 1.5
---
Log message:
Add skeleton to the section contents so that Joel knows what to fill in
---
Diffs of the changes:
Index: llvm/www/docs/ProgrammersManual.html
diff -u llvm/www/docs/ProgrammersManual.html:1.4 llvm/www/docs/ProgrammersManual.html:1.5
--- llvm/www/docs/ProgrammersManual.html:1.4 Fri Sep 6 11:40:10 2002
+++ llvm/www/docs/ProgrammersManual.html Fri Sep 6 13:31:18 2002
@@ -9,12 +9,56 @@
<ol>
<li><a href="#introduction">Introduction</a>
- <li><a href="#common">Helpful Hints for Common Operations</a>
<li><a href="#general">General Information</a>
<ul>
<li><a href="#stl">The C++ Standard Template Library</a>
<li>The isa<>, cast<> and dyn_cast<> templates
</ul>
+ <li><a href="#common">Helpful Hints for Common Operations</a>
+ <ul>
+ <li><a href="#inspection">Basic Inspection and Traversal Routines</a>
+ <ul>
+ <li><a href="#iterate_function">Iterating over the <tt>BasicBlock</tt>s
+ in a <tt>Function</tt></a>
+ <li><a href="#iterate_basicblock">Iterating over the <tt>Instruction</tt>s
+ in a <tt>BasicBlock</tt></a>
+ <li><a href="#iterate_convert">Turning an iterator into a class
+ pointer</a>
+ </ul>
+ <li><a href="#simplechanges">Making simple changes</a>
+ <ul>
+ <li>Creating and inserting new <tt>Instruction</tt>s
+ <li>Deleting <tt>Instruction</tt>s
+ <li>Replacing an <tt>Instruction</tt> with another <tt>Value</tt>
+ </ul>
+<!--
+ <li>Working with the Control Flow Graph
+ <ul>
+ <li>Accessing predecessors and successors of a <tt>BasicBlock</tt>
+ <li>
+ <li>
+ </ul>
+-->
+ <li>Useful LLVM APIs
+ <ul>
+ <li>isa<>, cast<>, and dyn_cast<> templates
+<!--
+ <li>The general graph API
+ <li>The <tt>InstVisitor</tt> template
+ <li>The DEBUG() macro
+ <li>The <tt>Statistic</tt> template
+-->
+ </ul>
+<!--
+ <li>Useful related topics
+ <ul>
+ <li>The <tt>-time-passes</tt> option
+ <li>How to use the LLVM Makefile system
+ <li>How to write a regression test
+ <li>
+ </ul>
+-->
+ </ul>
<li><a href="#coreclasses">The Core LLVM Class Heirarchy Reference</a>
<ul>
<li><a href="#Value">The <tt>Value</tt> class</a>
@@ -50,20 +94,6 @@
<li>Important iterator invalidation semantics to be aware of
</ul>
-<!--
-III. Useful things to know about the LLVM source base:
-
-III.1 Useful links that introduce the STL
-III.2 isa<>, cast<>, dyn_cast<>
-III.3 Makefiles, useful options
-III.4 How to use opt & analyze to debug stuff
-III.5 How to write a regression test
-III.6 DEBUG() and Statistics (-debug & -stats)
-III.7 The -time-passes option
-III.8 ... more as needed ...
-
--->
-
<p><b>Written by <a href="mailto:dhurjati at cs.uiuc.edu">Dinakar Dhurjati</a>
and <a href="mailto:sabre at nondot.org">Chris Lattner</a></b><p>
</ol>
@@ -146,6 +176,7 @@
to write maintainable code more than where to put your curly braces.<p>
+
<!-- *********************************************************************** -->
</ul><table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0>
<tr><td align=center><font color="#EEEEFF" size=+2 face="Georgia,Palatino"><b>
@@ -153,6 +184,66 @@
</b></font></td></tr></table><ul>
<!-- *********************************************************************** -->
+This section describes how to perform some very simple transformations of LLVM
+code. This is meant to give examples of common idioms used, showing the
+practical side of LLVM transformations.<p>
+
+Because this is a "howto" section, you should also read about the main classes
+that you will be working with. The <a href="#coreclasses">Core LLVM Class
+Heirarchy Reference</a> contains details and descriptions of the main classes
+that you should know about.<p>
+
+<!-- NOTE: this section should be heavy on example code -->
+
+
+<!-- ======================================================================= -->
+</ul><table width="100%" bgcolor="#441188" border=0 cellpadding=4 cellspacing=0>
+<tr><td> </td><td width="100%">
+<font color="#EEEEFF" face="Georgia,Palatino"><b>
+<a name="inspection">Basic Inspection and Traversal Routines</a>
+</b></font></td></tr></table><ul>
+
+
+<!-- LLVM has heirarchical representation: Module, Function, BasicBlock,
+Instruction. Common patterns for all levels. -->
+
+<!-- _______________________________________________________________________ -->
+</ul><h4><a name="iterate_function"><hr size=0>Iterating over the
+<tt>BasicBlock</tt>s in a <tt>Function</tt> </h4><ul>
+
+
+
+<!-- _______________________________________________________________________ -->
+</ul><h4><a name="iterate_basicblock"><hr size=0>Iterating over the
+<tt>Instruction</tt>s in a <tt>BasicBlock</tt> </h4><ul>
+
+
+
+<!-- _______________________________________________________________________ -->
+</ul><h4><a name="iterate_convert"><hr size=0>Turning an iterator into a class
+pointer </h4><ul>
+
+<!-- dereferenced iterator = Class &
+ iterators have converting constructor for 'Class *'
+ iterators automatically convert to 'Class *' except in dyn_cast<> case
+ -->
+
+
+
+<!-- ======================================================================= -->
+</ul><table width="100%" bgcolor="#441188" border=0 cellpadding=4 cellspacing=0>
+<tr><td> </td><td width="100%">
+<font color="#EEEEFF" face="Georgia,Palatino"><b>
+<a name="simplechanges">Making simple changes</a>
+</b></font></td></tr></table><ul>
+
+<!-- Value::replaceAllUsesWith
+ User::replaceUsesOfWith
+ Point out: include/llvm/Transforms/Utils/
+ especially BasicBlockUtils.h with:
+ ReplaceInstWithValue, ReplaceInstWithInst
+
+-->
<!-- *********************************************************************** -->
@@ -980,6 +1071,6 @@
<a href="mailto:sabre at nondot.org">Chris Lattner</a></address>
<!-- Created: Tue Aug 6 15:00:33 CDT 2002 -->
<!-- hhmts start -->
-Last modified: Fri Sep 6 11:39:58 CDT 2002
+Last modified: Fri Sep 6 13:30:36 CDT 2002
<!-- hhmts end -->
</font></body></html>
More information about the llvm-commits
mailing list