[llvm-commits] [llvm] r40039 - in /llvm/trunk: include/llvm/Pass.h lib/VMCore/PassManager.cpp

Devang Patel dpatel at apple.com
Wed Jul 18 22:36:09 PDT 2007


Author: dpatel
Date: Thu Jul 19 00:36:09 2007
New Revision: 40039

URL: http://llvm.org/viewvc/llvm-project?rev=40039&view=rev
Log:
Set up ground work to verify preserved analysis info.


Modified:
    llvm/trunk/include/llvm/Pass.h
    llvm/trunk/lib/VMCore/PassManager.cpp

Modified: llvm/trunk/include/llvm/Pass.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Pass.h?rev=40039&r1=40038&r2=40039&view=diff

==============================================================================
--- llvm/trunk/include/llvm/Pass.h (original)
+++ llvm/trunk/include/llvm/Pass.h Thu Jul 19 00:36:09 2007
@@ -161,6 +161,10 @@
   ///
   virtual void releaseMemory() {}
 
+  /// verifyAnalysis() - This member can be implemented by a analysis pass to
+  /// check state of analysis information. 
+  virtual void verifyAnalysis() {}
+
   // dumpPassStructure - Implement the -debug-passes=PassStructure option
   virtual void dumpPassStructure(unsigned Offset = 0);
 

Modified: llvm/trunk/lib/VMCore/PassManager.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/PassManager.cpp?rev=40039&r1=40038&r2=40039&view=diff

==============================================================================
--- llvm/trunk/lib/VMCore/PassManager.cpp (original)
+++ llvm/trunk/lib/VMCore/PassManager.cpp Thu Jul 19 00:36:09 2007
@@ -598,11 +598,18 @@
 void PMDataManager::removeNotPreservedAnalysis(Pass *P) {
   AnalysisUsage AnUsage;
   P->getAnalysisUsage(AnUsage);
+  const std::vector<AnalysisID> &PreservedSet = AnUsage.getPreservedSet();
 
+  // Verify preserved analysis
+  for (std::map<AnalysisID, Pass*>::iterator I = AvailableAnalysis.begin(),
+         E = AvailableAnalysis.end(); I != E; ++I) {
+    Pass *AP = I->second;
+    AP->verifyAnalysis();
+  }
+  
   if (AnUsage.getPreservesAll())
     return;
 
-  const std::vector<AnalysisID> &PreservedSet = AnUsage.getPreservedSet();
   for (std::map<AnalysisID, Pass*>::iterator I = AvailableAnalysis.begin(),
          E = AvailableAnalysis.end(); I != E; ) {
     std::map<AnalysisID, Pass*>::iterator Info = I++;





More information about the llvm-commits mailing list