Fix a problem that was caused by stale analyses being in CurrentAnalyses
authorChris Lattner <sabre@nondot.org>
Sun, 29 Sep 2002 22:50:22 +0000 (22:50 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 29 Sep 2002 22:50:22 +0000 (22:50 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3981 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/PassManagerT.h

index 913a64f89eebf7dc9c801639c92f706bb21bce1a..cf8624105da987fb323e3c2707ab3a69eb09656c 100644 (file)
@@ -292,6 +292,19 @@ public:
                                       (Annotable*)M);
         (*I)->releaseMemory();
       }
+
+      // Make sure to remove dead passes from the CurrentAnalyses list...
+      for (std::map<AnalysisID, Pass*>::iterator I = CurrentAnalyses.begin();
+           I != CurrentAnalyses.end(); ) {
+        std::vector<Pass*>::iterator DPI = std::find(DeadPass.begin(),
+                                                     DeadPass.end(), I->second);
+        if (DPI != DeadPass.end()) {    // This pass is dead now... remove it
+          std::map<AnalysisID, Pass*>::iterator IDead = I++;
+          CurrentAnalyses.erase(IDead);
+        } else {
+          ++I;  // Move on to the next element...
+        }
+      }
     }
     return MadeChanges;
   }