summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-07-02 23:46:54 +0000
committerDan Gohman <gohman@apple.com>2010-07-02 23:46:54 +0000
commitde25629e4f360e86758813dff753beca6065dc3a (patch)
tree0e2fc965807df9e3b64cbca24ed574291518c4b1 /llvm
parenta6d695057cbebb1b08e0f4a9dd3730e4c3ecf9da (diff)
downloadbcm5719-llvm-de25629e4f360e86758813dff753beca6065dc3a.tar.gz
bcm5719-llvm-de25629e4f360e86758813dff753beca6065dc3a.zip
Describe which dependencies are relevant to noalias, and document how
AliasAnalyses have the choice to respect noalias. llvm-svn: 107544
Diffstat (limited to 'llvm')
-rw-r--r--llvm/docs/AliasAnalysis.html5
-rw-r--r--llvm/docs/LangRef.html7
2 files changed, 11 insertions, 1 deletions
diff --git a/llvm/docs/AliasAnalysis.html b/llvm/docs/AliasAnalysis.html
index 5e931d77a89..591694a983c 100644
--- a/llvm/docs/AliasAnalysis.html
+++ b/llvm/docs/AliasAnalysis.html
@@ -201,6 +201,11 @@ freed and reallocated between accesses through one pointer and accesses through
the other -- in this case, there is a dependence, but it's mediated by the free
and reallocation.</p>
+<p>As an exception to this is with the
+<a href="LangRef.html#noalias"><tt>noalias</tt></a> keyword. AliasAnalysis
+implementations may choose to ignore the "irrelevant" dependencies, provided
+their clients do not need to be aware of these dependencies for correctness.</p>
+
<p>The MayAlias response is used whenever the two pointers might refer to the
same object. If the two memory objects overlap, but do not start at the same
location, return MayAlias.</p>
diff --git a/llvm/docs/LangRef.html b/llvm/docs/LangRef.html
index 7d8f14bca6b..ad730deffb8 100644
--- a/llvm/docs/LangRef.html
+++ b/llvm/docs/LangRef.html
@@ -1053,7 +1053,12 @@ declare signext i8 @returns_signed_char()
<dt><tt><b><a name="noalias">noalias</a></b></tt></dt>
<dd>This indicates that pointer values
<a href="#pointeraliasing"><i>based</i></a> on the argument or return
- value do not alias pointer values which are not <i>based</i> on it.
+ value do not alias pointer values which are not <i>based</i> on it,
+ ignoring certain "irrelevant" dependencies.
+ For a call to the parent function, dependencies between memory
+ references from before or after the call and from those during the call
+ are "irrelevant" to the <tt>noalias</tt> keyword for the arguments and
+ return value used in that call.
The caller shares the responsibility with the callee for ensuring that
these requirements are met.
For further details, please see the discussion of the NoAlias response in
OpenPOWER on IntegriCloud