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

a future version of LangRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61010 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nick Lewycky 2008-12-14 21:08:48 +00:00
parent cbe1d94031
commit 01557ce1b1

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>