[llvm] r262188 - [PM] Appease mingw32's auto-import DLL build with minimal tweaks, with fix for clang.

NAKAMURA Takumi via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 28 09:17:01 PST 2016


Author: chapuni
Date: Sun Feb 28 11:17:00 2016
New Revision: 262188

URL: http://llvm.org/viewvc/llvm-project?rev=262188&view=rev
Log:
[PM] Appease mingw32's auto-import DLL build with minimal tweaks, with fix for clang.

char AnalysisBase::ID should be declared as extern and defined in one module.

Modified:
    llvm/trunk/include/llvm/Analysis/AliasAnalysis.h
    llvm/trunk/include/llvm/Analysis/AssumptionCache.h
    llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h
    llvm/trunk/include/llvm/Analysis/DominanceFrontier.h
    llvm/trunk/include/llvm/Analysis/LazyCallGraph.h
    llvm/trunk/include/llvm/Analysis/LoopInfo.h
    llvm/trunk/include/llvm/Analysis/LoopPassManager.h
    llvm/trunk/include/llvm/Analysis/PostDominators.h
    llvm/trunk/include/llvm/Analysis/RegionInfo.h
    llvm/trunk/include/llvm/Analysis/ScalarEvolution.h
    llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h
    llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h
    llvm/trunk/include/llvm/IR/Dominators.h
    llvm/trunk/include/llvm/IR/PassManager.h
    llvm/trunk/lib/Analysis/AliasAnalysis.cpp
    llvm/trunk/lib/Analysis/AssumptionCache.cpp
    llvm/trunk/lib/Analysis/CGSCCPassManager.cpp
    llvm/trunk/lib/Analysis/DominanceFrontier.cpp
    llvm/trunk/lib/Analysis/LazyCallGraph.cpp
    llvm/trunk/lib/Analysis/LoopInfo.cpp
    llvm/trunk/lib/Analysis/LoopPassManager.cpp
    llvm/trunk/lib/Analysis/PostDominators.cpp
    llvm/trunk/lib/Analysis/RegionInfo.cpp
    llvm/trunk/lib/Analysis/ScalarEvolution.cpp
    llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp
    llvm/trunk/lib/Analysis/TargetTransformInfo.cpp
    llvm/trunk/lib/IR/Dominators.cpp
    llvm/trunk/lib/IR/PassManager.cpp

Modified: llvm/trunk/include/llvm/Analysis/AliasAnalysis.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/AliasAnalysis.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/AliasAnalysis.h (original)
+++ llvm/trunk/include/llvm/Analysis/AliasAnalysis.h Sun Feb 28 11:17:00 2016
@@ -1024,6 +1024,8 @@ private:
   }
 };
 
+extern template class AnalysisBase<AAManager>;
+
 /// A wrapper pass to provide the legacy pass manager access to a suitably
 /// prepared AAResults object.
 class AAResultsWrapperPass : public FunctionPass {

Modified: llvm/trunk/include/llvm/Analysis/AssumptionCache.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/AssumptionCache.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/AssumptionCache.h (original)
+++ llvm/trunk/include/llvm/Analysis/AssumptionCache.h Sun Feb 28 11:17:00 2016
@@ -105,6 +105,8 @@ struct AssumptionAnalysis : AnalysisBase
   AssumptionCache run(Function &F) { return AssumptionCache(F); }
 };
 
+extern template class AnalysisBase<AssumptionAnalysis>;
+
 /// \brief Printer pass for the \c AssumptionAnalysis results.
 class AssumptionPrinterPass : public PassBase<AssumptionPrinterPass> {
   raw_ostream &OS;

Modified: llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h (original)
+++ llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h Sun Feb 28 11:17:00 2016
@@ -48,12 +48,16 @@ extern template class InnerAnalysisManag
 typedef InnerAnalysisManagerProxy<CGSCCAnalysisManager, Module>
     CGSCCAnalysisManagerModuleProxy;
 
+extern template class AnalysisBase<CGSCCAnalysisManagerModuleProxy>;
+
 extern template class OuterAnalysisManagerProxy<ModuleAnalysisManager,
                                                 LazyCallGraph::SCC>;
 /// A proxy from a \c ModuleAnalysisManager to an \c SCC.
 typedef OuterAnalysisManagerProxy<ModuleAnalysisManager, LazyCallGraph::SCC>
     ModuleAnalysisManagerCGSCCProxy;
 
+extern template class AnalysisBase<ModuleAnalysisManagerCGSCCProxy>;
+
 /// \brief The core module pass which does a post-order walk of the SCCs and
 /// runs a CGSCC pass over each one.
 ///
@@ -144,6 +148,8 @@ extern template class InnerAnalysisManag
 typedef InnerAnalysisManagerProxy<FunctionAnalysisManager, LazyCallGraph::SCC>
     FunctionAnalysisManagerCGSCCProxy;
 
+extern template class AnalysisBase<FunctionAnalysisManagerCGSCCProxy>;
+
 extern template class OuterAnalysisManagerProxy<CGSCCAnalysisManager, Function>;
 /// A proxy from a \c CGSCCAnalysisManager to a \c Function.
 typedef OuterAnalysisManagerProxy<CGSCCAnalysisManager, Function>

Modified: llvm/trunk/include/llvm/Analysis/DominanceFrontier.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/DominanceFrontier.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/DominanceFrontier.h (original)
+++ llvm/trunk/include/llvm/Analysis/DominanceFrontier.h Sun Feb 28 11:17:00 2016
@@ -176,6 +176,8 @@ struct DominanceFrontierAnalysis : Analy
   DominanceFrontier run(Function &F, AnalysisManager<Function> *AM);
 };
 
+extern template class AnalysisBase<DominanceFrontierAnalysis>;
+
 /// \brief Printer pass for the \c DominanceFrontier.
 class DominanceFrontierPrinterPass
     : public PassBase<DominanceFrontierPrinterPass> {

Modified: llvm/trunk/include/llvm/Analysis/LazyCallGraph.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LazyCallGraph.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/LazyCallGraph.h (original)
+++ llvm/trunk/include/llvm/Analysis/LazyCallGraph.h Sun Feb 28 11:17:00 2016
@@ -906,6 +906,8 @@ struct LazyCallGraphAnalysis : AnalysisB
   LazyCallGraph run(Module &M) { return LazyCallGraph(M); }
 };
 
+extern template class AnalysisBase<LazyCallGraphAnalysis>;
+
 /// A pass which prints the call graph to a \c raw_ostream.
 ///
 /// This is primarily useful for testing the analysis.

Modified: llvm/trunk/include/llvm/Analysis/LoopInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopInfo.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/LoopInfo.h (original)
+++ llvm/trunk/include/llvm/Analysis/LoopInfo.h Sun Feb 28 11:17:00 2016
@@ -793,6 +793,8 @@ struct LoopAnalysis : AnalysisBase<LoopA
   LoopInfo run(Function &F, AnalysisManager<Function> *AM);
 };
 
+extern template class AnalysisBase<LoopAnalysis>;
+
 /// \brief Printer pass for the \c LoopAnalysis results.
 class LoopPrinterPass : public PassBase<LoopPrinterPass> {
   raw_ostream &OS;

Modified: llvm/trunk/include/llvm/Analysis/LoopPassManager.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopPassManager.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/LoopPassManager.h (original)
+++ llvm/trunk/include/llvm/Analysis/LoopPassManager.h Sun Feb 28 11:17:00 2016
@@ -43,6 +43,8 @@ extern template class InnerAnalysisManag
 typedef InnerAnalysisManagerProxy<LoopAnalysisManager, Function>
     LoopAnalysisManagerFunctionProxy;
 
+extern template class AnalysisBase<LoopAnalysisManagerFunctionProxy>;
+
 extern template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop>;
 /// A proxy from a \c FunctionAnalysisManager to a \c Loop.
 typedef OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop>

Modified: llvm/trunk/include/llvm/Analysis/PostDominators.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/PostDominators.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/PostDominators.h (original)
+++ llvm/trunk/include/llvm/Analysis/PostDominators.h Sun Feb 28 11:17:00 2016
@@ -46,6 +46,8 @@ struct PostDominatorTreeAnalysis : Analy
   PostDominatorTree run(Function &F);
 };
 
+extern template class AnalysisBase<PostDominatorTreeAnalysis>;
+
 /// \brief Printer pass for the \c PostDominatorTree.
 class PostDominatorTreePrinterPass
     : public PassBase<PostDominatorTreePrinterPass> {

Modified: llvm/trunk/include/llvm/Analysis/RegionInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/RegionInfo.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/RegionInfo.h (original)
+++ llvm/trunk/include/llvm/Analysis/RegionInfo.h Sun Feb 28 11:17:00 2016
@@ -929,6 +929,8 @@ struct RegionInfoAnalysis : AnalysisBase
   RegionInfo run(Function &F, AnalysisManager<Function> *AM);
 };
 
+extern template class AnalysisBase<RegionInfoAnalysis>;
+
 /// \brief Printer pass for the \c RegionInfo.
 class RegionInfoPrinterPass : public PassBase<RegionInfoPrinterPass> {
   raw_ostream &OS;

Modified: llvm/trunk/include/llvm/Analysis/ScalarEvolution.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/ScalarEvolution.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/ScalarEvolution.h (original)
+++ llvm/trunk/include/llvm/Analysis/ScalarEvolution.h Sun Feb 28 11:17:00 2016
@@ -1421,6 +1421,8 @@ namespace llvm {
     ScalarEvolution run(Function &F, AnalysisManager<Function> *AM);
   };
 
+  extern template class AnalysisBase<ScalarEvolutionAnalysis>;
+
   /// \brief Printer pass for the \c ScalarEvolutionAnalysis results.
   class ScalarEvolutionPrinterPass
       : public PassBase<ScalarEvolutionPrinterPass> {

Modified: llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h (original)
+++ llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h Sun Feb 28 11:17:00 2016
@@ -299,6 +299,8 @@ private:
   TargetLibraryInfoImpl &lookupInfoImpl(Triple T);
 };
 
+extern template class AnalysisBase<TargetLibraryAnalysis>;
+
 class TargetLibraryInfoWrapperPass : public ImmutablePass {
   TargetLibraryInfoImpl TLIImpl;
   TargetLibraryInfo TLI;

Modified: llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h (original)
+++ llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h Sun Feb 28 11:17:00 2016
@@ -938,6 +938,8 @@ private:
   static Result getDefaultTTI(const Function &F);
 };
 
+extern template class AnalysisBase<TargetIRAnalysis>;
+
 /// \brief Wrapper pass for TargetTransformInfo.
 ///
 /// This pass can be constructed from a TTI object which it stores internally

Modified: llvm/trunk/include/llvm/IR/Dominators.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Dominators.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/Dominators.h (original)
+++ llvm/trunk/include/llvm/IR/Dominators.h Sun Feb 28 11:17:00 2016
@@ -190,6 +190,8 @@ struct DominatorTreeAnalysis : AnalysisB
   DominatorTree run(Function &F);
 };
 
+extern template class AnalysisBase<DominatorTreeAnalysis>;
+
 /// \brief Printer pass for the \c DominatorTree.
 class DominatorTreePrinterPass : public PassBase<DominatorTreePrinterPass> {
   raw_ostream &OS;

Modified: llvm/trunk/include/llvm/IR/PassManager.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/PassManager.h?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/PassManager.h (original)
+++ llvm/trunk/include/llvm/IR/PassManager.h Sun Feb 28 11:17:00 2016
@@ -749,6 +749,8 @@ extern template class InnerAnalysisManag
 typedef InnerAnalysisManagerProxy<FunctionAnalysisManager, Module>
     FunctionAnalysisManagerModuleProxy;
 
+extern template class AnalysisBase<FunctionAnalysisManagerModuleProxy>;
+
 /// \brief A function analysis which acts as a proxy for a module analysis
 /// manager.
 ///

Modified: llvm/trunk/lib/Analysis/AliasAnalysis.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/AliasAnalysis.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/AliasAnalysis.cpp (original)
+++ llvm/trunk/lib/Analysis/AliasAnalysis.cpp Sun Feb 28 11:17:00 2016
@@ -390,6 +390,9 @@ bool AAResults::canInstructionRangeModRe
 // Provide a definition for the root virtual destructor.
 AAResults::Concept::~Concept() {}
 
+// Provide a definition for the static object used to identify passes.
+template class llvm::AnalysisBase<AAManager>;
+
 namespace {
 /// A wrapper pass for external alias analyses. This just squirrels away the
 /// callback used to run any analyses and register their results.

Modified: llvm/trunk/lib/Analysis/AssumptionCache.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/AssumptionCache.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/AssumptionCache.cpp (original)
+++ llvm/trunk/lib/Analysis/AssumptionCache.cpp Sun Feb 28 11:17:00 2016
@@ -74,6 +74,8 @@ void AssumptionCache::registerAssumption
 #endif
 }
 
+template class llvm::AnalysisBase<AssumptionAnalysis>;
+
 PreservedAnalyses AssumptionPrinterPass::run(Function &F,
                                              AnalysisManager<Function> *AM) {
   AssumptionCache &AC = AM->getResult<AssumptionAnalysis>(F);

Modified: llvm/trunk/lib/Analysis/CGSCCPassManager.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/CGSCCPassManager.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/CGSCCPassManager.cpp (original)
+++ llvm/trunk/lib/Analysis/CGSCCPassManager.cpp Sun Feb 28 11:17:00 2016
@@ -18,9 +18,12 @@ namespace llvm {
 template class PassManager<LazyCallGraph::SCC>;
 template class AnalysisManager<LazyCallGraph::SCC>;
 template class InnerAnalysisManagerProxy<CGSCCAnalysisManager, Module>;
+template class AnalysisBase<CGSCCAnalysisManagerModuleProxy>;
 template class OuterAnalysisManagerProxy<ModuleAnalysisManager,
                                          LazyCallGraph::SCC>;
+template class AnalysisBase<ModuleAnalysisManagerCGSCCProxy>;
 template class InnerAnalysisManagerProxy<FunctionAnalysisManager,
                                          LazyCallGraph::SCC>;
+template class AnalysisBase<FunctionAnalysisManagerCGSCCProxy>;
 template class OuterAnalysisManagerProxy<CGSCCAnalysisManager, Function>;
 }

Modified: llvm/trunk/lib/Analysis/DominanceFrontier.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/DominanceFrontier.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/DominanceFrontier.cpp (original)
+++ llvm/trunk/lib/Analysis/DominanceFrontier.cpp Sun Feb 28 11:17:00 2016
@@ -56,6 +56,8 @@ LLVM_DUMP_METHOD void DominanceFrontierW
 }
 #endif
 
+template class llvm::AnalysisBase<DominanceFrontierAnalysis>;
+
 DominanceFrontier DominanceFrontierAnalysis::run(Function &F,
                                                  FunctionAnalysisManager *AM) {
   DominanceFrontier DF;

Modified: llvm/trunk/lib/Analysis/LazyCallGraph.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LazyCallGraph.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/LazyCallGraph.cpp (original)
+++ llvm/trunk/lib/Analysis/LazyCallGraph.cpp Sun Feb 28 11:17:00 2016
@@ -1499,6 +1499,8 @@ LazyCallGraph::RefSCC *LazyCallGraph::ge
   }
 }
 
+template class llvm::AnalysisBase<LazyCallGraphAnalysis>;
+
 LazyCallGraphPrinterPass::LazyCallGraphPrinterPass(raw_ostream &OS) : OS(OS) {}
 
 static void printNode(raw_ostream &OS, LazyCallGraph::Node &N) {

Modified: llvm/trunk/lib/Analysis/LoopInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopInfo.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/LoopInfo.cpp (original)
+++ llvm/trunk/lib/Analysis/LoopInfo.cpp Sun Feb 28 11:17:00 2016
@@ -641,6 +641,8 @@ void LoopInfo::markAsRemoved(Loop *Unloo
   }
 }
 
+template class llvm::AnalysisBase<LoopAnalysis>;
+
 LoopInfo LoopAnalysis::run(Function &F, AnalysisManager<Function> *AM) {
   // FIXME: Currently we create a LoopInfo from scratch for every function.
   // This may prove to be too wasteful due to deallocating and re-allocating

Modified: llvm/trunk/lib/Analysis/LoopPassManager.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopPassManager.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/LoopPassManager.cpp (original)
+++ llvm/trunk/lib/Analysis/LoopPassManager.cpp Sun Feb 28 11:17:00 2016
@@ -16,5 +16,6 @@ namespace llvm {
 template class PassManager<Loop>;
 template class AnalysisManager<Loop>;
 template class InnerAnalysisManagerProxy<LoopAnalysisManager, Function>;
+template class AnalysisBase<LoopAnalysisManagerFunctionProxy>;
 template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop>;
 }

Modified: llvm/trunk/lib/Analysis/PostDominators.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/PostDominators.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/PostDominators.cpp (original)
+++ llvm/trunk/lib/Analysis/PostDominators.cpp Sun Feb 28 11:17:00 2016
@@ -44,6 +44,8 @@ FunctionPass* llvm::createPostDomTree()
   return new PostDominatorTreeWrapperPass();
 }
 
+template class llvm::AnalysisBase<PostDominatorTreeAnalysis>;
+
 PostDominatorTree PostDominatorTreeAnalysis::run(Function &F) {
   PostDominatorTree PDT;
   PDT.recalculate(F);

Modified: llvm/trunk/lib/Analysis/RegionInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/RegionInfo.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/RegionInfo.cpp (original)
+++ llvm/trunk/lib/Analysis/RegionInfo.cpp Sun Feb 28 11:17:00 2016
@@ -185,6 +185,8 @@ namespace llvm {
 // RegionInfoAnalysis implementation
 //
 
+template class llvm::AnalysisBase<RegionInfoAnalysis>;
+
 RegionInfo RegionInfoAnalysis::run(Function &F, AnalysisManager<Function> *AM) {
   RegionInfo RI;
   auto *DT = &AM->getResult<DominatorTreeAnalysis>(F);

Modified: llvm/trunk/lib/Analysis/ScalarEvolution.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ScalarEvolution.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/ScalarEvolution.cpp (original)
+++ llvm/trunk/lib/Analysis/ScalarEvolution.cpp Sun Feb 28 11:17:00 2016
@@ -9554,6 +9554,8 @@ void ScalarEvolution::verify() const {
   // TODO: Verify more things.
 }
 
+template class llvm::AnalysisBase<ScalarEvolutionAnalysis>;
+
 ScalarEvolution ScalarEvolutionAnalysis::run(Function &F,
                                              AnalysisManager<Function> *AM) {
   return ScalarEvolution(F, AM->getResult<TargetLibraryAnalysis>(F),

Modified: llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp (original)
+++ llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp Sun Feb 28 11:17:00 2016
@@ -636,6 +636,8 @@ TargetLibraryInfoWrapperPass::TargetLibr
   initializeTargetLibraryInfoWrapperPassPass(*PassRegistry::getPassRegistry());
 }
 
+template class llvm::AnalysisBase<TargetLibraryAnalysis>;
+
 // Register the basic pass.
 INITIALIZE_PASS(TargetLibraryInfoWrapperPass, "targetlibinfo",
                 "Target Library Information", false, true)

Modified: llvm/trunk/lib/Analysis/TargetTransformInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/TargetTransformInfo.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/TargetTransformInfo.cpp (original)
+++ llvm/trunk/lib/Analysis/TargetTransformInfo.cpp Sun Feb 28 11:17:00 2016
@@ -377,6 +377,8 @@ TargetIRAnalysis::Result TargetIRAnalysi
   return TTICallback(F);
 }
 
+template class llvm::AnalysisBase<TargetIRAnalysis>;
+
 TargetIRAnalysis::Result TargetIRAnalysis::getDefaultTTI(const Function &F) {
   return Result(F.getParent()->getDataLayout());
 }

Modified: llvm/trunk/lib/IR/Dominators.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Dominators.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Dominators.cpp (original)
+++ llvm/trunk/lib/IR/Dominators.cpp Sun Feb 28 11:17:00 2016
@@ -308,6 +308,8 @@ DominatorTree DominatorTreeAnalysis::run
   return DT;
 }
 
+template class llvm::AnalysisBase<DominatorTreeAnalysis>;
+
 DominatorTreePrinterPass::DominatorTreePrinterPass(raw_ostream &OS) : OS(OS) {}
 
 PreservedAnalyses DominatorTreePrinterPass::run(Function &F,

Modified: llvm/trunk/lib/IR/PassManager.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/PassManager.cpp?rev=262188&r1=262187&r2=262188&view=diff
==============================================================================
--- llvm/trunk/lib/IR/PassManager.cpp (original)
+++ llvm/trunk/lib/IR/PassManager.cpp Sun Feb 28 11:17:00 2016
@@ -20,5 +20,6 @@ template class PassManager<Function>;
 template class AnalysisManager<Module>;
 template class AnalysisManager<Function>;
 template class InnerAnalysisManagerProxy<FunctionAnalysisManager, Module>;
+template class AnalysisBase<FunctionAnalysisManagerModuleProxy>;
 template class OuterAnalysisManagerProxy<ModuleAnalysisManager, Function>;
 }




More information about the llvm-commits mailing list