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 !
\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.
-+ 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. +
+