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<DominatorTree>(Function)</tt>. </p>
+<tt> getAnalysis<DominatorTree>(Function)</tt>, if the function pass
+does not require any module passes. </p>
<p>To write a correct <tt>ModulePass</tt> subclass, derive from
<tt>ModulePass</tt> and overload the <tt>runOnModule</tt> method with the
<div class="doc_text">
<div class="doc_code"><pre>
- <b>virtual void</b> print(llvm::OStream &O, <b>const</b> Module *M) <b>const</b>;
+ <b>virtual void</b> print(std::ostream &O, <b>const</b> Module *M) <b>const</b>;
</pre></div>
<p>The <tt>print</tt> method must be implemented by "analyses" in order to print