X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FPasses.html;h=b49d3a0e2690433bb24ebfccdcb7d0cf29a8b4f5;hb=591466baff32bd76aa3329e18092c0c09528f826;hp=8c408f4535457cab1626cc5f7fc041c25f4046e2;hpb=60f034097e376d49d30e2dd60661410c41c709e9;p=oota-llvm.git diff --git a/docs/Passes.html b/docs/Passes.html index 8c408f45354..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 @@ -158,7 +160,6 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print "

\n" if ! -memcpyoptOptimize use of memcpy and friends -mergereturnUnify function exit nodes -prune-ehRemove unused exception handling info --raiseallocsRaise allocations from calls to instructions -reassociateReassociate expressions -reg2memDemote all values to stack slots -scalarreplScalar Replacement of Aggregates @@ -180,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) @@ -203,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) @@ -396,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 @@ -715,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 @@ -1502,17 +1476,6 @@ if (X < 3) {

- -
- Raise allocations from calls to instructions -
-
-

- Converts @malloc and @free calls to malloc and - free instructions. -

-
-
Reassociate expressions @@ -1544,7 +1507,7 @@ if (X < 3) {

This file demotes all registers to memory references. It is intented to be the inverse of -mem2reg. By converting to - load instructions, the only values live accross basic blocks are + load instructions, the only values live across basic blocks are alloca instructions and load instructions before phi nodes. It is intended that this should make CFG hacking much easier. To make later hacking easier, the entry block is split into two, such @@ -1799,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.
  • @@ -1849,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. +

    +
    +