1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

Implement PassManager_New destructors.

llvm-svn: 32517
This commit is contained in:
Devang Patel 2006-12-13 00:09:23 +00:00
parent da35cdf10e
commit ae0e0cdff7
2 changed files with 29 additions and 3 deletions

View File

@ -97,6 +97,7 @@ class PassManager_New {
public:
PassManager_New();
~PassManager_New();
/// 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
@ -121,7 +122,7 @@ class FunctionPassManager_New {
public:
FunctionPassManager_New(ModuleProvider *P);
FunctionPassManager_New();
~FunctionPassManager_New() { /* TODO */ };
~FunctionPassManager_New();
/// add - Add a pass to the queue of passes to run. This passes
/// ownership of the Pass to the PassManager. When the

View File

@ -126,6 +126,15 @@ public:
Pass *findAnalysisPass(AnalysisID AID);
virtual ~PMTopLevelManager() {
for (std::vector<Pass *>::iterator I = PassManagers.begin(),
E = PassManagers.end(); I != E; ++I)
delete *I;
for (std::vector<ImmutablePass *>::iterator
I = ImmutablePasses.begin(), E = ImmutablePasses.end(); I != E; ++I)
delete *I;
PassManagers.clear();
}
@ -182,6 +191,15 @@ public:
initializeAnalysisInfo();
}
virtual ~PMDataManager() {
for (std::vector<Pass *>::iterator I = PassVector.begin(),
E = PassVector.end(); I != E; ++I)
delete *I;
PassVector.clear();
}
/// Return true IFF pass P's required analysis set does not required new
/// manager.
bool manageablePass(Pass *P);
@ -914,6 +932,10 @@ FunctionPassManager_New::FunctionPassManager_New(ModuleProvider *P) {
MP = P;
}
FunctionPassManager_New::~FunctionPassManager_New() {
delete FPM;
}
/// add - Add a pass to the queue of passes to run. This passes
/// ownership of the Pass to the PassManager. When the
/// PassManager_X is destroyed, the pass will be destroyed as well, so
@ -1187,8 +1209,7 @@ ModulePassManager_New::runOnModule(Module &M) {
//===----------------------------------------------------------------------===//
// PassManagerImpl implementation
// PassManager_New implementation
//
/// Add P into active pass manager or use new module pass manager to
/// manage it.
bool PassManagerImpl_New::addPass(Pass *P) {
@ -1232,6 +1253,10 @@ PassManager_New::PassManager_New() {
PM->setTopLevelManager(PM);
}
PassManager_New::~PassManager_New() {
delete PM;
}
/// 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
/// will be destroyed as well, so there is no need to delete the pass. This