diff options
-rw-r--r-- | llvm/include/llvm/Analysis/CGSCCPassManager.h | 2 | ||||
-rw-r--r-- | llvm/include/llvm/Analysis/LoopPassManager.h | 2 | ||||
-rw-r--r-- | llvm/include/llvm/IR/PassManager.h | 4 | ||||
-rw-r--r-- | llvm/lib/Analysis/CGSCCPassManager.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Analysis/LoopPassManager.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/IR/PassManager.cpp | 4 |
6 files changed, 16 insertions, 0 deletions
diff --git a/llvm/include/llvm/Analysis/CGSCCPassManager.h b/llvm/include/llvm/Analysis/CGSCCPassManager.h index 6fc84b6a2de..4da08741a8a 100644 --- a/llvm/include/llvm/Analysis/CGSCCPassManager.h +++ b/llvm/include/llvm/Analysis/CGSCCPassManager.h @@ -26,6 +26,7 @@ namespace llvm { +extern template class PassManager<LazyCallGraph::SCC>; /// \brief The CGSCC pass manager. /// /// See the documentation for the PassManager template for details. It runs @@ -33,6 +34,7 @@ namespace llvm { /// typedef serves as a convenient way to refer to this construct. typedef PassManager<LazyCallGraph::SCC> CGSCCPassManager; +extern template class AnalysisManager<LazyCallGraph::SCC>; /// \brief The CGSCC analysis manager. /// /// See the documentation for the AnalysisManager template for detail diff --git a/llvm/include/llvm/Analysis/LoopPassManager.h b/llvm/include/llvm/Analysis/LoopPassManager.h index 8693855b313..c3a6c4e3545 100644 --- a/llvm/include/llvm/Analysis/LoopPassManager.h +++ b/llvm/include/llvm/Analysis/LoopPassManager.h @@ -21,6 +21,7 @@ namespace llvm { +extern template class PassManager<Loop>; /// \brief The loop pass manager. /// /// See the documentation for the PassManager template for details. It runs a @@ -28,6 +29,7 @@ namespace llvm { /// typedef serves as a convenient way to refer to this construct. typedef PassManager<Loop> LoopPassManager; +extern template class AnalysisManager<Loop>; /// \brief The loop analysis manager. /// /// See the documentation for the AnalysisManager template for detail diff --git a/llvm/include/llvm/IR/PassManager.h b/llvm/include/llvm/IR/PassManager.h index e51142d5e32..27ca84194a6 100644 --- a/llvm/include/llvm/IR/PassManager.h +++ b/llvm/include/llvm/IR/PassManager.h @@ -281,9 +281,11 @@ private: bool DebugLogging; }; +extern template class PassManager<Module>; /// \brief Convenience typedef for a pass manager over modules. typedef PassManager<Module> ModulePassManager; +extern template class PassManager<Function>; /// \brief Convenience typedef for a pass manager over functions. typedef PassManager<Function> FunctionPassManager; @@ -633,9 +635,11 @@ private: bool DebugLogging; }; +extern template class AnalysisManager<Module>; /// \brief Convenience typedef for the Module analysis manager. typedef AnalysisManager<Module> ModuleAnalysisManager; +extern template class AnalysisManager<Function>; /// \brief Convenience typedef for the Function analysis manager. typedef AnalysisManager<Function> FunctionAnalysisManager; diff --git a/llvm/lib/Analysis/CGSCCPassManager.cpp b/llvm/lib/Analysis/CGSCCPassManager.cpp index d5058d6aab1..6326b34d68a 100644 --- a/llvm/lib/Analysis/CGSCCPassManager.cpp +++ b/llvm/lib/Analysis/CGSCCPassManager.cpp @@ -15,6 +15,8 @@ using namespace llvm; // Explicit instantiations for the core proxy templates. namespace llvm { +template class PassManager<LazyCallGraph::SCC>; +template class AnalysisManager<LazyCallGraph::SCC>; template class InnerAnalysisManagerProxy<CGSCCAnalysisManager, Module>; template class OuterAnalysisManagerProxy<ModuleAnalysisManager, LazyCallGraph::SCC>; diff --git a/llvm/lib/Analysis/LoopPassManager.cpp b/llvm/lib/Analysis/LoopPassManager.cpp index fd77b786262..76210fa89c0 100644 --- a/llvm/lib/Analysis/LoopPassManager.cpp +++ b/llvm/lib/Analysis/LoopPassManager.cpp @@ -13,6 +13,8 @@ using namespace llvm; // Explicit instantiations for core typedef'ed templates. namespace llvm { +template class PassManager<Loop>; +template class AnalysisManager<Loop>; template class InnerAnalysisManagerProxy<LoopAnalysisManager, Function>; template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop>; } diff --git a/llvm/lib/IR/PassManager.cpp b/llvm/lib/IR/PassManager.cpp index 18e7a73f03e..9d5b4cb0516 100644 --- a/llvm/lib/IR/PassManager.cpp +++ b/llvm/lib/IR/PassManager.cpp @@ -15,6 +15,10 @@ using namespace llvm; // Explicit template instantiations for core template typedefs. namespace llvm { +template class PassManager<Module>; +template class PassManager<Function>; +template class AnalysisManager<Module>; +template class AnalysisManager<Function>; template class InnerAnalysisManagerProxy<FunctionAnalysisManager, Module>; template class OuterAnalysisManagerProxy<ModuleAnalysisManager, Function>; } |