[llvm-commits] [PATCH] Optimistically analyse phi cycles in BasicAA

Hal Finkel hfinkel at anl.gov
Thu Dec 6 09:31:28 PST 2012


Dan,

Do you have an opinion on this?

Thanks again,
Hal

----- Original Message -----
> From: "Arnold Schwaighofer" <arnold.schwaighofer at gmail.com>
> Cc: "Commit Messages and Patches for LLVM" <llvm-commits at cs.uiuc.edu>
> Sent: Wednesday, November 21, 2012 9:24:13 AM
> Subject: Re: [llvm-commits] [PATCH] Optimistically analyse phi cycles in	BasicAA
> 
> Also send to list ...
> 
> On Wed, Nov 21, 2012 at 3:37 AM, Duncan Sands <baldrick at free.fr>
> wrote:
> >
> > what happens if the recursion bails out due to hitting a recursion
> > limit?
> > Will the conservatively correct MayAlias be returned in that case?
> 
> Yes, because when we hit the limit in the recursion we return
> MayAlias
> from this recursion. This result will be merged with the phi's alias
> result, setting the phi to MayAlias.
> 
>       AliasResult Alias = NoAlias;
>       AliasResult OrigAliasResult = AliasCache[Locs]; // Is MayAlias
> if we have never seen this node.
>       AliasCache[Locs] = NoAlias;
> 
>       for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e;
>       ++i) {
>         AliasResult ThisAlias =
>                      [1]
>           aliasCheck(PN->getIncomingValue(i), PNSize, PNTBAAInfo,
>                      PN2->getIncomingValueForBlock(PN->getIncomingBlock(i)),
>                      V2Size, V2TBAAInfo);
>         Alias = MergeAliasResults(ThisAlias, Alias);
>         if (Alias == MayAlias)
>           break;
>       }
> 
>       // Reset if speculation failed.
>       if (Alias != NoAlias)
>         AliasCache[Locs] = OrigAliasResult;
> 
> We either process all nodes in the phis' input graph and eventually
> see a MayAlias result or we give up early and return MayAlias through
> the recursion.
> The interesting case when we handle two phi nodes. We assume the phis
> to be NoAlias and they are not. Let say we process all inputs
> recursively then we eventually will see an input that is MayAlias,
> this will be propagate up to the call aliasCheck [1] above, resulting
> in the phi to be set to MayAlias.
> In the case were we hit the recursion limit this again will happen in
> the call to aliasCheck [1] which then returns MayAlias and again the
> phis' result will be reset to MayAlias.
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 

-- 
Hal Finkel
Postdoctoral Appointee
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-commits mailing list