[llvm] r272978 - [PM] Remove support for omitting the AnalysisManager argument to new
Nicolai Hähnle-Montoro via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 17 08:04:25 PDT 2016
Hi Chandler,
this commit breaks debug builds for me:
[563/565] Linking CXX executable bin/opt
FAILED: : && /usr/lib/ccache/c++ -g -fPIC
-fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter
-Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic
-Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor
-Wno-comment -Werror=date-time -std=c++11 -g
-Wl,-allow-shlib-undefined -Wl,--export-dynamic
tools/opt/CMakeFiles/opt.dir/AnalysisWrappers.cpp.o
tools/opt/CMakeFiles/opt.dir/BreakpointPrinter.cpp.o
tools/opt/CMakeFiles/opt.dir/GraphPrinters.cpp.o
tools/opt/CMakeFiles/opt.dir/NewPMDriver.cpp.o
tools/opt/CMakeFiles/opt.dir/PassPrinters.cpp.o
tools/opt/CMakeFiles/opt.dir/PrintSCC.cpp.o
tools/opt/CMakeFiles/opt.dir/opt.cpp.o -o bin/opt
lib/libLLVM-3.9svn.so -Wl,-rpath,"\$ORIGIN/../lib" && :
tools/opt/CMakeFiles/opt.dir/NewPMDriver.cpp.o: In function
`llvm::runPassPipeline(llvm::StringRef, llvm::LLVMContext&,
llvm::Module&, llvm::TargetMachine*, llvm::tool_output_file*,
llvm::StringRef, llvm::opt_tool::OutputKind,
llvm::opt_tool::VerifierKind, bool, bool)':
/home/nha/amd/llvm/llvm/tools/opt/NewPMDriver.cpp:66: undefined
reference to `llvm::AnalysisManager<llvm::Loop>::AnalysisManager(bool)'
collect2: error: ld returned 1 exit status
Not really sure why, any idea?
Thanks,
Nicolai
On Fri, Jun 17, 2016 at 2:11 AM, Chandler Carruth via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: chandlerc
> Date: Thu Jun 16 19:11:01 2016
> New Revision: 272978
>
> URL: http://llvm.org/viewvc/llvm-project?rev=272978&view=rev
> Log:
> [PM] Remove support for omitting the AnalysisManager argument to new
> pass manager passes' `run` methods.
>
> This removes a bunch of SFINAE goop from the pass manager and just
> requires pass authors to accept `AnalysisManager<IRUnitT> &` as a dead
> argument. This is a small price to pay for the simplicity of the system
> as a whole, despite the noise that changing it causes at this stage.
>
> This will also helpfull allow us to make the signature of the run
> methods much more flexible for different kinds af passes to support
> things like intelligently updating the pass's progression over IR units.
>
> While this touches many, many, files, the changes are really boring.
> Mostly made with the help of my trusty perl one liners.
>
> Thanks to Sean and Hal for bouncing ideas for this with me in IRC.
>
> Modified:
> llvm/trunk/include/llvm/Analysis/AssumptionCache.h
> llvm/trunk/include/llvm/Analysis/CallGraph.h
> llvm/trunk/include/llvm/Analysis/LazyCallGraph.h
> llvm/trunk/include/llvm/Analysis/LoopInfo.h
> llvm/trunk/include/llvm/Analysis/PostDominators.h
> llvm/trunk/include/llvm/Analysis/ProfileSummaryInfo.h
> llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h
> llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h
> llvm/trunk/include/llvm/Bitcode/BitcodeWriterPass.h
> llvm/trunk/include/llvm/IR/Dominators.h
> llvm/trunk/include/llvm/IR/IRPrintingPasses.h
> llvm/trunk/include/llvm/IR/PassManager.h
> llvm/trunk/include/llvm/IR/PassManagerInternal.h
> llvm/trunk/include/llvm/IR/Verifier.h
> llvm/trunk/include/llvm/Transforms/IPO/ConstantMerge.h
> llvm/trunk/include/llvm/Transforms/IPO/DeadArgumentElimination.h
> llvm/trunk/include/llvm/Transforms/IPO/ElimAvailExtern.h
> llvm/trunk/include/llvm/Transforms/IPO/ForceFunctionAttrs.h
> llvm/trunk/include/llvm/Transforms/IPO/GlobalDCE.h
> llvm/trunk/include/llvm/Transforms/IPO/StripDeadPrototypes.h
> llvm/trunk/include/llvm/Transforms/IPO/WholeProgramDevirt.h
> llvm/trunk/include/llvm/Transforms/Scalar/ADCE.h
> llvm/trunk/include/llvm/Transforms/Scalar/LowerAtomic.h
> llvm/trunk/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h
> llvm/trunk/include/llvm/Transforms/Scalar/Reassociate.h
> llvm/trunk/lib/Analysis/LoopInfo.cpp
> llvm/trunk/lib/Analysis/LoopPass.cpp
> llvm/trunk/lib/Analysis/PostDominators.cpp
> llvm/trunk/lib/Analysis/ProfileSummaryInfo.cpp
> llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp
> llvm/trunk/lib/Analysis/TargetTransformInfo.cpp
> llvm/trunk/lib/Bitcode/Writer/BitcodeWriterPass.cpp
> llvm/trunk/lib/IR/Dominators.cpp
> llvm/trunk/lib/IR/IRPrintingPasses.cpp
> llvm/trunk/lib/IR/Verifier.cpp
> llvm/trunk/lib/Passes/PassBuilder.cpp
> llvm/trunk/lib/Transforms/IPO/ConstantMerge.cpp
> llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp
> llvm/trunk/lib/Transforms/IPO/ElimAvailExtern.cpp
> llvm/trunk/lib/Transforms/IPO/ForceFunctionAttrs.cpp
> llvm/trunk/lib/Transforms/IPO/GlobalDCE.cpp
> llvm/trunk/lib/Transforms/IPO/StripDeadPrototypes.cpp
> llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp
> llvm/trunk/lib/Transforms/Scalar/ADCE.cpp
> llvm/trunk/lib/Transforms/Scalar/LowerAtomic.cpp
> llvm/trunk/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp
> llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp
> llvm/trunk/unittests/Analysis/CGSCCPassManagerTest.cpp
> llvm/trunk/unittests/IR/PassManagerTest.cpp
>
> Modified: llvm/trunk/include/llvm/Analysis/AssumptionCache.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/AssumptionCache.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/AssumptionCache.h (original)
> +++ llvm/trunk/include/llvm/Analysis/AssumptionCache.h Thu Jun 16 19:11:01 2016
> @@ -106,7 +106,9 @@ public:
> AssumptionAnalysis &operator=(const AssumptionAnalysis &RHS) { return *this; }
> AssumptionAnalysis &operator=(AssumptionAnalysis &&RHS) { return *this; }
>
> - AssumptionCache run(Function &F) { return AssumptionCache(F); }
> + AssumptionCache run(Function &F, FunctionAnalysisManager &) {
> + return AssumptionCache(F);
> + }
> };
>
> /// \brief Printer pass for the \c AssumptionAnalysis results.
>
> Modified: llvm/trunk/include/llvm/Analysis/CallGraph.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/CallGraph.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/CallGraph.h (original)
> +++ llvm/trunk/include/llvm/Analysis/CallGraph.h Thu Jun 16 19:11:01 2016
> @@ -306,7 +306,7 @@ public:
> /// \brief Compute the \c CallGraph for the module \c M.
> ///
> /// The real work here is done in the \c CallGraph constructor.
> - CallGraph run(Module &M) { return CallGraph(M); }
> + CallGraph run(Module &M, ModuleAnalysisManager &) { return CallGraph(M); }
> };
>
> /// \brief Printer pass for the \c CallGraphAnalysis results.
>
> Modified: llvm/trunk/include/llvm/Analysis/LazyCallGraph.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LazyCallGraph.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/LazyCallGraph.h (original)
> +++ llvm/trunk/include/llvm/Analysis/LazyCallGraph.h Thu Jun 16 19:11:01 2016
> @@ -907,7 +907,9 @@ public:
> ///
> /// This just builds the set of entry points to the call graph. The rest is
> /// built lazily as it is walked.
> - LazyCallGraph run(Module &M) { return LazyCallGraph(M); }
> + LazyCallGraph run(Module &M, ModuleAnalysisManager &) {
> + return LazyCallGraph(M);
> + }
> };
>
> /// A pass which prints the call graph to a \c raw_ostream.
>
> Modified: llvm/trunk/include/llvm/Analysis/LoopInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopInfo.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/LoopInfo.h (original)
> +++ llvm/trunk/include/llvm/Analysis/LoopInfo.h Thu Jun 16 19:11:01 2016
> @@ -826,7 +826,7 @@ public:
> PrintLoopPass();
> PrintLoopPass(raw_ostream &OS, const std::string &Banner = "");
>
> - PreservedAnalyses run(Loop &L);
> + PreservedAnalyses run(Loop &L, AnalysisManager<Loop> &);
> };
>
> } // End llvm namespace
>
> Modified: llvm/trunk/include/llvm/Analysis/PostDominators.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/PostDominators.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/PostDominators.h (original)
> +++ llvm/trunk/include/llvm/Analysis/PostDominators.h Thu Jun 16 19:11:01 2016
> @@ -48,7 +48,7 @@ public:
>
> /// \brief Run the analysis pass over a function and produce a post dominator
> /// tree.
> - PostDominatorTree run(Function &F);
> + PostDominatorTree run(Function &F, FunctionAnalysisManager &);
> };
>
> /// \brief Printer pass for the \c PostDominatorTree.
>
> Modified: llvm/trunk/include/llvm/Analysis/ProfileSummaryInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/ProfileSummaryInfo.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/ProfileSummaryInfo.h (original)
> +++ llvm/trunk/include/llvm/Analysis/ProfileSummaryInfo.h Thu Jun 16 19:11:01 2016
> @@ -91,7 +91,7 @@ public:
> return *this;
> }
>
> - Result run(Module &M);
> + Result run(Module &M, ModuleAnalysisManager &);
>
> private:
> friend AnalysisInfoMixin<ProfileSummaryAnalysis>;
>
> Modified: llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h (original)
> +++ llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h Thu Jun 16 19:11:01 2016
> @@ -304,8 +304,8 @@ public:
> return *this;
> }
>
> - TargetLibraryInfo run(Module &M);
> - TargetLibraryInfo run(Function &F);
> + TargetLibraryInfo run(Module &M, ModuleAnalysisManager &);
> + TargetLibraryInfo run(Function &F, FunctionAnalysisManager &);
>
> private:
> friend AnalysisInfoMixin<TargetLibraryAnalysis>;
>
> Modified: llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h (original)
> +++ llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h Thu Jun 16 19:11:01 2016
> @@ -995,7 +995,7 @@ public:
> return *this;
> }
>
> - Result run(const Function &F);
> + Result run(const Function &F, AnalysisManager<Function> &);
>
> private:
> friend AnalysisInfoMixin<TargetIRAnalysis>;
>
> Modified: llvm/trunk/include/llvm/Bitcode/BitcodeWriterPass.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/BitcodeWriterPass.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Bitcode/BitcodeWriterPass.h (original)
> +++ llvm/trunk/include/llvm/Bitcode/BitcodeWriterPass.h Thu Jun 16 19:11:01 2016
> @@ -16,12 +16,12 @@
> #define LLVM_BITCODE_BITCODEWRITERPASS_H
>
> #include "llvm/ADT/StringRef.h"
> +#include "llvm/IR/PassManager.h"
>
> namespace llvm {
> class Module;
> class ModulePass;
> class raw_ostream;
> -class PreservedAnalyses;
>
> /// \brief Create and return a pass that writes the module to the specified
> /// ostream. Note that this pass is designed for use with the legacy pass
> @@ -67,7 +67,7 @@ public:
>
> /// \brief Run the bitcode writer pass, and output the module to the selected
> /// output stream.
> - PreservedAnalyses run(Module &M);
> + PreservedAnalyses run(Module &M, ModuleAnalysisManager &);
>
> static StringRef name() { return "BitcodeWriterPass"; }
> };
>
> Modified: llvm/trunk/include/llvm/IR/Dominators.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Dominators.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/Dominators.h (original)
> +++ llvm/trunk/include/llvm/IR/Dominators.h Thu Jun 16 19:11:01 2016
> @@ -187,7 +187,7 @@ public:
> typedef DominatorTree Result;
>
> /// \brief Run the analysis pass over a function and produce a dominator tree.
> - DominatorTree run(Function &F);
> + DominatorTree run(Function &F, AnalysisManager<Function> &);
> };
>
> /// \brief Printer pass for the \c DominatorTree.
>
> Modified: llvm/trunk/include/llvm/IR/IRPrintingPasses.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/IRPrintingPasses.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/IRPrintingPasses.h (original)
> +++ llvm/trunk/include/llvm/IR/IRPrintingPasses.h Thu Jun 16 19:11:01 2016
> @@ -30,6 +30,7 @@ class Module;
> class ModulePass;
> class PreservedAnalyses;
> class raw_ostream;
> +template <typename IRUnitT> class AnalysisManager;
>
> /// \brief Create and return a pass that writes the module to the specified
> /// \c raw_ostream.
> @@ -67,7 +68,7 @@ public:
> PrintModulePass(raw_ostream &OS, const std::string &Banner = "",
> bool ShouldPreserveUseListOrder = false);
>
> - PreservedAnalyses run(Module &M);
> + PreservedAnalyses run(Module &M, AnalysisManager<Module> &);
>
> static StringRef name() { return "PrintModulePass"; }
> };
> @@ -84,7 +85,7 @@ public:
> PrintFunctionPass();
> PrintFunctionPass(raw_ostream &OS, const std::string &Banner = "");
>
> - PreservedAnalyses run(Function &F);
> + PreservedAnalyses run(Function &F, AnalysisManager<Function> &);
>
> static StringRef name() { return "PrintFunctionPass"; }
> };
>
> Modified: llvm/trunk/include/llvm/IR/PassManager.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/PassManager.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/PassManager.h (original)
> +++ llvm/trunk/include/llvm/IR/PassManager.h Thu Jun 16 19:11:01 2016
> @@ -750,7 +750,7 @@ public:
> /// In debug builds, it will also assert that the analysis manager is empty
> /// as no queries should arrive at the function analysis manager prior to
> /// this analysis being requested.
> - Result run(IRUnitT &IR) { return Result(*AM); }
> + Result run(IRUnitT &IR, AnalysisManager<IRUnitT> &) { return Result(*AM); }
>
> private:
> friend AnalysisInfoMixin<
> @@ -823,7 +823,7 @@ public:
> /// \brief Run the analysis pass and create our proxy result object.
> /// Nothing to see here, it just forwards the \c AM reference into the
> /// result.
> - Result run(IRUnitT &) { return Result(*AM); }
> + Result run(IRUnitT &, AnalysisManager<IRUnitT> &) { return Result(*AM); }
>
> private:
> friend AnalysisInfoMixin<
> @@ -981,7 +981,8 @@ struct InvalidateAnalysisPass
> /// analysis passes to be re-run to produce fresh results if any are needed.
> struct InvalidateAllAnalysesPass : PassInfoMixin<InvalidateAllAnalysesPass> {
> /// \brief Run this pass over some unit of IR.
> - template <typename IRUnitT> PreservedAnalyses run(IRUnitT &Arg) {
> + template <typename IRUnitT>
> + PreservedAnalyses run(IRUnitT &, AnalysisManager<IRUnitT> &) {
> return PreservedAnalyses::none();
> }
> };
>
> Modified: llvm/trunk/include/llvm/IR/PassManagerInternal.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/PassManagerInternal.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/PassManagerInternal.h (original)
> +++ llvm/trunk/include/llvm/IR/PassManagerInternal.h Thu Jun 16 19:11:01 2016
> @@ -46,42 +46,14 @@ template <typename IRUnitT> struct PassC
> virtual StringRef name() = 0;
> };
>
> -/// \brief SFINAE metafunction for computing whether \c PassT has a run method
> -/// accepting an \c AnalysisManager<IRUnitT>.
> -template <typename IRUnitT, typename PassT, typename ResultT>
> -class PassRunAcceptsAnalysisManager {
> - typedef char SmallType;
> - struct BigType {
> - char a, b;
> - };
> -
> - template <typename T, ResultT (T::*)(IRUnitT &, AnalysisManager<IRUnitT> &)>
> - struct Checker;
> -
> - template <typename T> static SmallType f(Checker<T, &T::run> *);
> - template <typename T> static BigType f(...);
> -
> -public:
> - enum { Value = sizeof(f<PassT>(nullptr)) == sizeof(SmallType) };
> -};
> -
> /// \brief A template wrapper used to implement the polymorphic API.
> ///
> /// Can be instantiated for any object which provides a \c run method accepting
> -/// an \c IRUnitT. It requires the pass to be a copyable object. When the
> -/// \c run method also accepts an \c AnalysisManager<IRUnitT>*, we pass it
> -/// along.
> +/// an \c IRUnitT& and an \c AnalysisManager<IRUnit>&. It requires the pass to
> +/// be a copyable object. When the
> template <typename IRUnitT, typename PassT,
> - typename PreservedAnalysesT = PreservedAnalyses,
> - bool AcceptsAnalysisManager = PassRunAcceptsAnalysisManager<
> - IRUnitT, PassT, PreservedAnalysesT>::Value>
> -struct PassModel;
> -
> -/// \brief Specialization of \c PassModel for passes that accept an analyis
> -/// manager.
> -template <typename IRUnitT, typename PassT, typename PreservedAnalysesT>
> -struct PassModel<IRUnitT, PassT, PreservedAnalysesT, true>
> - : PassConcept<IRUnitT> {
> + typename PreservedAnalysesT = PreservedAnalyses>
> +struct PassModel : PassConcept<IRUnitT> {
> explicit PassModel(PassT Pass) : Pass(std::move(Pass)) {}
> // We have to explicitly define all the special member functions because MSVC
> // refuses to generate them.
> @@ -103,32 +75,6 @@ struct PassModel<IRUnitT, PassT, Preserv
> PassT Pass;
> };
>
> -/// \brief Specialization of \c PassModel for passes that accept an analyis
> -/// manager.
> -template <typename IRUnitT, typename PassT, typename PreservedAnalysesT>
> -struct PassModel<IRUnitT, PassT, PreservedAnalysesT, false>
> - : PassConcept<IRUnitT> {
> - explicit PassModel(PassT Pass) : Pass(std::move(Pass)) {}
> - // We have to explicitly define all the special member functions because MSVC
> - // refuses to generate them.
> - PassModel(const PassModel &Arg) : Pass(Arg.Pass) {}
> - PassModel(PassModel &&Arg) : Pass(std::move(Arg.Pass)) {}
> - friend void swap(PassModel &LHS, PassModel &RHS) {
> - using std::swap;
> - swap(LHS.Pass, RHS.Pass);
> - }
> - PassModel &operator=(PassModel RHS) {
> - swap(*this, RHS);
> - return *this;
> - }
> -
> - PreservedAnalysesT run(IRUnitT &IR, AnalysisManager<IRUnitT> &) override {
> - return Pass.run(IR);
> - }
> - StringRef name() override { return PassT::name(); }
> - PassT Pass;
> -};
> -
> /// \brief Abstract concept of an analysis result.
> ///
> /// This concept is parameterized over the IR unit that this result pertains
> @@ -261,17 +207,10 @@ template <typename IRUnitT> struct Analy
> /// \brief Wrapper to model the analysis pass concept.
> ///
> /// Can wrap any type which implements a suitable \c run method. The method
> -/// must accept the IRUnitT as an argument and produce an object which can be
> -/// wrapped in a \c AnalysisResultModel.
> -template <typename IRUnitT, typename PassT,
> - bool AcceptsAnalysisManager = PassRunAcceptsAnalysisManager<
> - IRUnitT, PassT, typename PassT::Result>::Value>
> -struct AnalysisPassModel;
> -
> -/// \brief Specialization of \c AnalysisPassModel which passes an
> -/// \c AnalysisManager to PassT's run method.
> +/// must accept an \c IRUnitT& and an \c AnalysisManager<IRUnitT>& as arguments
> +/// and produce an object which can be wrapped in a \c AnalysisResultModel.
> template <typename IRUnitT, typename PassT>
> -struct AnalysisPassModel<IRUnitT, PassT, true> : AnalysisPassConcept<IRUnitT> {
> +struct AnalysisPassModel : AnalysisPassConcept<IRUnitT> {
> explicit AnalysisPassModel(PassT Pass) : Pass(std::move(Pass)) {}
> // We have to explicitly define all the special member functions because MSVC
> // refuses to generate them.
> @@ -299,44 +238,6 @@ struct AnalysisPassModel<IRUnitT, PassT,
> }
>
> /// \brief The model delegates to a static \c PassT::name method.
> - ///
> - /// The returned string ref must point to constant immutable data!
> - StringRef name() override { return PassT::name(); }
> -
> - PassT Pass;
> -};
> -
> -/// \brief Specialization of \c AnalysisPassModel which does not pass an
> -/// \c AnalysisManager to PassT's run method.
> -template <typename IRUnitT, typename PassT>
> -struct AnalysisPassModel<IRUnitT, PassT, false> : AnalysisPassConcept<IRUnitT> {
> - explicit AnalysisPassModel(PassT Pass) : Pass(std::move(Pass)) {}
> - // We have to explicitly define all the special member functions because MSVC
> - // refuses to generate them.
> - AnalysisPassModel(const AnalysisPassModel &Arg) : Pass(Arg.Pass) {}
> - AnalysisPassModel(AnalysisPassModel &&Arg) : Pass(std::move(Arg.Pass)) {}
> - friend void swap(AnalysisPassModel &LHS, AnalysisPassModel &RHS) {
> - using std::swap;
> - swap(LHS.Pass, RHS.Pass);
> - }
> - AnalysisPassModel &operator=(AnalysisPassModel RHS) {
> - swap(*this, RHS);
> - return *this;
> - }
> -
> - // FIXME: Replace PassT::Result with type traits when we use C++11.
> - typedef AnalysisResultModel<IRUnitT, PassT, typename PassT::Result>
> - ResultModelT;
> -
> - /// \brief The model delegates to the \c PassT::run method.
> - ///
> - /// The return is wrapped in an \c AnalysisResultModel.
> - std::unique_ptr<AnalysisResultConcept<IRUnitT>>
> - run(IRUnitT &IR, AnalysisManager<IRUnitT> &) override {
> - return make_unique<ResultModelT>(Pass.run(IR));
> - }
> -
> - /// \brief The model delegates to a static \c PassT::name method.
> ///
> /// The returned string ref must point to constant immutable data!
> StringRef name() override { return PassT::name(); }
>
> Modified: llvm/trunk/include/llvm/IR/Verifier.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Verifier.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/Verifier.h (original)
> +++ llvm/trunk/include/llvm/IR/Verifier.h Thu Jun 16 19:11:01 2016
> @@ -65,8 +65,8 @@ public:
> bool IRBroken, DebugInfoBroken;
> };
> static void *ID() { return (void *)&PassID; }
> - Result run(Module &M);
> - Result run(Function &F);
> + Result run(Module &M, ModuleAnalysisManager &);
> + Result run(Function &F, FunctionAnalysisManager &);
> };
>
> /// Check a module for errors, but report debug info errors separately.
>
> Modified: llvm/trunk/include/llvm/Transforms/IPO/ConstantMerge.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/IPO/ConstantMerge.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/IPO/ConstantMerge.h (original)
> +++ llvm/trunk/include/llvm/Transforms/IPO/ConstantMerge.h Thu Jun 16 19:11:01 2016
> @@ -28,7 +28,7 @@ namespace llvm {
> /// A pass that merges duplicate global constants into a single constant.
> class ConstantMergePass : public PassInfoMixin<ConstantMergePass> {
> public:
> - PreservedAnalyses run(Module &M);
> + PreservedAnalyses run(Module &M, ModuleAnalysisManager &);
> };
> }
>
>
> Modified: llvm/trunk/include/llvm/Transforms/IPO/DeadArgumentElimination.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/IPO/DeadArgumentElimination.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/IPO/DeadArgumentElimination.h (original)
> +++ llvm/trunk/include/llvm/Transforms/IPO/DeadArgumentElimination.h Thu Jun 16 19:11:01 2016
> @@ -110,7 +110,7 @@ public:
> public:
> DeadArgumentEliminationPass(bool ShouldHackArguments_ = false)
> : ShouldHackArguments(ShouldHackArguments_) {}
> - PreservedAnalyses run(Module &M);
> + PreservedAnalyses run(Module &M, ModuleAnalysisManager &);
>
> private:
> Liveness MarkIfNotLive(RetOrArg Use, UseVector &MaybeLiveUses);
>
> Modified: llvm/trunk/include/llvm/Transforms/IPO/ElimAvailExtern.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/IPO/ElimAvailExtern.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/IPO/ElimAvailExtern.h (original)
> +++ llvm/trunk/include/llvm/Transforms/IPO/ElimAvailExtern.h Thu Jun 16 19:11:01 2016
> @@ -24,7 +24,7 @@ namespace llvm {
> class EliminateAvailableExternallyPass
> : public PassInfoMixin<EliminateAvailableExternallyPass> {
> public:
> - PreservedAnalyses run(Module &M);
> + PreservedAnalyses run(Module &M, ModuleAnalysisManager &);
> };
> }
>
>
> Modified: llvm/trunk/include/llvm/Transforms/IPO/ForceFunctionAttrs.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/IPO/ForceFunctionAttrs.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/IPO/ForceFunctionAttrs.h (original)
> +++ llvm/trunk/include/llvm/Transforms/IPO/ForceFunctionAttrs.h Thu Jun 16 19:11:01 2016
> @@ -22,7 +22,7 @@ namespace llvm {
> /// Pass which forces specific function attributes into the IR, primarily as
> /// a debugging tool.
> struct ForceFunctionAttrsPass : PassInfoMixin<ForceFunctionAttrsPass> {
> - PreservedAnalyses run(Module &M);
> + PreservedAnalyses run(Module &M, ModuleAnalysisManager &);
> };
>
> /// Create a legacy pass manager instance of a pass to force function attrs.
>
> Modified: llvm/trunk/include/llvm/Transforms/IPO/GlobalDCE.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/IPO/GlobalDCE.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/IPO/GlobalDCE.h (original)
> +++ llvm/trunk/include/llvm/Transforms/IPO/GlobalDCE.h Thu Jun 16 19:11:01 2016
> @@ -27,7 +27,7 @@ namespace llvm {
> /// Pass to remove unused function declarations.
> class GlobalDCEPass : public PassInfoMixin<GlobalDCEPass> {
> public:
> - PreservedAnalyses run(Module &M);
> + PreservedAnalyses run(Module &M, ModuleAnalysisManager &);
>
> private:
> SmallPtrSet<GlobalValue*, 32> AliveGlobals;
>
> Modified: llvm/trunk/include/llvm/Transforms/IPO/StripDeadPrototypes.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/IPO/StripDeadPrototypes.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/IPO/StripDeadPrototypes.h (original)
> +++ llvm/trunk/include/llvm/Transforms/IPO/StripDeadPrototypes.h Thu Jun 16 19:11:01 2016
> @@ -24,7 +24,7 @@ namespace llvm {
>
> /// Pass to remove unused function declarations.
> struct StripDeadPrototypesPass : PassInfoMixin<StripDeadPrototypesPass> {
> - PreservedAnalyses run(Module &M);
> + PreservedAnalyses run(Module &M, ModuleAnalysisManager &);
> };
>
> }
>
> Modified: llvm/trunk/include/llvm/Transforms/IPO/WholeProgramDevirt.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/IPO/WholeProgramDevirt.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/IPO/WholeProgramDevirt.h (original)
> +++ llvm/trunk/include/llvm/Transforms/IPO/WholeProgramDevirt.h Thu Jun 16 19:11:01 2016
> @@ -214,7 +214,7 @@ void setAfterReturnValues(MutableArrayRe
> } // end namespace wholeprogramdevirt
>
> struct WholeProgramDevirtPass : public PassInfoMixin<WholeProgramDevirtPass> {
> - PreservedAnalyses run(Module &M);
> + PreservedAnalyses run(Module &M, ModuleAnalysisManager &);
> };
>
> } // end namespace llvm
>
> Modified: llvm/trunk/include/llvm/Transforms/Scalar/ADCE.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar/ADCE.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/Scalar/ADCE.h (original)
> +++ llvm/trunk/include/llvm/Transforms/Scalar/ADCE.h Thu Jun 16 19:11:01 2016
> @@ -29,7 +29,7 @@ namespace llvm {
> /// dead computations that other DCE passes do not catch, particularly involving
> /// loop computations.
> struct ADCEPass : PassInfoMixin<ADCEPass> {
> - PreservedAnalyses run(Function &F);
> + PreservedAnalyses run(Function &F, FunctionAnalysisManager &);
> };
> }
>
>
> Modified: llvm/trunk/include/llvm/Transforms/Scalar/LowerAtomic.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar/LowerAtomic.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/Scalar/LowerAtomic.h (original)
> +++ llvm/trunk/include/llvm/Transforms/Scalar/LowerAtomic.h Thu Jun 16 19:11:01 2016
> @@ -22,7 +22,7 @@ namespace llvm {
> /// A pass that lowers atomic intrinsic into non-atomic intrinsics.
> class LowerAtomicPass : public PassInfoMixin<LowerAtomicPass> {
> public:
> - PreservedAnalyses run(Function &F);
> + PreservedAnalyses run(Function &F, FunctionAnalysisManager &);
> };
> }
>
>
> Modified: llvm/trunk/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h (original)
> +++ llvm/trunk/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h Thu Jun 16 19:11:01 2016
> @@ -29,7 +29,7 @@ struct LowerExpectIntrinsicPass : PassIn
> /// of the probabilities and frequencies of the CFG. After running this pass,
> /// no more expect intrinsics remain, allowing the rest of the optimizer to
> /// ignore them.
> - PreservedAnalyses run(Function &F);
> + PreservedAnalyses run(Function &F, FunctionAnalysisManager &);
> };
>
> }
>
> Modified: llvm/trunk/include/llvm/Transforms/Scalar/Reassociate.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar/Reassociate.h?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/Scalar/Reassociate.h (original)
> +++ llvm/trunk/include/llvm/Transforms/Scalar/Reassociate.h Thu Jun 16 19:11:01 2016
> @@ -62,7 +62,7 @@ class ReassociatePass : public PassInfoM
> bool MadeChange;
>
> public:
> - PreservedAnalyses run(Function &F);
> + PreservedAnalyses run(Function &F, FunctionAnalysisManager &);
>
> private:
> void BuildRankMap(Function &F, ReversePostOrderTraversal<Function *> &RPOT);
>
> Modified: llvm/trunk/lib/Analysis/LoopInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopInfo.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Analysis/LoopInfo.cpp (original)
> +++ llvm/trunk/lib/Analysis/LoopInfo.cpp Thu Jun 16 19:11:01 2016
> @@ -670,7 +670,7 @@ PrintLoopPass::PrintLoopPass() : OS(dbgs
> PrintLoopPass::PrintLoopPass(raw_ostream &OS, const std::string &Banner)
> : OS(OS), Banner(Banner) {}
>
> -PreservedAnalyses PrintLoopPass::run(Loop &L) {
> +PreservedAnalyses PrintLoopPass::run(Loop &L, AnalysisManager<Loop> &) {
> OS << Banner;
> for (auto *Block : L.blocks())
> if (Block)
>
> Modified: llvm/trunk/lib/Analysis/LoopPass.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopPass.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Analysis/LoopPass.cpp (original)
> +++ llvm/trunk/lib/Analysis/LoopPass.cpp Thu Jun 16 19:11:01 2016
> @@ -46,8 +46,10 @@ public:
> auto BBI = find_if(L->blocks().begin(), L->blocks().end(),
> [](BasicBlock *BB) { return BB; });
> if (BBI != L->blocks().end() &&
> - isFunctionInPrintList((*BBI)->getParent()->getName()))
> - P.run(*L);
> + isFunctionInPrintList((*BBI)->getParent()->getName())) {
> + AnalysisManager<Loop> DummyLAM;
> + P.run(*L, DummyLAM);
> + }
> return false;
> }
> };
>
> Modified: llvm/trunk/lib/Analysis/PostDominators.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/PostDominators.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Analysis/PostDominators.cpp (original)
> +++ llvm/trunk/lib/Analysis/PostDominators.cpp Thu Jun 16 19:11:01 2016
> @@ -46,7 +46,8 @@ FunctionPass* llvm::createPostDomTree()
>
> char PostDominatorTreeAnalysis::PassID;
>
> -PostDominatorTree PostDominatorTreeAnalysis::run(Function &F) {
> +PostDominatorTree PostDominatorTreeAnalysis::run(Function &F,
> + FunctionAnalysisManager &) {
> PostDominatorTree PDT;
> PDT.recalculate(F);
> return PDT;
>
> Modified: llvm/trunk/lib/Analysis/ProfileSummaryInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ProfileSummaryInfo.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Analysis/ProfileSummaryInfo.cpp (original)
> +++ llvm/trunk/lib/Analysis/ProfileSummaryInfo.cpp Thu Jun 16 19:11:01 2016
> @@ -140,7 +140,8 @@ ProfileSummaryInfoWrapperPass::ProfileSu
> }
>
> char ProfileSummaryAnalysis::PassID;
> -ProfileSummaryInfo ProfileSummaryAnalysis::run(Module &M) {
> +ProfileSummaryInfo ProfileSummaryAnalysis::run(Module &M,
> + ModuleAnalysisManager &) {
> return ProfileSummaryInfo(M);
> }
>
>
> Modified: llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp (original)
> +++ llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp Thu Jun 16 19:11:01 2016
> @@ -1127,14 +1127,16 @@ StringRef TargetLibraryInfoImpl::getScal
> return I->ScalarFnName;
> }
>
> -TargetLibraryInfo TargetLibraryAnalysis::run(Module &M) {
> +TargetLibraryInfo TargetLibraryAnalysis::run(Module &M,
> + ModuleAnalysisManager &) {
> if (PresetInfoImpl)
> return TargetLibraryInfo(*PresetInfoImpl);
>
> return TargetLibraryInfo(lookupInfoImpl(Triple(M.getTargetTriple())));
> }
>
> -TargetLibraryInfo TargetLibraryAnalysis::run(Function &F) {
> +TargetLibraryInfo TargetLibraryAnalysis::run(Function &F,
> + FunctionAnalysisManager &) {
> if (PresetInfoImpl)
> return TargetLibraryInfo(*PresetInfoImpl);
>
>
> Modified: llvm/trunk/lib/Analysis/TargetTransformInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/TargetTransformInfo.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Analysis/TargetTransformInfo.cpp (original)
> +++ llvm/trunk/lib/Analysis/TargetTransformInfo.cpp Thu Jun 16 19:11:01 2016
> @@ -404,7 +404,8 @@ TargetIRAnalysis::TargetIRAnalysis(
> std::function<Result(const Function &)> TTICallback)
> : TTICallback(std::move(TTICallback)) {}
>
> -TargetIRAnalysis::Result TargetIRAnalysis::run(const Function &F) {
> +TargetIRAnalysis::Result TargetIRAnalysis::run(const Function &F,
> + AnalysisManager<Function> &) {
> return TTICallback(F);
> }
>
> @@ -435,7 +436,8 @@ TargetTransformInfoWrapperPass::TargetTr
> }
>
> TargetTransformInfo &TargetTransformInfoWrapperPass::getTTI(const Function &F) {
> - TTI = TIRA.run(F);
> + AnalysisManager<Function> DummyFAM;
> + TTI = TIRA.run(F, DummyFAM);
> return *TTI;
> }
>
>
> Modified: llvm/trunk/lib/Bitcode/Writer/BitcodeWriterPass.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/BitcodeWriterPass.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Bitcode/Writer/BitcodeWriterPass.cpp (original)
> +++ llvm/trunk/lib/Bitcode/Writer/BitcodeWriterPass.cpp Thu Jun 16 19:11:01 2016
> @@ -19,7 +19,7 @@
> #include "llvm/Pass.h"
> using namespace llvm;
>
> -PreservedAnalyses BitcodeWriterPass::run(Module &M) {
> +PreservedAnalyses BitcodeWriterPass::run(Module &M, ModuleAnalysisManager &) {
> std::unique_ptr<ModuleSummaryIndex> Index;
> if (EmitSummaryIndex)
> Index = ModuleSummaryIndexBuilder(&M).takeIndex();
>
> Modified: llvm/trunk/lib/IR/Dominators.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Dominators.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/IR/Dominators.cpp (original)
> +++ llvm/trunk/lib/IR/Dominators.cpp Thu Jun 16 19:11:01 2016
> @@ -300,7 +300,8 @@ void DominatorTree::verifyDomTree() cons
> //
> //===----------------------------------------------------------------------===//
>
> -DominatorTree DominatorTreeAnalysis::run(Function &F) {
> +DominatorTree DominatorTreeAnalysis::run(Function &F,
> + AnalysisManager<Function> &) {
> DominatorTree DT;
> DT.recalculate(F);
> return DT;
>
> Modified: llvm/trunk/lib/IR/IRPrintingPasses.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/IRPrintingPasses.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/IR/IRPrintingPasses.cpp (original)
> +++ llvm/trunk/lib/IR/IRPrintingPasses.cpp Thu Jun 16 19:11:01 2016
> @@ -26,7 +26,7 @@ PrintModulePass::PrintModulePass(raw_ost
> : OS(OS), Banner(Banner),
> ShouldPreserveUseListOrder(ShouldPreserveUseListOrder) {}
>
> -PreservedAnalyses PrintModulePass::run(Module &M) {
> +PreservedAnalyses PrintModulePass::run(Module &M, AnalysisManager<Module> &) {
> OS << Banner;
> if (llvm::isFunctionInPrintList("*"))
> M.print(OS, nullptr, ShouldPreserveUseListOrder);
> @@ -42,7 +42,8 @@ PrintFunctionPass::PrintFunctionPass() :
> PrintFunctionPass::PrintFunctionPass(raw_ostream &OS, const std::string &Banner)
> : OS(OS), Banner(Banner) {}
>
> -PreservedAnalyses PrintFunctionPass::run(Function &F) {
> +PreservedAnalyses PrintFunctionPass::run(Function &F,
> + AnalysisManager<Function> &) {
> if (isFunctionInPrintList(F.getName()))
> OS << Banner << static_cast<Value &>(F);
> return PreservedAnalyses::all();
> @@ -61,7 +62,8 @@ public:
> : ModulePass(ID), P(OS, Banner, ShouldPreserveUseListOrder) {}
>
> bool runOnModule(Module &M) override {
> - P.run(M);
> + ModuleAnalysisManager DummyMAM;
> + P.run(M, DummyMAM);
> return false;
> }
>
> @@ -81,7 +83,8 @@ public:
>
> // This pass just prints a banner followed by the function as it's processed.
> bool runOnFunction(Function &F) override {
> - P.run(F);
> + FunctionAnalysisManager DummyFAM;
> + P.run(F, DummyFAM);
> return false;
> }
>
>
> Modified: llvm/trunk/lib/IR/Verifier.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Verifier.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/IR/Verifier.cpp (original)
> +++ llvm/trunk/lib/IR/Verifier.cpp Thu Jun 16 19:11:01 2016
> @@ -4512,13 +4512,15 @@ FunctionPass *llvm::createVerifierPass(b
> }
>
> char VerifierAnalysis::PassID;
> -VerifierAnalysis::Result VerifierAnalysis::run(Module &M) {
> +VerifierAnalysis::Result VerifierAnalysis::run(Module &M,
> + ModuleAnalysisManager &) {
> Result Res;
> Res.IRBroken = llvm::verifyModule(M, &dbgs(), &Res.DebugInfoBroken);
> return Res;
> }
>
> -VerifierAnalysis::Result VerifierAnalysis::run(Function &F) {
> +VerifierAnalysis::Result VerifierAnalysis::run(Function &F,
> + FunctionAnalysisManager &) {
> return { llvm::verifyFunction(F, &dbgs()), false };
> }
>
>
> Modified: llvm/trunk/lib/Passes/PassBuilder.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassBuilder.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Passes/PassBuilder.cpp (original)
> +++ llvm/trunk/lib/Passes/PassBuilder.cpp Thu Jun 16 19:11:01 2016
> @@ -105,7 +105,9 @@ namespace {
>
> /// \brief No-op module pass which does nothing.
> struct NoOpModulePass {
> - PreservedAnalyses run(Module &M) { return PreservedAnalyses::all(); }
> + PreservedAnalyses run(Module &M, AnalysisManager<Module> &) {
> + return PreservedAnalyses::all();
> + }
> static StringRef name() { return "NoOpModulePass"; }
> };
>
> @@ -116,13 +118,14 @@ class NoOpModuleAnalysis : public Analys
>
> public:
> struct Result {};
> - Result run(Module &) { return Result(); }
> + Result run(Module &, AnalysisManager<Module> &) { return Result(); }
> static StringRef name() { return "NoOpModuleAnalysis"; }
> };
>
> /// \brief No-op CGSCC pass which does nothing.
> struct NoOpCGSCCPass {
> - PreservedAnalyses run(LazyCallGraph::SCC &C) {
> + PreservedAnalyses run(LazyCallGraph::SCC &C,
> + AnalysisManager<LazyCallGraph::SCC> &) {
> return PreservedAnalyses::all();
> }
> static StringRef name() { return "NoOpCGSCCPass"; }
> @@ -135,13 +138,17 @@ class NoOpCGSCCAnalysis : public Analysi
>
> public:
> struct Result {};
> - Result run(LazyCallGraph::SCC &) { return Result(); }
> + Result run(LazyCallGraph::SCC &, AnalysisManager<LazyCallGraph::SCC> &) {
> + return Result();
> + }
> static StringRef name() { return "NoOpCGSCCAnalysis"; }
> };
>
> /// \brief No-op function pass which does nothing.
> struct NoOpFunctionPass {
> - PreservedAnalyses run(Function &F) { return PreservedAnalyses::all(); }
> + PreservedAnalyses run(Function &F, AnalysisManager<Function> &) {
> + return PreservedAnalyses::all();
> + }
> static StringRef name() { return "NoOpFunctionPass"; }
> };
>
> @@ -152,13 +159,15 @@ class NoOpFunctionAnalysis : public Anal
>
> public:
> struct Result {};
> - Result run(Function &) { return Result(); }
> + Result run(Function &, AnalysisManager<Function> &) { return Result(); }
> static StringRef name() { return "NoOpFunctionAnalysis"; }
> };
>
> /// \brief No-op loop pass which does nothing.
> struct NoOpLoopPass {
> - PreservedAnalyses run(Loop &L) { return PreservedAnalyses::all(); }
> + PreservedAnalyses run(Loop &L, AnalysisManager<Loop> &) {
> + return PreservedAnalyses::all();
> + }
> static StringRef name() { return "NoOpLoopPass"; }
> };
>
> @@ -169,7 +178,7 @@ class NoOpLoopAnalysis : public Analysis
>
> public:
> struct Result {};
> - Result run(Loop &) { return Result(); }
> + Result run(Loop &, AnalysisManager<Loop> &) { return Result(); }
> static StringRef name() { return "NoOpLoopAnalysis"; }
> };
>
>
> Modified: llvm/trunk/lib/Transforms/IPO/ConstantMerge.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/ConstantMerge.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/ConstantMerge.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/ConstantMerge.cpp Thu Jun 16 19:11:01 2016
> @@ -192,7 +192,7 @@ static bool mergeConstants(Module &M) {
> }
> }
>
> -PreservedAnalyses ConstantMergePass::run(Module &M) {
> +PreservedAnalyses ConstantMergePass::run(Module &M, ModuleAnalysisManager &) {
> if (!mergeConstants(M))
> return PreservedAnalyses::all();
> return PreservedAnalyses::none();
>
> Modified: llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/DeadArgumentElimination.cpp Thu Jun 16 19:11:01 2016
> @@ -64,7 +64,8 @@ namespace {
> if (skipModule(M))
> return false;
> DeadArgumentEliminationPass DAEP(ShouldHackArguments());
> - PreservedAnalyses PA = DAEP.run(M);
> + ModuleAnalysisManager DummyMAM;
> + PreservedAnalyses PA = DAEP.run(M, DummyMAM);
> return !PA.areAllPreserved();
> }
>
> @@ -1029,7 +1030,8 @@ bool DeadArgumentEliminationPass::Remove
> return true;
> }
>
> -PreservedAnalyses DeadArgumentEliminationPass::run(Module &M) {
> +PreservedAnalyses DeadArgumentEliminationPass::run(Module &M,
> + ModuleAnalysisManager &) {
> bool Changed = false;
>
> // First pass: Do a simple check to see if any functions can have their "..."
>
> Modified: llvm/trunk/lib/Transforms/IPO/ElimAvailExtern.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/ElimAvailExtern.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/ElimAvailExtern.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/ElimAvailExtern.cpp Thu Jun 16 19:11:01 2016
> @@ -61,7 +61,8 @@ static bool eliminateAvailableExternally
> return Changed;
> }
>
> -PreservedAnalyses EliminateAvailableExternallyPass::run(Module &M) {
> +PreservedAnalyses
> +EliminateAvailableExternallyPass::run(Module &M, ModuleAnalysisManager &) {
> if (!eliminateAvailableExternally(M))
> return PreservedAnalyses::all();
> return PreservedAnalyses::none();
>
> Modified: llvm/trunk/lib/Transforms/IPO/ForceFunctionAttrs.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/ForceFunctionAttrs.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/ForceFunctionAttrs.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/ForceFunctionAttrs.cpp Thu Jun 16 19:11:01 2016
> @@ -80,7 +80,8 @@ static void addForcedAttributes(Function
> }
> }
>
> -PreservedAnalyses ForceFunctionAttrsPass::run(Module &M) {
> +PreservedAnalyses ForceFunctionAttrsPass::run(Module &M,
> + ModuleAnalysisManager &) {
> if (ForceAttributes.empty())
> return PreservedAnalyses::all();
>
>
> Modified: llvm/trunk/lib/Transforms/IPO/GlobalDCE.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/GlobalDCE.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/GlobalDCE.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/GlobalDCE.cpp Thu Jun 16 19:11:01 2016
> @@ -50,7 +50,8 @@ namespace {
> if (skipModule(M))
> return false;
>
> - auto PA = Impl.run(M);
> + ModuleAnalysisManager DummyMAM;
> + auto PA = Impl.run(M, DummyMAM);
> return !PA.areAllPreserved();
> }
>
> @@ -77,7 +78,7 @@ static bool isEmptyFunction(Function *F)
> return RI.getReturnValue() == nullptr;
> }
>
> -PreservedAnalyses GlobalDCEPass::run(Module &M) {
> +PreservedAnalyses GlobalDCEPass::run(Module &M, ModuleAnalysisManager &) {
> bool Changed = false;
>
> // Remove empty functions from the global ctors list.
>
> Modified: llvm/trunk/lib/Transforms/IPO/StripDeadPrototypes.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/StripDeadPrototypes.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/StripDeadPrototypes.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/StripDeadPrototypes.cpp Thu Jun 16 19:11:01 2016
> @@ -53,7 +53,8 @@ static bool stripDeadPrototypes(Module &
> return MadeChange;
> }
>
> -PreservedAnalyses StripDeadPrototypesPass::run(Module &M) {
> +PreservedAnalyses StripDeadPrototypesPass::run(Module &M,
> + ModuleAnalysisManager &) {
> if (stripDeadPrototypes(M))
> return PreservedAnalyses::none();
> return PreservedAnalyses::all();
>
> Modified: llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/WholeProgramDevirt.cpp Thu Jun 16 19:11:01 2016
> @@ -280,7 +280,8 @@ ModulePass *llvm::createWholeProgramDevi
> return new WholeProgramDevirt;
> }
>
> -PreservedAnalyses WholeProgramDevirtPass::run(Module &M) {
> +PreservedAnalyses WholeProgramDevirtPass::run(Module &M,
> + ModuleAnalysisManager &) {
> if (!DevirtModule(M).run())
> return PreservedAnalyses::all();
> return PreservedAnalyses::none();
>
> Modified: llvm/trunk/lib/Transforms/Scalar/ADCE.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/ADCE.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/ADCE.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/ADCE.cpp Thu Jun 16 19:11:01 2016
> @@ -145,7 +145,7 @@ static bool aggressiveDCE(Function& F) {
> return !Worklist.empty();
> }
>
> -PreservedAnalyses ADCEPass::run(Function &F) {
> +PreservedAnalyses ADCEPass::run(Function &F, FunctionAnalysisManager &) {
> if (!aggressiveDCE(F))
> return PreservedAnalyses::all();
>
>
> Modified: llvm/trunk/lib/Transforms/Scalar/LowerAtomic.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LowerAtomic.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/LowerAtomic.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/LowerAtomic.cpp Thu Jun 16 19:11:01 2016
> @@ -139,7 +139,7 @@ static bool lowerAtomics(Function &F) {
> return Changed;
> }
>
> -PreservedAnalyses LowerAtomicPass::run(Function &F) {
> +PreservedAnalyses LowerAtomicPass::run(Function &F, FunctionAnalysisManager &) {
> if (lowerAtomics(F))
> return PreservedAnalyses::none();
> return PreservedAnalyses::all();
> @@ -157,7 +157,8 @@ public:
> bool runOnFunction(Function &F) override {
> if (skipFunction(F))
> return false;
> - auto PA = Impl.run(F);
> + FunctionAnalysisManager DummyFAM;
> + auto PA = Impl.run(F, DummyFAM);
> return !PA.areAllPreserved();
> }
>
>
> Modified: llvm/trunk/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp Thu Jun 16 19:11:01 2016
> @@ -170,7 +170,8 @@ static bool lowerExpectIntrinsic(Functio
> return Changed;
> }
>
> -PreservedAnalyses LowerExpectIntrinsicPass::run(Function &F) {
> +PreservedAnalyses LowerExpectIntrinsicPass::run(Function &F,
> + FunctionAnalysisManager &) {
> if (lowerExpectIntrinsic(F))
> return PreservedAnalyses::none();
>
>
> Modified: llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp Thu Jun 16 19:11:01 2016
> @@ -2173,7 +2173,7 @@ void ReassociatePass::ReassociateExpress
> RewriteExprTree(I, Ops);
> }
>
> -PreservedAnalyses ReassociatePass::run(Function &F) {
> +PreservedAnalyses ReassociatePass::run(Function &F, FunctionAnalysisManager &) {
> // Reassociate needs for each instruction to have its operands already
> // processed, so we first perform a RPOT of the basic blocks so that
> // when we process a basic block, all its dominators have been processed
> @@ -2251,7 +2251,8 @@ namespace {
> if (skipFunction(F))
> return false;
>
> - auto PA = Impl.run(F);
> + FunctionAnalysisManager DummyFAM;
> + auto PA = Impl.run(F, DummyFAM);
> return !PA.areAllPreserved();
> }
>
>
> Modified: llvm/trunk/unittests/Analysis/CGSCCPassManagerTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Analysis/CGSCCPassManagerTest.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/unittests/Analysis/CGSCCPassManagerTest.cpp (original)
> +++ llvm/trunk/unittests/Analysis/CGSCCPassManagerTest.cpp Thu Jun 16 19:11:01 2016
> @@ -199,7 +199,7 @@ struct TestSCCPass {
> struct TestFunctionPass {
> TestFunctionPass(int &RunCount) : RunCount(RunCount) {}
>
> - PreservedAnalyses run(Function &M) {
> + PreservedAnalyses run(Function &F, AnalysisManager<Function> &) {
> ++RunCount;
> return PreservedAnalyses::none();
> }
>
> Modified: llvm/trunk/unittests/IR/PassManagerTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/PassManagerTest.cpp?rev=272978&r1=272977&r2=272978&view=diff
> ==============================================================================
> --- llvm/trunk/unittests/IR/PassManagerTest.cpp (original)
> +++ llvm/trunk/unittests/IR/PassManagerTest.cpp Thu Jun 16 19:11:01 2016
> @@ -77,7 +77,7 @@ char TestModuleAnalysis::PassID;
> struct TestModulePass : PassInfoMixin<TestModulePass> {
> TestModulePass(int &RunCount) : RunCount(RunCount) {}
>
> - PreservedAnalyses run(Module &M) {
> + PreservedAnalyses run(Module &M, ModuleAnalysisManager &) {
> ++RunCount;
> return PreservedAnalyses::none();
> }
> @@ -86,7 +86,9 @@ struct TestModulePass : PassInfoMixin<Te
> };
>
> struct TestPreservingModulePass : PassInfoMixin<TestPreservingModulePass> {
> - PreservedAnalyses run(Module &M) { return PreservedAnalyses::all(); }
> + PreservedAnalyses run(Module &M, ModuleAnalysisManager &) {
> + return PreservedAnalyses::all();
> + }
> };
>
> struct TestMinPreservingModulePass
> @@ -145,7 +147,7 @@ struct TestInvalidationFunctionPass
> : PassInfoMixin<TestInvalidationFunctionPass> {
> TestInvalidationFunctionPass(StringRef FunctionName) : Name(FunctionName) {}
>
> - PreservedAnalyses run(Function &F) {
> + PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM) {
> return F.getName() == Name ? PreservedAnalyses::none()
> : PreservedAnalyses::all();
> }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
--
Lerne, wie die Welt wirklich ist,
aber vergiss niemals, wie sie sein sollte.
More information about the llvm-commits
mailing list