continue to use old pass manager at the moment. To use new manager
remove #define USE_OLD_PASSMANAGER 1 from Pass.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32525
91177308-0d34-0410-b5e6-
96231b3b80d8
#include <typeinfo>
#include <cassert>
#include <typeinfo>
#include <cassert>
+#define USE_OLD_PASSMANAGER 1
+
namespace llvm {
class Value;
namespace llvm {
class Value;
virtual bool runPass(Module &M) { return runOnModule(M); }
virtual bool runPass(BasicBlock&) { return false; }
virtual bool runPass(Module &M) { return runOnModule(M); }
virtual bool runPass(BasicBlock&) { return false; }
+#ifdef USE_OLD_PASSMANAGER
virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU);
virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU);
///
virtual bool runOnModule(Module &M) { return false; }
///
virtual bool runOnModule(Module &M) { return false; }
+#ifdef USE_OLD_PASSMANAGER
private:
template<typename Trait> friend class PassManagerT;
friend class ModulePassManager;
virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU);
private:
template<typename Trait> friend class PassManagerT;
friend class ModulePassManager;
virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU);
};
//===----------------------------------------------------------------------===//
};
//===----------------------------------------------------------------------===//
///
bool run(Function &F);
///
bool run(Function &F);
+#ifdef USE_OLD_PASSMANAGER
protected:
template<typename Trait> friend class PassManagerT;
friend class ModulePassManager;
protected:
template<typename Trait> friend class PassManagerT;
friend class ModulePassManager;
friend class BasicBlockPassManager;
virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU);
virtual void addToPassManager(FunctionPassManagerT *PM, AnalysisUsage &AU);
friend class BasicBlockPassManager;
virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU);
virtual void addToPassManager(FunctionPassManagerT *PM, AnalysisUsage &AU);
virtual bool runPass(Module &M) { return false; }
virtual bool runPass(BasicBlock &BB);
virtual bool runPass(Module &M) { return false; }
virtual bool runPass(BasicBlock &BB);
+#ifdef USE_OLD_PASSMANAGER
private:
template<typename Trait> friend class PassManagerT;
friend class FunctionPassManagerT;
private:
template<typename Trait> friend class PassManagerT;
friend class FunctionPassManagerT;
}
virtual void addToPassManager(FunctionPassManagerT *PM, AnalysisUsage &AU);
virtual void addToPassManager(BasicBlockPassManager *PM,AnalysisUsage &AU);
}
virtual void addToPassManager(FunctionPassManagerT *PM, AnalysisUsage &AU);
virtual void addToPassManager(BasicBlockPassManager *PM,AnalysisUsage &AU);
};
/// If the user specifies the -time-passes argument on an LLVM tool command line
};
/// If the user specifies the -time-passes argument on an LLVM tool command line
///
template<typename AnalysisType>
AnalysisType *Pass::getAnalysisToUpdate() const {
///
template<typename AnalysisType>
AnalysisType *Pass::getAnalysisToUpdate() const {
+#ifdef USE_OLD_PASSMANAGER
assert(Resolver && "Pass not resident in a PassManager object!");
assert(Resolver && "Pass not resident in a PassManager object!");
+#else
+ assert(Resolver_New && "Pass not resident in a PassManager object!");
+#endif
const PassInfo *PI = getClassPassInfo<AnalysisType>();
if (PI == 0) return 0;
const PassInfo *PI = getClassPassInfo<AnalysisType>();
if (PI == 0) return 0;
+#ifdef USE_OLD_PASSMANAGER
return dynamic_cast<AnalysisType*>(Resolver->getAnalysisToUpdate(PI));
return dynamic_cast<AnalysisType*>(Resolver->getAnalysisToUpdate(PI));
+#else
+ return dynamic_cast<AnalysisType*>
+ (Resolver_New->getAnalysisToUpdate(PI, true));
+#endif
}
/// getAnalysis<AnalysisType>() - This function is used by subclasses to get
}
/// getAnalysis<AnalysisType>() - This function is used by subclasses to get
///
template<typename AnalysisType>
AnalysisType &Pass::getAnalysis() const {
///
template<typename AnalysisType>
AnalysisType &Pass::getAnalysis() const {
+#ifdef USE_OLD_PASSMANAGER
assert(Resolver && "Pass has not been inserted into a PassManager object!");
assert(Resolver && "Pass has not been inserted into a PassManager object!");
+#else
+ assert(Resolver_New && "Pass has not been inserted into a PassManager object!");
+#endif
const PassInfo *PI = getClassPassInfo<AnalysisType>();
return getAnalysisID<AnalysisType>(PI);
}
template<typename AnalysisType>
AnalysisType &Pass::getAnalysisID(const PassInfo *PI) const {
const PassInfo *PI = getClassPassInfo<AnalysisType>();
return getAnalysisID<AnalysisType>(PI);
}
template<typename AnalysisType>
AnalysisType &Pass::getAnalysisID(const PassInfo *PI) const {
- assert(Resolver && "Pass has not been inserted into a PassManager object!");
assert(PI && "getAnalysis for unregistered pass!");
assert(PI && "getAnalysis for unregistered pass!");
+#ifdef USE_OLD_PASSMANAGER
+ assert(Resolver && "Pass has not been inserted into a PassManager object!");
// PI *must* appear in AnalysisImpls. Because the number of passes used
// should be a small number, we just do a linear search over a (dense)
// PI *must* appear in AnalysisImpls. Because the number of passes used
// should be a small number, we just do a linear search over a (dense)
+#else
+ assert(Resolver_New && "Pass has not been inserted into a PassManager object!");
+ // PI *must* appear in AnalysisImpls. Because the number of passes used
+ // should be a small number, we just do a linear search over a (dense)
+ // vector.
+ Pass *ResultPass = Resolver_New->findImplPass(PI);
+ assert (ResultPass &&
+ "getAnalysis*() called on an analysis that was not "
+ "'required' by pass!");
+
+#endif
// Because the AnalysisType may not be a subclass of pass (for
// AnalysisGroups), we must use dynamic_cast here to potentially adjust the
// return pointer (because the class may multiply inherit, once from pass,
// Because the AnalysisType may not be a subclass of pass (for
// AnalysisGroups), we must use dynamic_cast here to potentially adjust the
// return pointer (because the class may multiply inherit, once from pass,
class ModulePass;
class Module;
class ModuleProvider;
class ModulePass;
class Module;
class ModuleProvider;
+
+#ifdef USE_OLD_PASSMANAGER
+
class ModulePassManager;
class FunctionPassManagerT;
class BasicBlockPassManager;
class ModulePassManager;
class FunctionPassManagerT;
class BasicBlockPassManager;
bool doFinalization();
};
bool doFinalization();
};
-class ModulePassManager_New;
+#else
+
+class ModulePassManager;
class PassManagerImpl_New;
class FunctionPassManagerImpl_New;
class PassManagerImpl_New;
class FunctionPassManagerImpl_New;
-/// PassManager_New manages ModulePassManagers
-class PassManager_New {
+/// PassManager manages ModulePassManagers
+class PassManager {
- PassManager_New();
- ~PassManager_New();
+ PassManager();
+ ~PassManager();
/// add - Add a pass to the queue of passes to run. This passes ownership of
/// the Pass to the PassManager. When the PassManager is destroyed, the pass
/// add - Add a pass to the queue of passes to run. This passes ownership of
/// the Pass to the PassManager. When the PassManager is destroyed, the pass
- /// PassManagerImpl_New is the actual class. PassManager_New is just the
+ /// PassManagerImpl_New is the actual class. PassManager is just the
/// wraper to publish simple pass manager interface
PassManagerImpl_New *PM;
};
/// wraper to publish simple pass manager interface
PassManagerImpl_New *PM;
};
-/// FunctionPassManager_New manages FunctionPasses and BasicBlockPassManagers.
-class FunctionPassManager_New {
+/// FunctionPassManager manages FunctionPasses and BasicBlockPassManagers.
+class FunctionPassManager {
- FunctionPassManager_New(ModuleProvider *P);
- FunctionPassManager_New();
- ~FunctionPassManager_New();
+ FunctionPassManager(ModuleProvider *P);
+ FunctionPassManager();
+ ~FunctionPassManager();
/// add - Add a pass to the queue of passes to run. This passes
/// ownership of the Pass to the PassManager. When the
/// add - Add a pass to the queue of passes to run. This passes
/// ownership of the Pass to the PassManager. When the
//===----------------------------------------------------------------------===//
#include "llvm/PassManager.h"
//===----------------------------------------------------------------------===//
#include "llvm/PassManager.h"
+#ifdef USE_OLD_PASSMANAGER
#include "PassManagerT.h" // PassManagerT implementation
#include "PassManagerT.h" // PassManagerT implementation
#include "llvm/Module.h"
#include "llvm/ModuleProvider.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Module.h"
#include "llvm/ModuleProvider.h"
#include "llvm/ADT/STLExtras.h"
+#ifdef USE_OLD_PASSMANAGER
//===----------------------------------------------------------------------===//
// PassManager implementation - The PassManager class is a simple Pimpl class
// that wraps the PassManagerT template.
//===----------------------------------------------------------------------===//
// PassManager implementation - The PassManager class is a simple Pimpl class
// that wraps the PassManagerT template.
//===----------------------------------------------------------------------===//
// Pass Implementation
//
//===----------------------------------------------------------------------===//
// Pass Implementation
//
+#ifdef USE_OLD_PASSMANAGER
void ModulePass::addToPassManager(ModulePassManager *PM, AnalysisUsage &AU) {
PM->addPass(this, AU);
}
void ModulePass::addToPassManager(ModulePassManager *PM, AnalysisUsage &AU) {
PM->addPass(this, AU);
}
bool Pass::mustPreserveAnalysisID(const PassInfo *AnalysisID) const {
bool Pass::mustPreserveAnalysisID(const PassInfo *AnalysisID) const {
+#ifdef USE_OLD_PASSMANAGER
return Resolver->getAnalysisToUpdate(AnalysisID) != 0;
return Resolver->getAnalysisToUpdate(AnalysisID) != 0;
+#else
+ return Resolver_New->getAnalysisToUpdate(AnalysisID, true) != 0;
+#endif
}
// dumpPassStructure - Implement the -debug-passes=Structure option
}
// dumpPassStructure - Implement the -debug-passes=Structure option
//===----------------------------------------------------------------------===//
// ImmutablePass Implementation
//
//===----------------------------------------------------------------------===//
// ImmutablePass Implementation
//
+#ifdef USE_OLD_PASSMANAGER
void ImmutablePass::addToPassManager(ModulePassManager *PM,
AnalysisUsage &AU) {
PM->addPass(this, AU);
}
void ImmutablePass::addToPassManager(ModulePassManager *PM,
AnalysisUsage &AU) {
PM->addPass(this, AU);
}
//===----------------------------------------------------------------------===//
// FunctionPass Implementation
//===----------------------------------------------------------------------===//
// FunctionPass Implementation
return Changed | doFinalization(*F.getParent());
}
return Changed | doFinalization(*F.getParent());
}
+#ifdef USE_OLD_PASSMANAGER
void FunctionPass::addToPassManager(ModulePassManager *PM,
AnalysisUsage &AU) {
PM->addPass(this, AU);
void FunctionPass::addToPassManager(ModulePassManager *PM,
AnalysisUsage &AU) {
PM->addPass(this, AU);
AnalysisUsage &AU) {
PM->addPass(this, AU);
}
AnalysisUsage &AU) {
PM->addPass(this, AU);
}
//===----------------------------------------------------------------------===//
// BasicBlockPass Implementation
//===----------------------------------------------------------------------===//
// BasicBlockPass Implementation
+#ifdef USE_OLD_PASSMANAGER
void BasicBlockPass::addToPassManager(FunctionPassManagerT *PM,
AnalysisUsage &AU) {
PM->addPass(this, AU);
void BasicBlockPass::addToPassManager(FunctionPassManagerT *PM,
AnalysisUsage &AU) {
PM->addPass(this, AU);
AnalysisUsage &AU) {
PM->addPass(this, AU);
}
AnalysisUsage &AU) {
PM->addPass(this, AU);
}
//===----------------------------------------------------------------------===//
// Pass Registration mechanism
//===----------------------------------------------------------------------===//
// Pass Registration mechanism
// ModulePassManagers.
//===----------------------------------------------------------------------===//
// ModulePassManagers.
//===----------------------------------------------------------------------===//
+#ifndef USE_OLD_PASSMANAGER
namespace llvm {
class PMDataManager;
namespace llvm {
class PMDataManager;
/// then return NULL.
Pass *findAnalysisPass(AnalysisID AID);
/// then return NULL.
Pass *findAnalysisPass(AnalysisID AID);
+ inline void clearManagers() {
+ PassManagers.clear();
+ }
+
virtual ~PMTopLevelManager() {
for (std::vector<Pass *>::iterator I = PassManagers.begin(),
virtual ~PMTopLevelManager() {
for (std::vector<Pass *>::iterator I = PassManagers.begin(),
};
//===----------------------------------------------------------------------===//
};
//===----------------------------------------------------------------------===//
-// BasicBlockPassManager_New
+// BasicBlockPassManager
-/// BasicBlockPassManager_New manages BasicBlockPass. It batches all the
+/// BasicBlockPassManager manages BasicBlockPass. It batches all the
/// pass together and sequence them to process one basic block before
/// processing next basic block.
/// pass together and sequence them to process one basic block before
/// processing next basic block.
-class BasicBlockPassManager_New : public PMDataManager,
+class BasicBlockPassManager : public PMDataManager,
public FunctionPass {
public:
public FunctionPass {
public:
- BasicBlockPassManager_New(int D) : PMDataManager(D) { }
+ BasicBlockPassManager(int D) : PMDataManager(D) { }
/// Add a pass into a passmanager queue.
bool addPass(Pass *p);
/// Add a pass into a passmanager queue.
bool addPass(Pass *p);
private:
// Active Pass Managers
private:
// Active Pass Managers
- BasicBlockPassManager_New *activeBBPassManager;
+ BasicBlockPassManager *activeBBPassManager;
};
//===----------------------------------------------------------------------===//
};
//===----------------------------------------------------------------------===//
-// ModulePassManager_New
-/// ModulePassManager_New manages ModulePasses and function pass managers.
+/// ModulePassManager manages ModulePasses and function pass managers.
/// It batches all Module passes passes and function pass managers together and
/// sequence them to process one module.
/// It batches all Module passes passes and function pass managers together and
/// sequence them to process one module.
-class ModulePassManager_New : public Pass,
+class ModulePassManager : public Pass,
public PMDataManager {
public:
public PMDataManager {
public:
- ModulePassManager_New(int D) : PMDataManager(D) {
+ ModulePassManager(int D) : PMDataManager(D) {
activeFunctionPassManager = NULL;
}
activeFunctionPassManager = NULL;
}
bool addPass(Pass *p);
// Active Pass Manager
bool addPass(Pass *p);
// Active Pass Manager
- ModulePassManager_New *activeManager;
+ ModulePassManager *activeManager;
};
} // End of llvm namespace
};
} // End of llvm namespace
}
//===----------------------------------------------------------------------===//
}
//===----------------------------------------------------------------------===//
-// BasicBlockPassManager_New implementation
+// BasicBlockPassManager implementation
/// Add pass P into PassVector and return true. If this pass is not
/// manageable by this manager then return false.
bool
/// Add pass P into PassVector and return true. If this pass is not
/// manageable by this manager then return false.
bool
-BasicBlockPassManager_New::addPass(Pass *P) {
+BasicBlockPassManager::addPass(Pass *P) {
BasicBlockPass *BP = dynamic_cast<BasicBlockPass*>(P);
if (!BP)
BasicBlockPass *BP = dynamic_cast<BasicBlockPass*>(P);
if (!BP)
/// runOnBasicBlock method. Keep track of whether any of the passes modifies
/// the function, and if so, return true.
bool
/// runOnBasicBlock method. Keep track of whether any of the passes modifies
/// the function, and if so, return true.
bool
-BasicBlockPassManager_New::runOnFunction(Function &F) {
+BasicBlockPassManager::runOnFunction(Function &F) {
if (F.isExternal())
return false;
if (F.isExternal())
return false;
}
// Implement doInitialization and doFinalization
}
// Implement doInitialization and doFinalization
-inline bool BasicBlockPassManager_New::doInitialization(Module &M) {
+inline bool BasicBlockPassManager::doInitialization(Module &M) {
bool Changed = false;
for (std::vector<Pass *>::iterator itr = passVectorBegin(),
bool Changed = false;
for (std::vector<Pass *>::iterator itr = passVectorBegin(),
-inline bool BasicBlockPassManager_New::doFinalization(Module &M) {
+inline bool BasicBlockPassManager::doFinalization(Module &M) {
bool Changed = false;
for (std::vector<Pass *>::iterator itr = passVectorBegin(),
bool Changed = false;
for (std::vector<Pass *>::iterator itr = passVectorBegin(),
-inline bool BasicBlockPassManager_New::doInitialization(Function &F) {
+inline bool BasicBlockPassManager::doInitialization(Function &F) {
bool Changed = false;
for (std::vector<Pass *>::iterator itr = passVectorBegin(),
bool Changed = false;
for (std::vector<Pass *>::iterator itr = passVectorBegin(),
-inline bool BasicBlockPassManager_New::doFinalization(Function &F) {
+inline bool BasicBlockPassManager::doFinalization(Function &F) {
bool Changed = false;
for (std::vector<Pass *>::iterator itr = passVectorBegin(),
bool Changed = false;
for (std::vector<Pass *>::iterator itr = passVectorBegin(),
//===----------------------------------------------------------------------===//
//===----------------------------------------------------------------------===//
-// FunctionPassManager_New implementation
+// FunctionPassManager implementation
/// Create new Function pass manager
/// Create new Function pass manager
-FunctionPassManager_New::FunctionPassManager_New(ModuleProvider *P) {
+FunctionPassManager::FunctionPassManager(ModuleProvider *P) {
FPM = new FunctionPassManagerImpl_New(0);
// FPM is the top level manager.
FPM->setTopLevelManager(FPM);
FPM = new FunctionPassManagerImpl_New(0);
// FPM is the top level manager.
FPM->setTopLevelManager(FPM);
-FunctionPassManager_New::~FunctionPassManager_New() {
+FunctionPassManager::~FunctionPassManager() {
+ // Note : FPM maintains one entry in PassManagers vector.
+ // This one entry is FPM itself. This is not ideal. One
+ // alternative is have one additional layer between
+ // FunctionPassManager and FunctionPassManagerImpl.
+ // Meanwhile, to avoid going into infinte loop, first
+ // remove FPM from its PassMangers vector.
+ FPM->clearManagers();
/// PassManager_X is destroyed, the pass will be destroyed as well, so
/// there is no need to delete the pass. (TODO delete passes.)
/// This implies that all passes MUST be allocated with 'new'.
/// PassManager_X is destroyed, the pass will be destroyed as well, so
/// there is no need to delete the pass. (TODO delete passes.)
/// This implies that all passes MUST be allocated with 'new'.
-void FunctionPassManager_New::add(Pass *P) {
+void FunctionPassManager::add(Pass *P) {
/// track of whether any of the passes modifies the function, and if
/// so, return true.
///
/// track of whether any of the passes modifies the function, and if
/// so, return true.
///
-bool FunctionPassManager_New::run(Function &F) {
+bool FunctionPassManager::run(Function &F) {
std::string errstr;
if (MP->materializeFunction(&F, &errstr)) {
cerr << "Error reading bytecode file: " << errstr << "\n";
std::string errstr;
if (MP->materializeFunction(&F, &errstr)) {
cerr << "Error reading bytecode file: " << errstr << "\n";
/// doInitialization - Run all of the initializers for the function passes.
///
/// doInitialization - Run all of the initializers for the function passes.
///
-bool FunctionPassManager_New::doInitialization() {
+bool FunctionPassManager::doInitialization() {
return FPM->doInitialization(*MP->getModule());
}
/// doFinalization - Run all of the initializers for the function passes.
///
return FPM->doInitialization(*MP->getModule());
}
/// doFinalization - Run all of the initializers for the function passes.
///
-bool FunctionPassManager_New::doFinalization() {
+bool FunctionPassManager::doFinalization() {
return FPM->doFinalization(*MP->getModule());
}
return FPM->doFinalization(*MP->getModule());
}
bool
FunctionPassManagerImpl_New::addPass(Pass *P) {
bool
FunctionPassManagerImpl_New::addPass(Pass *P) {
- // If P is a BasicBlockPass then use BasicBlockPassManager_New.
+ // If P is a BasicBlockPass then use BasicBlockPassManager.
if (BasicBlockPass *BP = dynamic_cast<BasicBlockPass*>(P)) {
if (!activeBBPassManager || !activeBBPassManager->addPass(BP)) {
if (BasicBlockPass *BP = dynamic_cast<BasicBlockPass*>(P)) {
if (!activeBBPassManager || !activeBBPassManager->addPass(BP)) {
// Create and add new manager
activeBBPassManager =
// Create and add new manager
activeBBPassManager =
- new BasicBlockPassManager_New(getDepth() + 1);
+ new BasicBlockPassManager(getDepth() + 1);
// Inherit top level manager
activeBBPassManager->setTopLevelManager(this->getTopLevelManager());
// Inherit top level manager
activeBBPassManager->setTopLevelManager(this->getTopLevelManager());
bool Changed = false;
for (std::vector<Pass *>::iterator I = passManagersBegin(),
E = passManagersEnd(); I != E; ++I) {
bool Changed = false;
for (std::vector<Pass *>::iterator I = passManagersBegin(),
E = passManagersEnd(); I != E; ++I) {
- FunctionPass *FP = dynamic_cast<FunctionPass *>(*I);
+ FunctionPassManagerImpl_New *FP =
+ dynamic_cast<FunctionPassManagerImpl_New *>(*I);
Changed |= FP->runOnFunction(F);
}
return Changed;
Changed |= FP->runOnFunction(F);
}
return Changed;
/// then use FunctionPassManagerImpl_New to manage it. Return false if P
/// is not manageable by this manager.
bool
/// then use FunctionPassManagerImpl_New to manage it. Return false if P
/// is not manageable by this manager.
bool
-ModulePassManager_New::addPass(Pass *P) {
+ModulePassManager::addPass(Pass *P) {
// If P is FunctionPass then use function pass maanager.
if (FunctionPass *FP = dynamic_cast<FunctionPass*>(P)) {
// If P is FunctionPass then use function pass maanager.
if (FunctionPass *FP = dynamic_cast<FunctionPass*>(P)) {
/// runOnModule method. Keep track of whether any of the passes modifies
/// the module, and if so, return true.
bool
/// runOnModule method. Keep track of whether any of the passes modifies
/// the module, and if so, return true.
bool
-ModulePassManager_New::runOnModule(Module &M) {
+ModulePassManager::runOnModule(Module &M) {
bool Changed = false;
initializeAnalysisInfo();
bool Changed = false;
initializeAnalysisInfo();
bool PassManagerImpl_New::addPass(Pass *P) {
if (!activeManager || !activeManager->addPass(P)) {
bool PassManagerImpl_New::addPass(Pass *P) {
if (!activeManager || !activeManager->addPass(P)) {
- activeManager = new ModulePassManager_New(getDepth() + 1);
+ activeManager = new ModulePassManager(getDepth() + 1);
// Inherit top level manager
activeManager->setTopLevelManager(this->getTopLevelManager());
// Inherit top level manager
activeManager->setTopLevelManager(this->getTopLevelManager());
bool Changed = false;
for (std::vector<Pass *>::iterator I = passManagersBegin(),
E = passManagersEnd(); I != E; ++I) {
bool Changed = false;
for (std::vector<Pass *>::iterator I = passManagersBegin(),
E = passManagersEnd(); I != E; ++I) {
- ModulePassManager_New *MP = dynamic_cast<ModulePassManager_New *>(*I);
+ ModulePassManager *MP = dynamic_cast<ModulePassManager *>(*I);
Changed |= MP->runOnModule(M);
}
return Changed;
Changed |= MP->runOnModule(M);
}
return Changed;
// PassManager implementation
/// Create new pass manager
// PassManager implementation
/// Create new pass manager
-PassManager_New::PassManager_New() {
+PassManager::PassManager() {
PM = new PassManagerImpl_New(0);
// PM is the top level manager
PM->setTopLevelManager(PM);
}
PM = new PassManagerImpl_New(0);
// PM is the top level manager
PM->setTopLevelManager(PM);
}
-PassManager_New::~PassManager_New() {
+PassManager::~PassManager() {
/// will be destroyed as well, so there is no need to delete the pass. This
/// implies that all passes MUST be allocated with 'new'.
void
/// will be destroyed as well, so there is no need to delete the pass. This
/// implies that all passes MUST be allocated with 'new'.
void
-PassManager_New::add(Pass *P) {
+PassManager::add(Pass *P) {
PM->add(P);
}
/// run - Execute all of the passes scheduled for execution. Keep track of
/// whether any of the passes modifies the module, and if so, return true.
bool
PM->add(P);
}
/// run - Execute all of the passes scheduled for execution. Keep track of
/// whether any of the passes modifies the module, and if so, return true.
bool
-PassManager_New::run(Module &M) {
+PassManager::run(Module &M) {