X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FPasses.html;h=b49d3a0e2690433bb24ebfccdcb7d0cf29a8b4f5;hb=591466baff32bd76aa3329e18092c0c09528f826;hp=36e0419ad283175f39eeea93761fd9c118cf1a0a;hpb=66284e063a1e46500acae48bdc0e4a00652021d1;p=oota-llvm.git diff --git a/docs/Passes.html b/docs/Passes.html index 36e0419ad28..b49d3a0e269 100644 --- a/docs/Passes.html +++ b/docs/Passes.html @@ -75,7 +75,6 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print "

\n" if ! ANALYSIS PASSES OptionName -aa-evalExhaustive Alias Analysis Precision Evaluator --anders-aaAndersen's Interprocedural Alias Analysis -basicaaBasic Alias Analysis (default AA impl) -basiccgBasic CallGraph Construction -codegenprepareOptimize for code generation @@ -86,6 +85,10 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print "

\n" if ! -dot-callgraphPrint Call Graph to 'dot' file -dot-cfgPrint CFG of function to 'dot' file -dot-cfg-onlyPrint CFG of function to 'dot' file (with no function bodies) +-dot-domPrint dominator tree of function to 'dot' file +-dot-dom-onlyPrint dominator tree of function to 'dot' file (with no function bodies) +-dot-postdomPrint post dominator tree of function to 'dot' file +-dot-postdom-onlyPrint post dominator tree of function to 'dot' file (with no function bodies) -globalsmodref-aaSimple mod/ref analysis for globals -instcountCounts the various types of Instructions -intervalsInterval Partition Construction @@ -115,7 +118,6 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print "

\n" if ! -block-placementProfile Guided Basic Block Placement -break-crit-edgesBreak critical edges in CFG -codegenpreparePrepare a function for code generation --condpropConditional Propagation -constmergeMerge Duplicate Global Constants -constpropSimple constant propagation -dceDead Code Elimination @@ -179,6 +181,10 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print "

\n" if ! -verifyModule Verifier -view-cfgView CFG of function -view-cfg-onlyView CFG of function (with no function bodies) +-view-domView dominator tree of function +-view-dom-onlyView dominator tree of function (with no function bodies) +-view-postdomView post dominator tree of function +-view-postdom-onlyView post dominator tree of function (with no function bodies) @@ -202,80 +208,6 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print "

\n" if ! Spadini, and Wojciech Stryjewski.

- -
- Andersen's Interprocedural Alias Analysis -
-
-

- This is an implementation of Andersen's interprocedural alias - analysis -

- -

- In pointer analysis terms, this is a subset-based, flow-insensitive, - field-sensitive, and context-insensitive algorithm pointer algorithm. -

- -

- This algorithm is implemented as three stages: -

- -
    -
  1. Object identification.
  2. -
  3. Inclusion constraint identification.
  4. -
  5. Offline constraint graph optimization.
  6. -
  7. Inclusion constraint solving.
  8. -
- -

- The object identification stage identifies all of the memory objects in the - program, which includes globals, heap allocated objects, and stack allocated - objects. -

- -

- The inclusion constraint identification stage finds all inclusion constraints - in the program by scanning the program, looking for pointer assignments and - other statements that effect the points-to graph. For a statement like - A = B, this statement is processed to - indicate that A can point to anything that B can point - to. Constraints can handle copies, loads, and stores, and address taking. -

- -

- The offline constraint graph optimization portion includes offline variable - substitution algorithms intended to computer pointer and location - equivalences. Pointer equivalences are those pointers that will have the - same points-to sets, and location equivalences are those variables that - always appear together in points-to sets. -

- -

- The inclusion constraint solving phase iteratively propagates the inclusion - constraints until a fixed point is reached. This is an O(n³) - algorithm. -

- -

- Function constraints are handled as if they were structs with X - fields. Thus, an access to argument X of function Y is - an access to node index getNode(Y) + X. - This representation allows handling of indirect calls without any issues. To - wit, an indirect call Y(a,b) is - equivalent to *(Y + 1) = a, *(Y + 2) = - b. The return node for a function F is always - located at getNode(F) + CallReturnPos. The arguments - start at getNode(F) + CallArgPos. -

- -

- Please keep in mind that the current andersen's pass has many known - problems and bugs. It should be considered "research quality". -

- -
-
Basic Alias Analysis (default AA impl) @@ -395,6 +327,58 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print "

\n" if !

+ +
+ Print dominator tree of function to 'dot' file +
+
+

+ This pass, only available in opt, prints the dominator tree + into a .dot graph. This graph can then be processed with the + "dot" tool to convert it to postscript or some other suitable format. +

+
+ + +
+ Print dominator tree of function to 'dot' file (with no + function bodies) +
+
+

+ This pass, only available in opt, prints the dominator tree + into a .dot graph, omitting the function bodies. This graph can + then be processed with the "dot" tool to convert it to postscript or some + other suitable format. +

+
+ + +
+ Print post dominator tree of function to 'dot' file +
+
+

+ This pass, only available in opt, prints the post dominator tree + into a .dot graph. This graph can then be processed with the + "dot" tool to convert it to postscript or some other suitable format. +

+
+ + +
+ Print post dominator tree of function to 'dot' file + (with no function bodies) +
+
+

+ This pass, only available in opt, prints the post dominator tree + into a .dot graph, omitting the function bodies. This graph can + then be processed with the "dot" tool to convert it to postscript or some + other suitable format. +

+
+
Simple mod/ref analysis for globals @@ -714,15 +698,6 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print "

\n" if ! basic-block-at-a-time approach. It should eventually be removed.

- -
- Conditional Propagation -
-
-

This pass propagates information about conditional expressions through the - program, allowing it to eliminate conditional branches in some cases.

-
-
Merge Duplicate Global Constants @@ -1787,8 +1762,8 @@ if (X < 3) { 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!]
  • +
  • It is illegal to put a label into any other type (like a structure) or + to return one.
  • Only phi nodes can be self referential: %x = add i32 %x, %x is invalid.
  • PHI nodes must have an entry for each predecessor, with no extras.
  • @@ -1837,6 +1812,52 @@ if (X < 3) {

    + +
    + View dominator tree of function +
    +
    +

    + Displays the dominator tree using the GraphViz tool. +

    +
    + + +
    + View dominator tree of function (with no function + bodies) + +
    +
    +

    + Displays the dominator tree using the GraphViz tool, but omitting function + bodies. +

    +
    + + +
    + View post dominator tree of function +
    +
    +

    + Displays the post dominator tree using the GraphViz tool. +

    +
    + + +
    + View post dominator tree of function (with no + function bodies) + +
    +
    +

    + Displays the post dominator tree using the GraphViz tool, but omitting + function bodies. +

    +
    +