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 !
\n" if !
\n" if !
\n" if !
\n" if !
\n" if ! Spadini, and Wojciech Stryjewski.
- - -- 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: -
- -- 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". -
- -\n" if !
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
\n" if ! basic-block-at-a-time approach. It should eventually be removed.
This pass propagates information about conditional expressions through the - program, allowing it to eliminate conditional branches in some cases.
-- Converts @malloc and @free calls to malloc and - free instructions. -
-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.
+ Displays the dominator tree using the GraphViz tool. +
++ Displays the dominator tree using the GraphViz tool, but omitting function + bodies. +
++ Displays the post dominator tree using the GraphViz tool. +
++ Displays the post dominator tree using the GraphViz tool, but omitting + function bodies. +
+