[llvm-commits] CVS: llvm/docs/AliasAnalysis.html

Misha Brukman brukman at cs.uiuc.edu
Wed Jul 28 15:18:43 PDT 2004



Changes in directory llvm/docs:

AliasAnalysis.html updated: 1.23 -> 1.24

---
Log message:

* Use the doc_code class for code listings to make it stand out from text
* Wrap text in soft, comfortable <div>s and <p>s
* Wrap lines at 80 cols


---
Diffs of the changes:  (+65 -56)

Index: llvm/docs/AliasAnalysis.html
diff -u llvm/docs/AliasAnalysis.html:1.23 llvm/docs/AliasAnalysis.html:1.24
--- llvm/docs/AliasAnalysis.html:1.23	Tue Jul 27 02:50:07 2004
+++ llvm/docs/AliasAnalysis.html	Wed Jul 28 17:18:33 2004
@@ -134,16 +134,18 @@
 important for correct Alias Analyses.  For example, consider this (silly, but
 possible) C code:</p>
 
+<div class="doc_code">
 <pre>
-  int i;
-  char C[2];
-  char A[10]; 
-  /* ... */
-  for (i = 0; i != 10; ++i) {
-    C[0] = A[i];          /* One byte store */
-    C[1] = A[9-i];        /* One byte store */
-  }
+int i;
+char C[2];
+char A[10]; 
+/* ... */
+for (i = 0; i != 10; ++i) {
+  C[0] = A[i];          /* One byte store */
+  C[1] = A[9-i];        /* One byte store */
+}
 </pre>
+</div>
 
 <p>In this case, the <tt>basicaa</tt> pass will disambiguate the stores to
 <tt>C[0]</tt> and <tt>C[1]</tt> because they are accesses to two distinct
@@ -151,16 +153,18 @@
 LICM pass can use store motion to remove the stores from the loop.  In
 constrast, the following code:</p>
 
+<div class="doc_code">
 <pre>
-  int i;
-  char C[2];
-  char A[10]; 
-  /* ... */
-  for (i = 0; i != 10; ++i) {
-    ((short*)C)[0] = A[i];  /* Two byte store! */
-    C[1] = A[9-i];          /* One byte store */
-  }
+int i;
+char C[2];
+char A[10]; 
+/* ... */
+for (i = 0; i != 10; ++i) {
+  ((short*)C)[0] = A[i];  /* Two byte store! */
+  C[1] = A[9-i];          /* One byte store */
+}
 </pre>
+</div>
 
 <p>In this case, the two stores to C do alias each other, because the access to
 the <tt>&C[0]</tt> element is a two byte access.  If size information wasn't
@@ -361,25 +365,29 @@
 declaring any pass dependencies your pass has.  Thus you should have something
 like this:</p>
 
+<div class="doc_code">
 <pre>
-    void getAnalysisUsage(AnalysisUsage &AU) const {
-      AliasAnalysis::getAnalysisUsage(AU);
-      <i>// declare your dependencies here.</i>
-    }
+void getAnalysisUsage(AnalysisUsage &AU) const {
+  AliasAnalysis::getAnalysisUsage(AU);
+  <i>// declare your dependencies here.</i>
+}
 </pre>
+</div>
 
 <p>Additionally, your must invoke the <tt>InitializeAliasAnalysis</tt> method
 from your analysis run method (<tt>run</tt> for a <tt>Pass</tt>,
 <tt>runOnFunction</tt> for a <tt>FunctionPass</tt>, or <tt>InitializePass</tt>
 for an <tt>ImmutablePass</tt>).  For example (as part of a <tt>Pass</tt>):</p>
 
+<div class="doc_code">
 <pre>
-    bool run(Module &M) {
-      InitializeAliasAnalysis(this);
-      <i>// Perform analysis here...</i>
-      return false;
-    }
+bool run(Module &M) {
+  InitializeAliasAnalysis(this);
+  <i>// Perform analysis here...</i>
+  return false;
+}
 </pre>
+</div>
 
 </div>
 
@@ -419,17 +427,19 @@
 paths that return a conservative MayAlias or Mod/Ref result, simply return
 whatever the superclass computes.  For example:</p>
 
+<div class="doc_code">
 <pre>
-  AliasAnalysis::AliasResult alias(const Value *V1, unsigned V1Size,
-                                   const Value *V2, unsigned V2Size) {
-    if (...)
-      return NoAlias;
-    ...
-
-    <i>// Couldn't determine a must or no-alias result.</i>
-    return AliasAnalysis::alias(V1, V1Size, V2, V2Size);
-  }
+AliasAnalysis::AliasResult alias(const Value *V1, unsigned V1Size,
+                                 const Value *V2, unsigned V2Size) {
+  if (...)
+    return NoAlias;
+  ...
+
+  <i>// Couldn't determine a must or no-alias result.</i>
+  return AliasAnalysis::alias(V1, V1Size, V2, V2Size);
+}
 </pre>
+</div>
 
 <p>In addition to analysis queries, you must make sure to unconditionally pass
 LLVM <a href="#updating">update notification</a> methods to the superclass as
@@ -473,7 +483,6 @@
 any entries for the specified value, if they exist.
 </div>
 
-
 <!-- _______________________________________________________________________ -->
 <div class="doc_subsubsection">The <tt>copyValue</tt> method</div>
 
@@ -485,7 +494,6 @@
 new value has exactly the same properties as the value being copied.
 </div>
 
-
 <!-- _______________________________________________________________________ -->
 <div class="doc_subsubsection">The <tt>replaceWithNewValue</tt> method</div>
 
@@ -549,8 +557,8 @@
 
 <p>Many transformations need information about alias <b>sets</b> that are active
 in some scope, rather than information about pairwise aliasing.  The <tt><a
-href="/doxygen/classllvm_1_1AliasSetTracker.html">AliasSetTracker</a></tt> class is used
-to efficiently build these Alias Sets from the pairwise alias analysis
+href="/doxygen/classllvm_1_1AliasSetTracker.html">AliasSetTracker</a></tt> class
+is used to efficiently build these Alias Sets from the pairwise alias analysis
 information provided by the <tt>AliasAnalysis</tt> interface.</p>
 
 <p>First you initialize the AliasSetTracker by using the "<tt>add</tt>" methods
@@ -602,7 +610,6 @@
 
 </div>
 
-
 <!-- ======================================================================= -->
 <div class="doc_subsection">
   <a name="direct">Using the <tt>AliasAnalysis</tt> interface directly</a>
@@ -662,7 +669,6 @@
 
 </div>
 
-
 <!-- _______________________________________________________________________ -->
 <div class="doc_subsubsection">
   <a name="basic-aa">The <tt>-basicaa</tt> pass</a>
@@ -845,8 +851,8 @@
 </div>
 
 <div class="doc_text">
-<p>
-The <tt>-load-vn</tt> pass uses alias analysis to "<a href="#loadvn">value
+
+<p>The <tt>-load-vn</tt> pass uses alias analysis to "<a href="#loadvn">value
 number</a>" loads and pointers values, which is used by the GCSE pass to
 eliminate instructions.  The <tt>-load-vn</tt> pass relies on alias information
 and must-alias information.  This combination of passes can make the following
@@ -864,18 +870,19 @@
 
 </div>
 
-
-
-
 <!-- ======================================================================= -->
 <div class="doc_subsection">
-  <a name="aliasanalysis-debug">Clients for debugging and evaluation of implementations</a>
+  <a name="aliasanalysis-debug">Clients for debugging and evaluation of
+  implementations</a>
 </div>
 
-These passes are useful for evaluating the various alias analysis
+<div class="doc_text">
+
+<p>These passes are useful for evaluating the various alias analysis
 implementations.  You can use them with commands like '<tt>opt -anders-aa -ds-aa
--aa-eval foo.bc -disable-output -stats</tt>'.
+-aa-eval foo.bc -disable-output -stats</tt>'.</p>
 
+</div>
 
 <!-- _______________________________________________________________________ -->
 <div class="doc_subsubsection">
@@ -900,17 +907,19 @@
 <div class="doc_text">
 
 <p>The <tt>-count-aa</tt> pass is useful to see how many queries a particular
-pass is making and what responses are returned by the alias analysis.  An
-example usage is:</p>
+pass is making and what responses are returned by the alias analysis.  As an
+example,</p>
 
+<div class="doc_code">
 <pre>
-  $ opt -basicaa -count-aa -ds-aa -count-aa -licm
+% opt -basicaa -count-aa -ds-aa -count-aa -licm
 </pre>
+</div>
 
-<p>Which will print out how many queries (and what responses are returned) by
-the <tt>-licm</tt> pass (of the <tt>-ds-aa</tt> pass) and how many queries are
-made of the <tt>-basicaa</tt> pass by the <tt>-ds-aa</tt> pass.  This can be
-useful when debugging a transformation or an alias analysis implementation.</p>
+<p>will print out how many queries (and what responses are returned) by the
+<tt>-licm</tt> pass (of the <tt>-ds-aa</tt> pass) and how many queries are made
+of the <tt>-basicaa</tt> pass by the <tt>-ds-aa</tt> pass.  This can be useful
+when debugging a transformation or an alias analysis implementation.</p>
 
 </div>
 
@@ -940,7 +949,7 @@
 
   <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
   <a href="http://llvm.cs.uiuc.edu">LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2004/07/27 07:50:07 $
+  Last modified: $Date: 2004/07/28 22:18:33 $
 </address>
 
 </body>





More information about the llvm-commits mailing list