diff options
author | Owen Anderson <resistor@mac.com> | 2011-01-03 21:38:41 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2011-01-03 21:38:41 +0000 |
commit | ab6acc6ecdc4585a55059e36d81481d1c26d3ff9 (patch) | |
tree | 59e2d272e91a2b8e69d947794b7a2503ba50e7cf /docs | |
parent | 375e5a380c38e8203ae90afd37f4a22266bc6357 (diff) | |
download | external_llvm-ab6acc6ecdc4585a55059e36d81481d1c26d3ff9.zip external_llvm-ab6acc6ecdc4585a55059e36d81481d1c26d3ff9.tar.gz external_llvm-ab6acc6ecdc4585a55059e36d81481d1c26d3ff9.tar.bz2 |
Stub out a new updating interface to AliasAnalysis, allowing stateful analyses to be informed when
a pointer value has potentially become escaping. Implementations can choose to either fall back to
conservative responses for that value, or may recompute their analysis to accomodate the change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122777 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
-rw-r--r-- | docs/AliasAnalysis.html | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/docs/AliasAnalysis.html b/docs/AliasAnalysis.html index 692349f..7baa946 100644 --- a/docs/AliasAnalysis.html +++ b/docs/AliasAnalysis.html @@ -464,7 +464,7 @@ analysis results updated to reflect the changes made by these transformations. </p> <p> -The <tt>AliasAnalysis</tt> interface exposes three methods which are used to +The <tt>AliasAnalysis</tt> interface exposes four methods which are used to communicate program changes from the clients to the analysis implementations. Various alias analysis implementations should use these methods to ensure that their internal data structures are kept up-to-date as the program changes (for @@ -505,6 +505,28 @@ value, then deleting the old value. This method cannot be overridden by alias analysis implementations. </div> +<!-- _______________________________________________________________________ --> +<div class="doc_subsubsection">The <tt>addEscapingUse</tt> method</div> + +<div class="doc_text"> +<p>The <tt>addEscapingUse</tt> method is used when the uses of a pointer +value have changed in ways that may invalidate precomputed analysis information. +Implementations may either use this callback to provide conservative responses +for points whose uses have change since analysis time, or may recompute some +or all of their internal state to continue providing accurate responses.</p> + +<p>In general, any new use of a pointer value is considered an escaping use, +and must be reported through this callback, <em>except</em> for the +uses below:</p> + +<ul> + <li>A <tt>bitcast</tt> or <tt>getelementptr</tt> of the pointer</li> + <li>A <tt>store</tt> through the pointer (but not a <tt>store</tt> + <em>of</em> the pointer)</li> + <li>A <tt>load</tt> through the pointer</li> +</ul> +</div> + <!-- ======================================================================= --> <div class="doc_subsection"> <a name="implefficiency">Efficiency Issues</a> |