summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2006-12-12 23:07:44 +0000
committerDevang Patel <dpatel@apple.com>2006-12-12 23:07:44 +0000
commitbe6bd55e96203f3d96a757083a068eb288c88a8e (patch)
tree50910962f137145314f45109a378e9e087faf91b
parentad6b7fe7260a54dace40d1be6cfce8578c745d71 (diff)
downloadbcm5719-llvm-be6bd55e96203f3d96a757083a068eb288c88a8e.tar.gz
bcm5719-llvm-be6bd55e96203f3d96a757083a068eb288c88a8e.zip
removeNotPreservedAnalysis().
Do not remove ImmutablePass from the list. llvm-svn: 32507
-rw-r--r--llvm/lib/VMCore/PassManager.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/VMCore/PassManager.cpp b/llvm/lib/VMCore/PassManager.cpp
index 867d9ae5fa7..1f1890c31f6 100644
--- a/llvm/lib/VMCore/PassManager.cpp
+++ b/llvm/lib/VMCore/PassManager.cpp
@@ -580,13 +580,17 @@ void PMDataManager::removeNotPreservedAnalysis(Pass *P) {
const std::vector<AnalysisID> &PreservedSet = AnUsage.getPreservedSet();
for (std::map<AnalysisID, Pass*>::iterator I = AvailableAnalysis.begin(),
- E = AvailableAnalysis.end(); I != E; ++I ) {
+ E = AvailableAnalysis.end(); I != E; ) {
if (std::find(PreservedSet.begin(), PreservedSet.end(), I->first) ==
PreservedSet.end()) {
// Remove this analysis
- std::map<AnalysisID, Pass*>::iterator J = I++;
- AvailableAnalysis.erase(J);
- }
+ if (!dynamic_cast<ImmutablePass*>(I->second)) {
+ std::map<AnalysisID, Pass*>::iterator J = I++;
+ AvailableAnalysis.erase(J);
+ } else
+ ++I;
+ } else
+ ++I;
}
}
OpenPOWER on IntegriCloud