[llvm] r290449 - [PM] Add support for building a default AA pipeline to the PassBuilder.

Chandler Carruth via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 23 21:22:27 PST 2016


On Fri, Dec 23, 2016 at 6:44 PM Sean Silva via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> On Fri, Dec 23, 2016 at 12:38 PM, Chandler Carruth via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
> Author: chandlerc
> Date: Fri Dec 23 14:38:19 2016
> New Revision: 290449
>
> URL: http://llvm.org/viewvc/llvm-project?rev=290449&view=rev
> Log:
> [PM] Add support for building a default AA pipeline to the PassBuilder.
>
> Pretty boring and lame as-is but necessary. This is definitely a place
> we'll end up with extension hooks longer term. =]
>
> Differential Revision: https://reviews.llvm.org/D28076
>
> Modified:
>     llvm/trunk/include/llvm/Passes/PassBuilder.h
>     llvm/trunk/lib/Passes/PassBuilder.cpp
>     llvm/trunk/test/Other/new-pass-manager.ll
>
> Modified: llvm/trunk/include/llvm/Passes/PassBuilder.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Passes/PassBuilder.h?rev=290449&r1=290448&r2=290449&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Passes/PassBuilder.h (original)
> +++ llvm/trunk/include/llvm/Passes/PassBuilder.h Fri Dec 23 14:38:19 2016
> @@ -224,6 +224,10 @@ public:
>    ModulePassManager buildLTODefaultPipeline(OptimizationLevel Level,
>                                              bool DebugLogging = false);
>
> +  /// Build the default `AAManager` with the default alias analysis
> pipeline
> +  /// registered.
> +  AAManager buildDefaultAAPipeline();
> +
>    /// \brief Parse a textual pass pipeline description into a \c
> ModulePassManager.
>    ///
>    /// The format of the textual pass pipeline description looks something
> like:
>
> Modified: llvm/trunk/lib/Passes/PassBuilder.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassBuilder.cpp?rev=290449&r1=290448&r2=290449&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Passes/PassBuilder.cpp (original)
> +++ llvm/trunk/lib/Passes/PassBuilder.cpp Fri Dec 23 14:38:19 2016
> @@ -544,6 +544,33 @@ ModulePassManager PassBuilder::buildLTOD
>    return MPM;
>  }
>
> +AAManager PassBuilder::buildDefaultAAPipeline() {
> +  AAManager AA;
> +
> +  // The order in which these are registered determines their priority
> when
> +  // being queried.
> +
> +  // First we register the basic alias analysis that provides the
> majority of
> +  // per-function local AA logic. This is a stateless, on-demand local
> set of
> +  // AA techniques.
> +  AA.registerFunctionAnalysis<BasicAA>();
> +
> +  // Next we query fast, specialized alias analyses that wrap IR-embedded
> +  // information about aliasing.
> +  AA.registerFunctionAnalysis<ScopedNoAliasAA>();
> +  AA.registerFunctionAnalysis<TypeBasedAA>();
> +
> +  // Add support for querying global aliasing information when available.
> +  // Because this is a module analysis this will use any cached analysis
> state
> +  // available but isn't enough to cause it to be available.
> +  // FIXME: Enable once the invalidation logic supports this.
>
>
> This comment is confusing. It starts out talking about how to cause the
> analysis to be computed, but then the FIXME is about invalidation logic.
> Can you somehow make it clear that they are talking about two different
> things? (move the FIXME inside the `#if 0` maybe?).
>
> Also, for context about the "isn't enough to cause it to be available"
> aspect, you probably want to emphasize that AAManager is a function
> analysis and will access GlobalsAA through the proxy, which provides a
> read-only view of the module analysis manager.
>

Thanks for reviewing! Attempted to do both in r290488, but if it still
isn't working, just let me know.

-Chandler
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161224/a708c1a6/attachment.html>


More information about the llvm-commits mailing list