Introduce PassManagerAnalysisHelper.
authorDevang Patel <dpatel@apple.com>
Tue, 7 Nov 2006 22:35:17 +0000 (22:35 +0000)
committerDevang Patel <dpatel@apple.com>
Tue, 7 Nov 2006 22:35:17 +0000 (22:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31522 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/PassManager.h
lib/VMCore/PassManager.cpp

index 7e1d903d553d1555feb5dd97b6c4fe5ce1c63538..5d2aa14fbfe9ce42feeb6e1c38939147a79c62dc 100644 (file)
@@ -88,6 +88,36 @@ public:
   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.
index c87d33305a76d22ee534dee555d4fcb7c7a55870..766f8ce8b461c757a177290112c2e1f705705a5b 100644 (file)
 
 using namespace llvm;
 
+// PassManagerAnalysisHelper implementation
+
+/// Return TRUE IFF pass P's required analysis set does not required new
+/// manager.
+bool PassManagerAnalysisHelper::manageablePass(Pass *P) {
+
+  AnalysisUsage AnUsage;
+  P->getAnalysisUsage(AnUsage);
+
+  // If this pass is not preserving information that is required by the other passes
+  // managed by this manager then use new manager
+  // TODO
+  return true;
+}
+
+/// Return TRUE iff AnalysisID AID is currently available.
+bool PassManagerAnalysisHelper::analysisCurrentlyAvailable(AnalysisID AID) {
+
+  // TODO
+  return false;
+}
+
+/// Augment RequiredSet by adding analysis required by pass P.
+void PassManagerAnalysisHelper::noteDownRequiredAnalysis(Pass *P) {
+
+  // TODO
+}
+
+/// Remove AnalysisID from the RequiredSet
+void PassManagerAnalysisHelper::removeAnalysis(AnalysisID AID) {
+
+  // TODO
+}
+
+/// Remove Analyss not preserved by Pass P
+void PassManagerAnalysisHelper::removeNotPreservedAnalysis(Pass *P) {
+
+  // TODO
+}
+
 /// BasicBlockPassManager implementation
 
 /// Add pass P into PassVector and return TRUE. If this pass is not