diff --git a/docs/Passes.html b/docs/Passes.html index b8d5fa10523..352263eca73 100644 --- a/docs/Passes.html +++ b/docs/Passes.html @@ -1808,7 +1808,10 @@ if (i == j) Dead Argument Hacking (BUGPOINT USE ONLY; DO NOT USE)
-

Yet to be written.

+

+ Same as dead argument elimination, but deletes arguments to functions which + are external. This is only for use by bugpoint.

@@ -1816,7 +1819,9 @@ if (i == j) Extract Basic Blocks From Module (for bugpoint use)
-

Yet to be written.

+

+ This pass is used by bugpoint to extract all blocks from the module into their + own functions.

@@ -1832,7 +1837,50 @@ if (i == j) Module Verifier
-

Yet to be written.

+

+ Verifies an LLVM IR code. This is useful to run after an optimization which is + undergoing testing. Note that llvm-as verifies its input before + emitting bitcode, and also that malformed bitcode is likely to make LLVM + crash. All language front-ends are therefore encouraged to verify their output + before performing optimizing transformations. +

+ +

+

  • Both of a binary operator's parameters are of the same type.
  • +
  • Verify that the indices of mem access instructions match other + operands.
  • +
  • Verify that arithmetic and other things are only performed on + first-class types. Verify that shifts and logicals only happen on + integrals f.e.
  • +
  • All of the constants in a switch statement are of the correct type.
  • +
  • The code is in valid SSA form.
  • +
  • It should be illegal to put a label into any other type (like a + structure) or to return one. [except constant arrays!]
  • +
  • Only phi nodes can be self referential: 'add int %0, %0 ; :0' is + bad.
  • +
  • PHI nodes must have an entry for each predecessor, with no extras.
  • +
  • PHI nodes must be the first thing in a basic block, all grouped + together.
  • +
  • PHI nodes must have at least one entry.
  • +
  • All basic blocks should only end with terminator insts, not contain + them.
  • +
  • The entry node to a function must not have predecessors.
  • +
  • All Instructions must be embedded into a basic block.
  • +
  • Functions cannot take a void-typed parameter.
  • +
  • Verify that a function's argument list agrees with its declared + type.
  • +
  • It is illegal to specify a name for a void value.
  • +
  • It is illegal to have a internal global value with no initializer.
  • +
  • It is illegal to have a ret instruction that returns a value that does + not agree with the function return value type.
  • +
  • Function call argument types match the function prototype.
  • +
  • All other things that are tested by asserts spread about the code.
  • +

    + +

    + Note that this does not provide full security verification (like Java), but + instead just tries to ensure that code is well-formed. +

    @@ -1840,7 +1888,9 @@ if (i == j) View CFG of function
    -

    Yet to be written.

    +

    + Displays the control flow graph using the GraphViz tool. +

    @@ -1848,7 +1898,10 @@ if (i == j) View CFG of function (with no function bodies)
    -

    Yet to be written.

    +

    + Displays the control flow graph using the GraphViz tool, but omitting function + bodies. +