[llvm-dev] PartialAlias: different start addresses

Davide Italiano via llvm-dev llvm-dev at lists.llvm.org
Fri Jul 14 13:00:31 PDT 2017

On Fri, Jul 14, 2017 at 12:50 PM, Nuno Lopes via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> Hi,
> I going through the alias analysis documentation
> (http://llvm.org/docs/AliasAnalysis.html) and noticed the following in the
> definition of PartialAlias:
> "
> The PartialAlias response is used when the two memory objects are known to
> be overlapping in some way, but *do not start at the same address*.
> "
> Is it really required that the objects do no start at the same address?  if
> that's the case the AA algorithm would need to prove that.
> I'm asking this because:
> 1) This condition seems very strict and I don't think it's met in a few
> places I found by manual inspection

If I read the definition correctly, at least our Andersens' AA
implementation violates it.

AliasResult CFLAndersAAResult::alias(const MemoryLocation &LocA,
                                     const MemoryLocation &LocB) {
  if (LocA.Ptr == LocB.Ptr)
    return LocA.Size == LocB.Size ? MustAlias : PartialAlias;

(i.e. the two objects are overlapping here *and* start at the same address).

More information about the llvm-dev mailing list