Try to clarify a point about getting DominatorTree info from a module pass.
authorDaniel Dunbar <daniel@zuster.org>
Wed, 1 Jul 2009 23:38:44 +0000 (23:38 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 1 Jul 2009 23:38:44 +0000 (23:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74668 91177308-0d34-0410-b5e6-96231b3b80d8

docs/WritingAnLLVMPass.html

index 8374bfac671050e0d4e2970bb4e6337a0c4e5707..b8ac9e910494d77033a2dccbe654e41dc4c830b9 100644 (file)
@@ -491,10 +491,15 @@ class is the most general of all superclasses that you can use.  Deriving from
 <tt>ModulePass</tt> indicates that your pass uses the entire program as a unit,
 refering to function bodies in no predictable order, or adding and removing
 functions.  Because nothing is known about the behavior of <tt>ModulePass</tt>
-subclasses, no optimization can be done for their execution. A module pass
-can use function level passes (e.g. dominators) using getAnalysis interface
-<tt> getAnalysis&lt;DominatorTree&gt;(Function)</tt>, if the function pass
-does not require any module passes. </p> 
+subclasses, no optimization can be done for their execution.</p>
+
+<p>A module pass can use function level passes (e.g. dominators) using
+the getAnalysis interface
+<tt>getAnalysis&lt;DominatorTree&gt;(llvm::Function *)</tt> to provide the
+function to retrieve analysis result for, if the function pass does not require
+any module passes. Note that this can only be done for functions for which the
+analysis ran, e.g. in the case of dominators you should only ask for the
+DominatorTree for function definitions, not declarations.</p>
 
 <p>To write a correct <tt>ModulePass</tt> subclass, derive from
 <tt>ModulePass</tt> and overload the <tt>runOnModule</tt> method with the