diff --git a/include/llvm/Pass.h b/include/llvm/Pass.h index 9663826ccf6..a5c1c61c4bf 100644 --- a/include/llvm/Pass.h +++ b/include/llvm/Pass.h @@ -205,6 +205,9 @@ public: #ifdef USE_OLD_PASSMANAGER virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU); +#else + // Force out-of-line virtual method. + virtual ~ModulePass(); #endif }; @@ -233,6 +236,9 @@ private: template friend class PassManagerT; friend class ModulePassManager; virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU); +#else + // Force out-of-line virtual method. + virtual ~ImmutablePass(); #endif }; diff --git a/lib/VMCore/Pass.cpp b/lib/VMCore/Pass.cpp index 8c5a2f760eb..a3c3d7aa818 100644 --- a/lib/VMCore/Pass.cpp +++ b/lib/VMCore/Pass.cpp @@ -171,6 +171,9 @@ void PMDebug::PrintAnalysisSetInfo(unsigned Depth, const char *Msg, void ModulePass::addToPassManager(ModulePassManager *PM, AnalysisUsage &AU) { PM->addPass(this, AU); } +#else +// Force out-of-line virtual method. +ModulePass::~ModulePass() { } #endif bool Pass::mustPreserveAnalysisID(const PassInfo *AnalysisID) const { @@ -215,6 +218,9 @@ void ImmutablePass::addToPassManager(ModulePassManager *PM, AnalysisUsage &AU) { PM->addPass(this, AU); } +#else +// Force out-of-line virtual method. +ImmutablePass::~ImmutablePass() { } #endif //===----------------------------------------------------------------------===//