summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-06-24 19:34:03 +0000
committerDan Gohman <gohman@apple.com>2010-06-24 19:34:03 +0000
commit3f43dc36878e698c71c9828ca59a4c3259845589 (patch)
treef50aaa59385d5c473b381dbad4de3ec21033801c /docs
parent8acf67672bf53ba9b168a3b11fba42988708b7a0 (diff)
downloadllvm-3f43dc36878e698c71c9828ca59a4c3259845589.tar.gz
llvm-3f43dc36878e698c71c9828ca59a4c3259845589.tar.bz2
llvm-3f43dc36878e698c71c9828ca59a4c3259845589.tar.xz
Document problems that I encountered when working on -scev-aa.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106776 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
-rw-r--r--docs/AliasAnalysis.html40
1 files changed, 40 insertions, 0 deletions
diff --git a/docs/AliasAnalysis.html b/docs/AliasAnalysis.html
index 5b4eb937a5..42b01ac7ec 100644
--- a/docs/AliasAnalysis.html
+++ b/docs/AliasAnalysis.html
@@ -31,6 +31,7 @@
<li><a href="#chaining"><tt>AliasAnalysis</tt> chaining behavior</a></li>
<li><a href="#updating">Updating analysis results for transformations</a></li>
<li><a href="#implefficiency">Efficiency Issues</a></li>
+ <li><a href="#passmanager">Pass Manager Issues</a></li>
</ul>
</li>
@@ -502,6 +503,45 @@ method as possible (within reason).</p>
</div>
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+ <a name="passmanager">Pass Manager Issues</a>
+</div>
+
+<div class="doc_text">
+
+<p>PassManager support for alternative AliasAnalysis implementation
+has some issues.</p>
+
+<p>There is no way to override the default alias analysis. It would
+be very useful to be able to do something like "opt -my-aa -O2" and
+have it use -my-aa for all passes which need AliasAnalysis, but there
+is currently no support for that, short of changing the source code
+and recompiling. Similarly, there is also no way of setting a chain
+of analyses as the default.</p>
+
+<p>There is no way for transform passes to declare that they preserve
+<tt>AliasAnalysis</tt> implementations. The <tt>AliasAnalysis</tt>
+interface includes <tt>deleteValue</tt> and <tt>copyValue</tt> methods
+which are intended to allow a pass to keep an AliasAnalysis consistent,
+however there's no way for a pass to declare in its
+<tt>getAnalysisUsage</tt> that it does so. Some passes attempt to use
+<tt>AU.addPreserved&lt;AliasAnalysis&gt;</tt>, however this doesn't
+actually have any effect.</tt>
+
+<p><tt>AliasAnalysisCounter</tt> (<tt>-count-aa</tt>) and <tt>AliasDebugger</tt>
+(<tt>-debug-aa</tt>) are implemented as <tt>ModulePass</tt> classes, so if your
+alias analysis uses <tt>FunctionPass</tt>, it won't be able to use
+these utilities. If you try to use them, the pass manager will
+silently route alias analysis queries directly to
+<tt>BasicAliasAnalysis</tt> instead.</p>
+
+<p>Similarly, the <tt>opt -p</tt> option introduces <tt>ModulePass</tt>
+passes between each pass, which prevents the use of <tt>FunctionPass</tt>
+alias analysis passes.</p>
+
+</div>
+
<!-- *********************************************************************** -->
<div class="doc_section">
<a name="using">Using alias analysis results</a>