Clarify the meaning of the NoAlias response. The plan is to refer to this from

a future version of LangRef.

llvm-svn: 61010
This commit is contained in:
Nick Lewycky 2008-12-14 21:08:48 +00:00
parent e34c2399de
commit 4048ca5739
1 changed files with 12 additions and 8 deletions

View File

@ -191,16 +191,20 @@ and returns MustAlias, MayAlias, or NoAlias as appropriate.
</div>
<div class="doc_text">
<p>The NoAlias response is used when the two pointers refer to distinct objects,
even regardless of whether the pointers compare equal. For example, freed
pointers don't alias any pointers that were allocated afterwards. As a
degenerate case, pointers returned by malloc(0) have no bytes for an object,
and are considered NoAlias even when malloc returns the same pointer. The same
rule applies to NULL pointers.</p>
<p>An Alias Analysis implementation can return one of three responses:
MustAlias, MayAlias, and NoAlias. The No and May alias results are obvious: if
the two pointers can never equal each other, return NoAlias, if they might,
return MayAlias.</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>
<p>The MustAlias response is trickier though. In LLVM, the Must Alias response
may only be returned if the two memory objects are guaranteed to always start at
exactly the same location. If two memory objects overlap, but do not start at
the same location, return MayAlias.</p>
<p>The MustAlias response may only be returned if the two memory objects are
guaranteed to always start at exactly the same location. A MustAlias response
implies that the pointers compare equal.</p>
</div>