<tr><th>Option</th><th>Name</th></tr>
<tr><td><a href="#deadarghaX0r">-deadarghaX0r</a></td><td>Dead Argument Hacking (BUGPOINT USE ONLY; DO NOT USE)</td></tr>
<tr><td><a href="#extract-blocks">-extract-blocks</a></td><td>Extract Basic Blocks From Module (for bugpoint use)</td></tr>
-<tr><td><a href="#emitbitcode">-emitbitcode</a></td><td>Bitcode Writer</td></tr>
+<tr><td><a href="#preverify">-preverify</a></td><td>Preliminary module verification</td></tr>
<tr><td><a href="#verify">-verify</a></td><td>Module Verifier</td></tr>
<tr><td><a href="#view-cfg">-view-cfg</a></td><td>View CFG of function</td></tr>
<tr><td><a href="#view-cfg-only">-view-cfg-only</a></td><td>View CFG of function (with no function bodies)</td></tr>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
- <a name="emitbitcode">Bitcode Writer</a>
+ <a name="preverify">Preliminary module verification</a>
</div>
<div class="doc_text">
- <p>Yet to be written.</p>
+ <p>
+ Ensures that the module is in the form required by the <a
+ href="#verifier">Module Verifier</a> pass.
+ </p>
+
+ <p>
+ Running the verifier runs this pass automatically, so there should be no need
+ to use it directly.
+ </p>
</div>
<!-------------------------------------------------------------------------- -->
before performing optimizing transformations.
</p>
- <p>
+ <ul>
<li>Both of a binary operator's parameters are of the same type.</li>
<li>Verify that the indices of mem access instructions match other
operands.</li>
<li>The code is in valid SSA form.</li>
<li>It should be illegal to put a label into any other type (like a
structure) or to return one. [except constant arrays!]</li>
- <li>Only phi nodes can be self referential: 'add int %0, %0 ; <int>:0' is
- bad.</li>
+ <li>Only phi nodes can be self referential: <tt>%x = add int %x, %x</tt> is
+ invalid.</li>
<li>PHI nodes must have an entry for each predecessor, with no extras.</li>
<li>PHI nodes must be the first thing in a basic block, all grouped
together.</li>
not agree with the function return value type.</li>
<li>Function call argument types match the function prototype.</li>
<li>All other things that are tested by asserts spread about the code.</li>
- </p>
+ </ul>
<p>
Note that this does not provide full security verification (like Java), but