summaryrefslogtreecommitdiff
path: root/include/llvm/PassManager.h
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 /include/llvm/PassManager.h
parentb30803bc17a5be655b7c4ef356e75ae5524b0931 (diff)
downloadllvm-889739c4d188d28c167644bced9df0f3131317d7.tar.gz
llvm-889739c4d188d28c167644bced9df0f3131317d7.tar.bz2
llvm-889739c4d188d28c167644bced9df0f3131317d7.tar.xz
Introduce PassManagerAnalysisHelper.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31522 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/PassManager.h')
-rw-r--r--include/llvm/PassManager.h30
1 files changed, 30 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.