From: Devang Patel Date: Fri, 8 Dec 2006 00:37:52 +0000 (+0000) Subject: Reimplement removeDeadPasses(). X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=f9a60ae75d6fdc74160085323c14e92e7d3517d3;p=oota-llvm.git Reimplement removeDeadPasses(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32344 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp index 375f0fff255..8cf4a159642 100644 --- a/lib/VMCore/PassManager.cpp +++ b/lib/VMCore/PassManager.cpp @@ -522,7 +522,21 @@ void PMDataManager::removeNotPreservedAnalysis(Pass *P) { /// Remove analysis passes that are not used any longer void PMDataManager::removeDeadPasses(Pass *P) { - // TODO : reimplement + + std::vector DeadPasses; + TPM->collectLastUses(DeadPasses, P); + + for (std::vector::iterator I = DeadPasses.begin(), + E = DeadPasses.end(); I != E; ++I) { + (*I)->releaseMemory(); + + std::map::iterator Pos = + AvailableAnalysis.find((*I)->getPassInfo()); + + // It is possible that deadPass is already removed from the AvailableAnalysis + if (Pos != AvailableAnalysis.end()) + AvailableAnalysis.erase(Pos); + } } /// Add pass P into the PassVector. Update