diff --git a/include/llvm/IR/PassManager.h b/include/llvm/IR/PassManager.h index 39dbc98179d..3ec4f6c71fb 100644 --- a/include/llvm/IR/PassManager.h +++ b/include/llvm/IR/PassManager.h @@ -169,7 +169,7 @@ template struct PassConcept { /// \brief SFINAE metafunction for computing whether \c PassT has a run method /// accepting an \c AnalysisManagerT. -template +template class PassRunAcceptsAnalysisManager { typedef char SmallType; struct BigType { char a, b; }; @@ -189,15 +189,15 @@ public: /// 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 AnalysisManagerT*, we pass it along. -template ::Value> + IRUnitT, AnalysisManagerT, PassT>::Value> struct PassModel; /// \brief Specialization of \c PassModel for passes that accept an analyis /// manager. -template -struct PassModel +struct PassModel : PassConcept { PassModel(PassT Pass) : Pass(llvm_move(Pass)) {} virtual PassModel *clone() { return new PassModel(Pass); } @@ -209,8 +209,8 @@ struct PassModel -struct PassModel +struct PassModel : PassConcept { PassModel(PassT Pass) : Pass(llvm_move(Pass)) {} virtual PassModel *clone() { return new PassModel(Pass); } @@ -370,9 +370,9 @@ private: typedef detail::PassConcept ModulePassConcept; template struct ModulePassModel - : detail::PassModel { + : detail::PassModel { ModulePassModel(PassT Pass) - : detail::PassModel(Pass) {} + : detail::PassModel(Pass) {} }; std::vector > Passes; @@ -396,9 +396,9 @@ private: FunctionPassConcept; template struct FunctionPassModel - : detail::PassModel { + : detail::PassModel { FunctionPassModel(PassT Pass) - : detail::PassModel(Pass) {} + : detail::PassModel(Pass) {} }; std::vector > Passes;