[llvm-commits] CVS: llvm/include/llvm/PassManager.h

Devang Patel dpatel at apple.com
Tue Nov 7 14:35:45 PST 2006



Changes in directory llvm/include/llvm:

PassManager.h updated: 1.20 -> 1.21
---
Log message:

Introduce PassManagerAnalysisHelper.


---
Diffs of the changes:  (+30 -0)

 PassManager.h |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+)


Index: llvm/include/llvm/PassManager.h
diff -u llvm/include/llvm/PassManager.h:1.20 llvm/include/llvm/PassManager.h:1.21
--- llvm/include/llvm/PassManager.h:1.20	Tue Nov  7 16:23:34 2006
+++ llvm/include/llvm/PassManager.h	Tue Nov  7 16:35:17 2006
@@ -88,6 +88,36 @@
   bool doFinalization();
 };
 
+/// PassManagerAnalysisHelper helpes pass manager analysis required by
+/// the managed passes.
+class PassManagerAnalysisHelper {
+
+public:
+
+  /// Return TRUE IFF pass P's required analysis set does not required new
+  /// manager.
+  bool manageablePass(Pass *P);
+
+  /// Return TRUE iff AnalysisID AID is currently available.
+  bool analysisCurrentlyAvailable(AnalysisID AID);
+
+  /// Augment RequiredSet by adding analysis required by pass P.
+  void noteDownRequiredAnalysis(Pass *P);
+
+  /// Remove AnalysisID from the RequiredSet
+  void removeAnalysis(AnalysisID AID);
+
+  /// Remove Analysis that is not preserved by the pass
+  void removeNotPreservedAnalysis(Pass *P);
+  
+  /// Remove dead passes
+  void removeDeadPasses() { /* TODO : Implement */ }
+
+private:
+   // Required set of analysis for the passes managed by this manager
+  std::vector<AnalysisID> RequiredSet;
+};
+
 /// BasicBlockpassManager_New manages BasicBlockPass. It batches all the
 /// pass together and sequence them to process one basic block before
 /// processing next basic block.






More information about the llvm-commits mailing list