[LLVMdev] AliasAnalysis refactoring for the new pass manager

Duncan P. N. Exon Smith dexonsmith at apple.com
Mon Jun 15 15:53:04 PDT 2015


> On 2015-Jun-13, at 09:12, David Blaikie <dblaikie at gmail.com> wrote:
> 
> 
> 
> On Sat, Jun 13, 2015 at 12:52 AM, Chandler Carruth <chandlerc at gmail.com> wrote:
> Greetings all,
> 
> I'm working on refactoring the alias analysis layers to remove the usage of analysis groups and make the logic sharable between old and new pass managers, and I have a couple of questions below.
> 
> As background, the overall plan that I've discussed with Hal and a few others previously is as follows:
> - Create an AliasAnalysisManager which is provided by a normal analysis pass.
> - Use type erasure to register classes which conform to the core AliasAnalysis concept with the AliasAnalysisManager.
> - The concept will consist solely of the virtual methods currently on AliasAnalysis -- all the helpers and such will just be directly provided by the manager layer.
> 
> This will make the AA infrastructure look much like the TTI infrastructure, but much simpler as the AA interface boundary is actually a reasonable and small concept.
> 
> As part of this, there won't be any inheritance relationship between alias analyses, and so the nested enums currently in the AliasAnalysis base class aren't a great way of describing the return types of these interfaces. I'd like to lift them out to be proper top-level enums that describe various aliasing and mod-ref information. In some ways, I think this is cleaner, especially for mod-ref information which might reasonably be used in interfaces that aren't precisely that of AA. Any concerns so far?
> 
> 
> Ok, provided you're happy with this, I'd like to ask what names and naming conventions people like. Here is a straw-man:
> 
> enum class AliasKind {
>   NoAlias = 0,
>   MayAlias,
>   PartialAlias,
>   MustAlias
> };
> 
> I find the "Alias" suffix redundant, but "No", "Maybe", "Partial", and "Must" also seem awkward. Is there a better enum name than "AliasKind"? These aren't *just* results, so I don't like the current name.
> 
> AliasRelationship? None, May/PossiblyAliased/Unknown, Aliased, PartiallyAliased?
> 
> (tense could use some tweaking and I suppose this still has the suffix problem in all except the "None" case... )

I like this colour:

    enum class AliasKind /* or AliasCategory? */ {
      Null,
      Unknown,
      Partial,
      Complete
    };


> Whatever convention we use, we should use a similar one for the ModRef stuff. ModRefBehavior there already seems to have good names if it were switched to an enum class outside of AA. ModRefResult I would probably make ModRefKind, but maybe ModRefInfo? We call the methods getModRefInfo....
> 
> Please suggest patterns that you like!
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev





More information about the llvm-dev mailing list