diff --git a/include/llvm/IR/PassManager.h b/include/llvm/IR/PassManager.h index dfd0f1ab313..736c05deca0 100644 --- a/include/llvm/IR/PassManager.h +++ b/include/llvm/IR/PassManager.h @@ -236,24 +236,19 @@ public: } template void addPass(PassT Pass) { - Passes.emplace_back(new PassModel(std::move(Pass))); + typedef detail::PassModel PassModelT; + Passes.emplace_back(new PassModelT(std::move(Pass))); } static StringRef name() { return "PassManager"; } private: - // Pull in the concept type and model template specialized for modules. - typedef detail::PassConcept PassConcept; - template - struct PassModel : detail::PassModel { - PassModel(PassT Pass) - : detail::PassModel(std::move(Pass)) {} - }; + typedef detail::PassConcept PassConceptT; PassManager(const PassManager &) LLVM_DELETED_FUNCTION; PassManager &operator=(const PassManager &) LLVM_DELETED_FUNCTION; - std::vector> Passes; + std::vector> Passes; }; /// \brief Convenience typedef for a pass manager over modules.