From 01557ce1b165fada60195125dedd4f366be585ed Mon Sep 17 00:00:00 2001 From: Nick Lewycky Date: Sun, 14 Dec 2008 21:08:48 +0000 Subject: 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 --- docs/AliasAnalysis.html | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'docs') diff --git a/docs/AliasAnalysis.html b/docs/AliasAnalysis.html index 1c4ca99..1569fb8 100644 --- a/docs/AliasAnalysis.html +++ b/docs/AliasAnalysis.html @@ -191,16 +191,20 @@ and returns MustAlias, MayAlias, or NoAlias as appropriate.
- -

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.

- -

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.

+

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.

+ +

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.

+ +

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.

-- cgit v1.1