[llvm] r262128 - [PM] Provide explicit instantiation declarations and definitions for the

Chandler Carruth via llvm-commits llvm-commits at lists.llvm.org
Sat Feb 27 02:45:35 PST 2016


Author: chandlerc
Date: Sat Feb 27 04:45:35 2016
New Revision: 262128

URL: http://llvm.org/viewvc/llvm-project?rev=262128&view=rev
Log:
[PM] Provide explicit instantiation declarations and definitions for the
PassManager and AnalysisManager template specializations as well.

Modified:
    llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h
    llvm/trunk/include/llvm/Analysis/LoopPassManager.h
    llvm/trunk/include/llvm/IR/PassManager.h
    llvm/trunk/lib/Analysis/CGSCCPassManager.cpp
    llvm/trunk/lib/Analysis/LoopPassManager.cpp
    llvm/trunk/lib/IR/PassManager.cpp

Modified: llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h?rev=262128&r1=262127&r2=262128&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h (original)
+++ llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h Sat Feb 27 04:45:35 2016
@@ -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

Modified: llvm/trunk/include/llvm/Analysis/LoopPassManager.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopPassManager.h?rev=262128&r1=262127&r2=262128&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/LoopPassManager.h (original)
+++ llvm/trunk/include/llvm/Analysis/LoopPassManager.h Sat Feb 27 04:45:35 2016
@@ -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

Modified: llvm/trunk/include/llvm/IR/PassManager.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/PassManager.h?rev=262128&r1=262127&r2=262128&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/PassManager.h (original)
+++ llvm/trunk/include/llvm/IR/PassManager.h Sat Feb 27 04:45:35 2016
@@ -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;
 

Modified: llvm/trunk/lib/Analysis/CGSCCPassManager.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/CGSCCPassManager.cpp?rev=262128&r1=262127&r2=262128&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/CGSCCPassManager.cpp (original)
+++ llvm/trunk/lib/Analysis/CGSCCPassManager.cpp Sat Feb 27 04:45:35 2016
@@ -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>;

Modified: llvm/trunk/lib/Analysis/LoopPassManager.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopPassManager.cpp?rev=262128&r1=262127&r2=262128&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/LoopPassManager.cpp (original)
+++ llvm/trunk/lib/Analysis/LoopPassManager.cpp Sat Feb 27 04:45:35 2016
@@ -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>;
 }

Modified: llvm/trunk/lib/IR/PassManager.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/PassManager.cpp?rev=262128&r1=262127&r2=262128&view=diff
==============================================================================
--- llvm/trunk/lib/IR/PassManager.cpp (original)
+++ llvm/trunk/lib/IR/PassManager.cpp Sat Feb 27 04:45:35 2016
@@ -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>;
 }




More information about the llvm-commits mailing list