X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FAliasAnalysis.html;h=ebf638689824b25d14329364439194cbf497e15f;hb=9e6d1d1f5034347d237941f1bf08fba5c1583cd3;hp=97a813344d894dea99fa9489ee2a02136ee82f96;hpb=e642658480ed0c9cde023a165edca237ba90bd31;p=oota-llvm.git diff --git a/docs/AliasAnalysis.html b/docs/AliasAnalysis.html index 97a813344d8..ebf63868982 100644 --- a/docs/AliasAnalysis.html +++ b/docs/AliasAnalysis.html @@ -36,7 +36,7 @@
  • Using alias analysis results @@ -225,12 +225,7 @@ method for testing dependencies between function calls. This method takes two call sites (CS1 & CS2), returns NoModRef if the two calls refer to disjoint memory locations, Ref if CS1 reads memory written by CS2, Mod if CS1 writes to memory read or written by CS2, or ModRef if CS1 might read or write memory -accessed by CS2. Note that this relation is not commutative. Clients that use -this method should be predicated on the hasNoModRefInfoForCalls() -method, which indicates whether or not an analysis can provide mod/ref -information for function call pairs (most can not). If this predicate is false, -the client shouldn't waste analysis time querying the getModRefInfo -method many times.

    +accessed by CS2. Note that this relation is not commutative.

    @@ -249,21 +244,6 @@ analysis implementations and can be put to good use by various clients. - -
    - The getMustAliases method -
    - -
    - -

    The getMustAliases method returns all values that are known to -always must alias a pointer. This information can be provided in some cases for -important objects like the null pointer and global values. Knowing that a -pointer always points to a particular function allows indirect calls to be -turned into direct calls, for example.

    - -
    -
    The pointsToConstantMemory method @@ -537,16 +517,16 @@ preference, these are...

    -

    The load-vn pass uses alias analysis to provide value numbering -information for load instructions and pointer values. If your analysis -or transformation can be modeled in a form that uses value numbering -information, you don't have to do anything special to handle load instructions: -just use the load-vn pass, which uses alias analysis.

    +

    The memdep pass uses alias analysis to provide high-level dependence +information about memory-using instructions. This will tell you which store +feeds into a load, for example. It uses caching and other techniques to be +efficient, and is used by Dead Store Elimination, GVN, and memcpy optimizations. +

    @@ -710,7 +690,7 @@ aggressive local analysis that "knows" many important facts:

    for internal global variables that don't "have their address taken". If a global does not have its address taken, the pass knows that no pointers alias the global. This pass also keeps track of functions that it knows never access -memory or never read memory. This allows certain optimizations (e.g. GCSE) to +memory or never read memory. This allows certain optimizations (e.g. GVN) to eliminate call instructions entirely.

    @@ -855,26 +835,14 @@ pointer.

    -

    The -load-vn pass uses alias analysis to "value -number" loads and pointers values, which is used by the GCSE pass to -eliminate instructions. The -load-vn pass relies on alias information -and must-alias information. This combination of passes can make the following -transformations:

    - -
      -
    • Redundant load instructions are eliminated.
    • -
    • Load instructions that follow a store to the same location are replaced with -the stored value ("store forwarding").
    • -
    • Pointers values (e.g. formal arguments) that must-alias simpler expressions -(e.g. global variables or the null pointer) are replaced. Note that this -implements transformations like "virtual method resolution", turning indirect -calls into direct calls.
    • -
    +

    These passes use AliasAnalysis information to reason about loads and stores. +