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

Dan Gohman dan433584 at gmail.com
Thu Dec 6 14:32:32 PST 2012


The basic idea sounds fine.

Dan

On Thu, Dec 6, 2012 at 9:31 AM, Hal Finkel <hfinkel at anl.gov> wrote:
> 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