aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2006-11-07 22:35:17 +0000
committerDevang Patel <dpatel@apple.com>2006-11-07 22:35:17 +0000
commit889739c4d188d28c167644bced9df0f3131317d7 (patch)
treeefc5f268adc540adb1e94ee7dbefbf33db1d4732
parentb30803bc17a5be655b7c4ef356e75ae5524b0931 (diff)
Introduce PassManagerAnalysisHelper.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31522 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/PassManager.h30
-rw-r--r--lib/VMCore/PassManager.cpp40
2 files changed, 70 insertions, 0 deletions
diff --git a/include/llvm/PassManager.h b/include/llvm/PassManager.h
index 7e1d903d55..5d2aa14fbf 100644
--- a/include/llvm/PassManager.h
+++ b/include/llvm/PassManager.h
@@ -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.
diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp
index c87d33305a..766f8ce8b4 100644
--- a/lib/VMCore/PassManager.cpp
+++ b/lib/VMCore/PassManager.cpp
@@ -18,6 +18,46 @@
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